Skip to content
Conduit

skill

denoise-video

本地 Agent Skill,给成片降噪且不重新编码画面 | Local agent skill that denoises finished videos without re-encoding the picture

manwithshit/denoise-videocommunitylistedunreviewed

Set up

Skills are installed by placing their folder where your agent loads skills.

The download comes from github.com/manwithshit/denoise-video itself, not from our server, so what you get is exactly what its author published.

Install instructions come from the README

Skills do not use an MCP config. Follow the steps in the README below.

README

synced Oct 23, 2026

Overview

denoise-video is a safety-first CLI tool and Agent Skill for removing background noise from finished videos (MP4, MOV, MKV) without sacrificing picture quality.

Traditional video editing tools or online converters often re-encode the entire video stream during noise reduction—causing quality degradation, color space drift, and slow processing times. denoise-video separates video and audio tracks, enhances the speech audio using neural models strictly on your local machine, and remuxes the original video stream (c:v copy) untouched.


Key Highlights

  • ⚡ Zero Picture Re-encoding: Copies the original video stream (c:v copy). Video resolution, bitrate, color space, and frame timing remain 100% bit-exact.
  • 🔒 100% Local & Private: No cloud uploads, external API dependencies, or telemetry. Media files never leave your system.
  • 🧠 Neural Speech Enhancement: Leverages DeepFilterNet3 to suppress complex background noise (street traffic, fans, air conditioning, room reverb) while keeping speech natural.
  • 🛡️ SHA-256 Stream Integrity Verification: Hashes video frame streams before and after remuxing to guarantee bit-for-bit picture preservation before creating the output file.
  • 🧩 Pluggable Architecture: Supports DeepFilterNet3, custom local CLI audio models (e.g., custom PyTorch/ONNX models), and lightweight FFmpeg afftdn fallbacks.
  • ⚠️ Non-Destructive Guarantee: Refuses to overwrite source files or pre-existing output destinations.

Architecture & How It Works

  1. Probe & Sanity Check: Validates input format with ffprobe. Enforces exactly 1 video stream and 1 mono/stereo audio stream, with start times synchronized within 50 ms.
  2. Track Demux & Parallel Execution:
    • Video Track: Directly passed through using ffmpeg -c:v copy.
    • Audio Track: Extracted to 48 kHz PCM WAV, processed by the selected denoise engine, and re-encoded to AAC.
  3. Remux & SHA-256 Verification: Combines the original video stream and denoised audio. Hashes the output video stream to verify 100% identity with the source before placing the final file.

Denoise Backend Comparison

BackendNoise Types HandledSetup / Runtime RequirementsRecommendation
DeepFilterNet3 (Default)Complex, changing noise (traffic, crowds, fans, reverb)PyTorch / Python environment (Checkpoint ~8 MB, runtime ~hundreds MB)Recommended for best neural speech clarity.
Custom Local ModelDepends on custom modelUser-provided CLI binary accepting WAV in/outIdeal if you have a custom in-house audio model.
FFmpeg afftdnSteady noise (static hum, constant hiss)FFmpeg binary only (no additional Python/PyTorch dependencies)Fast offline fallback for steady background hums.

Prerequisites

  • Python: 3.9+
  • FFmpeg & FFprobe: Must be installed and available in system PATH.
    # macOS
    brew install ffmpeg
    
    # Ubuntu/Debian
    sudo apt install ffmpeg
    

Install as an Agent Skill

Clone the repository and symlink its skill directory into your agent's skills folder, using the path your runtime expects:

git clone https://github.com/manwithshit/denoise-video.git

# Claude Code
ln -s "$(pwd)/denoise-video/skill" ~/.claude/skills/denoise-video

# Codex / other agent runtimes
ln -s "$(pwd)/denoise-video/skill" ~/.agents/skills/denoise-video

The symlink's name (denoise-video) becomes the installed skill directory name, matching the name field in SKILL.md.

Note: skill/agents/openai.yaml is an optional interface manifest (display name, one-line description, default prompt) for OpenAI-compatible agent runtimes. Claude Code reads SKILL.md directly and doesn't need it.


Usage

1. Check Available Backends

Inspect available tools (ffmpeg, ffprobe, uv, deepFilter):

python3 skill/scripts/denoise_video.py check

2. Run Denoising (DeepFilterNet3)

Run noise reduction using DeepFilterNet3 with standard attenuation (18 dB cap):

python3 skill/scripts/denoise_video.py run "/path/to/video.mp4" \
  --backend deepfilternet3 \
  --strength standard \
  --allow-download

Attenuation Strength Presets

  • natural: Caps attenuation at 12 dB (preserves background ambience).
  • standard (Default): Caps attenuation at 18 dB (balanced clarity and natural speech).
  • strong: Unrestricted model attenuation (maximum noise removal).

Note: Pass --allow-download to grant consent for downloading the DeepFilterNet3 checkpoint on first run.

3. Run with a Custom Local Model

Use an existing local CLI model that takes PCM WAV input and writes PCM WAV output:

python3 skill/scripts/denoise_video.py run "/path/to/video.mp4" \
  --backend custom \
  --custom-command 'my-enhancer --input "{input}" --output "{output}"'

4. Run FFmpeg Fallback

Use the lightweight, offline FFmpeg afftdn filter:

python3 skill/scripts/denoise_video.py run "/path/to/video.mp4" --backend ffmpeg

Custom Output Destination

By default, output is saved to <name>_denoised.<ext> in the same directory. Specify a custom path with --output:

python3 skill/scripts/denoise_video.py run "/path/to/video.mp4" --output "/path/to/output.mp4"

Safety & Boundaries

  • Track Constraints: Rejects files with multiple video/audio streams, subtitles, data streams, or attachments to prevent accidental track dropping.
  • Audio Constraints: Supports mono or stereo audio streams. Multi-channel surround audio (5.1/7.1) is refused.
  • Sync Guard: Enforces audio and video start time alignment within 50 ms.
  • No Overwrites: Refuses to overwrite source files or existing output paths.

Credits & License

The neural workflow uses DeepFilterNet by Hendrik Schröter (MIT/Apache-2.0). Dual-licensed under MIT / Apache-2.0.

↑↓ navigate openesc close