# DeepFilterNet 视频降噪同步：补偿延迟后再合回原视频

已实际在CPU运行DeepFilterNet3并保存真实输出与逐文件检查；输入包含原创程序音乐或系统朗读，结果只代表当前12秒练习。已从原视频实际提取AAC音轨做两组推理：首尾有声段未补偿均滞后10ms，补偿后均0ms；视频保持25fps和300帧，AAC输出尾部多约10ms。

## 输入来源

{
  "speech": "macOS Tingting system TTS reading the original text; not a human singer or cloned voice",
  "music": "Original deterministic synthesized drums, bass, guitar-like pluck and piano-like harmonics; not recorded instruments or model outputs",
  "seed": 50015,
  "durationSeconds": 12,
  "sampleRate": 48000
}


## 操作

### 1. 固定原片和声音时间轴

使用练习里的original-sync-input.mp4。画面是本网站原有原创程序门板短片，配音为本页系统朗读，属于技术同步教材，不是拍摄口型或模型生成视频。保留原始PTS、帧率和音轨起点。

```sh
ffprobe -v error -show_streams -show_format original-sync-input.mp4
```

### 2. 导出音轨并记录采样率

提取WAV而不改视频帧率，确认48kHz单声道。不要先trim掉开头空白再把新音轨从0秒合回，否则会人为改变同步关系。

```sh
ffmpeg -i original-sync-input.mp4 -vn -ar 48000 -ac 1 input-audio.wav
```

### 3. 分别运行补偿关与开

0.5.6默认补偿开启；A组加--no-delay-compensation关闭，B组不加。两次使用刚从视频提取的同一音轨，分别保存真实输出；不使用不存在的--compensate-delay参数。

```sh
deepFilter -m DeepFilterNet3 --no-delay-compensation --output-dir no-pad input-audio.wav
deepFilter -m DeepFilterNet3 --output-dir with-pad input-audio.wav
```

### 4. 用有声段而非拍手峰检查

降噪可能削弱拍手等非语音瞬态，所以拍手最多作输入参考。以首尾有声段互相关、原始PTS/帧号和时长共同检查；本练习使用已知原始语音作时间参照。

### 5. 只替换音轨并保持原始起点

将自己上一步生成的with-pad/input-audio_DeepFilterNet3.wav合回原片。若音视频从0开始可直接映射，其他start_time先核准；不使用-shortest截尾掩盖长度不符。包内denoised-compensated.wav是本站API同条件参考。

```sh
ffmpeg -i original-sync-input.mp4 -i with-pad/input-audio_DeepFilterNet3.wav -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -b:a 192k my-denoised-video.mp4
```

### 6. 检查首尾两段并播放成片

读回视频帧率、帧数和音轨长度，再播放开头与结尾。互相关反映波形时间对齐，不能独立证明真人口型匹配；本输入本来没有真人口型。

```sh
ffprobe -v error -show_streams -show_format my-denoised-video.mp4
```

### 7. 归档补偿条件与真实限制

保留原片、两份降噪音轨、实际延迟数值、最终片和命令。不能把离线素材预检当DeepFilterNet模型已运行，未运行时本页会明确保留该标记。

## 文件验证

```sh
python3 verify.py
python3 verify.py --self-test
```

验证PCM16音频的格式、帧和输入hash，不证明模型质量。原始合成源轨不是分离结果。

官方来源：https://github.com/Rikorose/DeepFilterNet
