VideoAgent音频处理工具链详解:Whisper转写、人声分离、响度归一化与音频切片的8大底层Agent
【免费下载链接】VideoAgent[EMNLP2026] "VideoAgent: All-in-One Agentic Framework for Video Understanding and Editing, and Remaking"项目地址: https://gitcode.com/gh_mirrors/video/VideoAgent
VideoAgent 是入选 EMNLP 2026 的一体化 Agentic 视频框架,支持视频理解、编辑与重塑。它的音频处理工具链由8 大底层 Agent组成,把 Whisper 转写、人声分离、响度归一化、音频重采样、音频切片、BGM 混音、音轨提取与音视频合并全部封装成可自动编排的"积木"——你只需要用一句自然语言描述需求,框架就会自动挑选并串联这些 Agent 完成任务。
一、8大底层Agent速览
所有音频 Agent 都位于 environment/roles/ 目录,并通过 environment/config/registry.json 注册到框架中:
| # | Agent | 一句话功能 | 核心依赖 |
|---|---|---|---|
| 1 | AudioExtractor音轨提取 | 从视频(单个或整个目录)中抽取 44.1kHz 立体声 WAV 音频 | FFmpeg |
| 2 | Transcriber语音转写 | 批量转写目录内音频,结果保存在同目录 | Whisper / FunASR |
| 3 | Separator人声分离 | 把音乐中的演唱/人声单独分离出来 | Demucs |
| 4 | LoudnessNormalizer响度归一化 | 统一音频响度,让多段素材音量一致 | ffmpeg loudnorm |
| 5 | Resampler重采样 | 统一音频采样率,兼容下游合成模型 | fap |
| 6 | TTSSlicer音频切片 | 按静音边界把长音频切成 6~8 秒短片段,并输出时间戳 | librosa |
| 7 | MixerBGM混音 | 把人声/BGM 叠加混音,自动补齐背景音乐长度 | pydub |
| 8 | Merge音视频合并 | 用新音轨直接替换整段视频的音频 | FFmpeg |
它们对应的源码分别是:audio_extractor.py、transcriber.py、separator.py、loudness_normalizer.py、resampler.py、tts_slicer.py、mixer.py、merge.py。
二、框架如何自动编排这些Agent?
VideoAgent 的调度核心在 environment/agents/multi.py,它分为三步:
- 意图分析:LLM 从你的自然语言需求中识别意图(如"Vocal Separation 人声分离"、"Audio Slice 音频切片");
- 意图→工具映射:intents.yml 中预置了每种意图对应的 Agent 组合,例如:
Audio Optimization(音频优化)= AudioExtractor → Separator → Resampler → LoudnessNormalizerVideo Transcription(视频转写)= AudioExtractor → TranscriberAdd BGM(添加背景音乐)= AudioExtractor → Mixer → Merge
- 图驱动执行:LLM 基于 Agent 元数据生成"Agent Graph + Agent Chain",再经过"评判 + 反思"两轮自检(最多 3 次迭代),确保参数传递正确、没有冗余节点后才执行。
也就是说,你不需要知道 8 个 Agent 的存在,只说"帮我把这首歌的人声分离出来并提升音质",框架就会自动组装出AudioExtractor → Separator → Resampler → LoudnessNormalizer这条工作流。
三、逐个拆解:每个Agent在做什么
1. AudioExtractor 音轨提取——一切音频任务的入口
它通过 FFmpeg 把视频抽成16-bit PCM、44.1kHz 立体声 WAV(audio_extractor.py#L52-L66),支持 mp4/avi/mov/mkv 等 8 种格式,既可处理单个文件,也能递归扫整个目录批量提取。后续所有音频 Agent 的输入基本都来自它。
2. Transcriber 语音转写——Whisper 的批量封装
Transcriber(transcriber.py)并不重复造轮子,而是调用项目内置的 tools/audio-preprocess/(命令名为fap):
fap transcribe --model-type funasr --recursive <音频目录>fap同时支持Whisper和FunASR两种 ASR 引擎(transcribe.py),并用多进程加速批量转写,转写结果(.srt/.txt 等)直接落盘到音频同目录,方便下游的 TTS 改写、视频问答等 Agent 读取。
3. Separator 人声分离——一首歌拆出"纯净人声"
Separator(separator.py)执行fap separate,基于 Demucs 音源分离模型,把整首歌拆出独立的人声音轨。它是翻唱(SVC)、鬼畜配音、"去背景音"类任务的关键一步,也是Audio Optimization意图链的第一环。
4. LoudnessNormalizer 响度归一化——告别忽大忽小
响度归一化(loudness_normalizer.py)执行fap loudness-norm,按 EBU R128 标准把目录下所有音频调整到统一响度。做多段拼接、配音替换时,它能保证各段音量一致,听感更专业。
5. Resampler 重采样——统一采样率
不同来源的音频采样率五花八门,Resampler(resampler.py)执行fap resample把音频统一重采样,避免 TTS/SVC 合成模型因采样率不匹配而"翻车"。
6. TTSSlicer 音频切片——按静音"刀刀到位"
TTSSlicer(tts_slicer.py)是切片环节的主角,逻辑分三步:
- 静音检测:用 librosa 的 RMS 能量曲线(阈值 -35dB)找出发言间隙;
- 切片:优先在静音最安静处下刀,保证每段 6~8 秒(tts_slicer.py#L30-L47),过长片段二次均分;
- 落盘:输出
0000.wav, 0001.wav ...及带 start/end 时间戳的metadata.json(tts_slicer.py#L297-L310)。
这是"视频改写/配音"工作流的核心:切片 → 转写 → 按需求改写文案 → TTS 合成 → 替换回原视频。
7. Mixer BGM混音——人声与背景音乐一键叠加
Mixer(mixer.py)基于 pydub 完成混音:BGM 自动降 1dB 垫底,若 BGM 比人声短会自动循环拼接到等长再叠加,输出mixed_*.wav(mixer.py#L43-L65)。
8. Merge 音视频合并——收尾交付
Merge(merge.py)不裁剪任何画面,而是直接把完整视频 + 新音轨用 FFmpeg 重新封装(libx264 + AAC,-shortest取较短者,+faststart优化在线播放,merge.py#L35-L50),一步生成最终成片。
四、实战:三条典型音频工作流
| 场景 | 一句话需求示例 | 自动生成的 Agent 链 |
|---|---|---|
| 🎧 视频转写 | "把这个播客视频转成文字" | AudioExtractor → Transcriber |
| 🎚️ 音频优化 | "分离这首歌的人声并提升音质" | AudioExtractor → Separator → Resampler → LoudnessNormalizer |
| 🎵 加背景音乐 | "给这段配音加上BGM" | AudioExtractor → Mixer → Merge |
五、快速上手
git clone https://gitcode.com/gh_mirrors/video/VideoAgent conda create --name videoagent python=3.10 conda activate videoagent conda install -y -c conda-forge pynini==2.1.5 ffmpeg pip install -r requirements.txt在 environment/config/config.yml 中填入 LLM API Key 后,运行 main.py,用自然语言描述需求即可:
python main.py # User Requirement: 请分离这段歌曲的人声并做响度归一化更多示例与演示详见 demos_documents.md。
六、写在最后
VideoAgent 音频工具链的设计哲学很简单:把成熟工具(FFmpeg、Whisper/FunASR、Demucs、librosa)封装成标准 Agent,让 LLM 负责"接线",工程师负责"造砖"。8 个底层 Agent 各司其职、接口统一(Pydantic 输入/输出 Schema),因此既能被意图映射直接复用,也能被图驱动规划自由组合。对于想学习 Agentic 工作流编排的开发者,这套 environment/roles/ 目录是非常清晰的参考实现;对于普通用户,一句自然语言就能跑通"转写、分离、归一化、切片、混音、合并"的完整音频流水线。
【免费下载链接】VideoAgent[EMNLP2026] "VideoAgent: All-in-One Agentic Framework for Video Understanding and Editing, and Remaking"项目地址: https://gitcode.com/gh_mirrors/video/VideoAgent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考