skill
denoise-video
本地 Agent Skill,给成片降噪且不重新编码画面 | Local agent skill that denoises finished videos without re-encoding the picture
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
README
synced Oct 23, 2026Overview
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
afftdnfallbacks. - ⚠️ Non-Destructive Guarantee: Refuses to overwrite source files or pre-existing output destinations.
Architecture & How It Works
- 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. - 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.
- Video Track: Directly passed through using
- 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
| Backend | Noise Types Handled | Setup / Runtime Requirements | Recommendation |
|---|---|---|---|
| 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 Model | Depends on custom model | User-provided CLI binary accepting WAV in/out | Ideal if you have a custom in-house audio model. |
FFmpeg afftdn | Steady 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.yamlis an optional interface manifest (display name, one-line description, default prompt) for OpenAI-compatible agent runtimes. Claude Code readsSKILL.mddirectly 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.