写给AI时代播客视频转字幕阅读、翻译的spec

1. 系统概述

本系统是一套完整的视频音频处理自动化流水线,用于将外语视频转化为中文配音视频。系统涵盖以下核心能力:

运行平台:macOS (Apple Silicon M4)。

1.1 术语表

术语 全称 含义
ASR Automatic Speech Recognition 自动语音识别,将音频转为文字
TTS Text-to-Speech 文本转语音,将文字合成为音频
VAD Voice Activity Detection 语音活动检测,区分语音和静音段
BPE Byte Pair Encoding 子词分词算法,用于文本 token 化
Mel Mel Spectrogram 梅尔频谱图,音频的频域表示
CFM Conditional Flow Matching 条件流匹配,一种扩散生成方法
DiT Diffusion Transformer 扩散 Transformer,用于频谱生成
VQ-VAE Vector Quantized VAE 向量量化变分自编码器,用于离散化连续特征
SRT SubRip Text 字幕文件格式

2. 整体流水线

系统按以下顺序执行,每步产出的文件作为下一步的输入。每步均支持断点续传(检查输出文件是否已存在)。

graph TD Input[视频输入 URL / 本地文件] --> Step1{Step 1: 字幕下载 yt-dlp} Step1 -- 下载成功 --> Skip[跳过 Step 3-5] Step1 -- 无字幕/失败 --> Step2[Step 2: 视频下载 yt-dlp] Step2 --> Step3[Step 3: 音频提取 ffmpeg] Step3 -->|WAV 16kHz Mono| Step4[Step 4: 语音识别 ASR] Step4 -->|SRT| Step5[Step 5: 字幕优化 SubtitleOptimizer] Skip --> Step6[Step 6: AI 翻译 Claude API] Step5 --> Step6 Step6 -->|中文 SRT| Step7[Step 7: TTS 语音合成 IndexTTS2] Step7 -->|语音 WAV| Step8[Step 8: 音频混合 ffmpeg] subgraph AudioMixing [音频处理] Step8a[背景音分离 karaoke算法] Step8b[TTS配音 + 背景音混合] end Step8 --> Step8a --> Step8b Step8b --> Step9[Step 9: 视频合成 ffmpeg] Step9 -->|字幕烧录/饱和度增强| Output((最终输出 MP4)) style Input fill:#f9f,stroke:#333,stroke-width:2px style Output fill:#9f9,stroke:#333,stroke-width:2px

关键脚本对应关系:

步骤 脚本 说明
总调度 download_and_process.sh 串联所有步骤的主入口
Step 1-2 getvideo.sh 视频和字幕下载
Step 3-5 process_video_part1.sh 音频提取 + ASR + 字幕优化
Step 4-5 get_srt_by_wisper.py faster-whisper 转录 + 字幕优化
Step 6 translate_by_claude.sh Claude API 翻译
Step 7-9 process_video_part2.sh / _plus.sh TTS + 混音 + 视频合成

3. 组件详细规格

3.1 视频下载组件 — yt-dlp

使用 yt-dlp 从多个平台下载视频和字幕。优先尝试下载平台自带字幕(可跳过语音识别步骤)。

工具 yt-dlp
认证方式 --cookies-from-browser edge
SD 下载格式 18/93/91/worst[ext=mp4]/worst (优先 360p)
HD 下载格式 bestvideo[height>=720]+bestaudio (720p+)
字幕下载 --write-auto-subs --sub-format srt --skip-download --all-subs

3.2 音频提取组件 — ffmpeg

将音频转为 Whisper 所需的标准格式。

输出编码 PCM 16-bit Little-Endian (pcm_s16le)
采样率 16000 Hz
声道数 1 (Mono)
ffmpeg -i {input} -vn -acodec pcm_s16le -ar 16000 -ac 1 {output}.wav

3.3 语音识别组件 — faster-whisper

系统优先使用 faster-whisper(支持 VAD 防幻觉)。

为什么需要 VAD? Whisper 在静音段容易生成"幻觉"文本(如"请订阅")。VAD 只对有语音的部分进行转录,从根本上避免此问题。

3.3.1 配置与参数

模型 large-v3 (int8 量化)
设备 CPU (适配 Mac M4)
VAD 开关 vad_filter=True
VAD 参数 静音时长: 500ms, 阈值: 0.5
防幻觉参数 condition_on_previous_text=False, temperature=0

3.4 字幕优化组件 — SubtitleOptimizer

对 ASR 结果进行四步优化:

  1. 时间戳优化:相邻片段间隔 < 1000ms 时对齐。
  2. 短句合并:片段 < 5 词且合并后不超长时合并。
  3. 噪音过滤:移除 , 等开头及空片段。
  4. 幻觉过滤:基于规则(重复文本、中文"谢谢订阅"、英文"Subscribe"等)。

3.5 AI 翻译组件 — Claude API

3.6 TTS 语音合成组件 — IndexTTS2

IndexTTS2 是一个零样本(Zero-Shot)文本转语音系统,支持音色克隆和 8 维情感控制。

3.6.1 架构概览

graph TD subgraph Input [输入处理] RefAudio((参考音频)) Text([文本/情感描述]) end subgraph Features [特征提取] W2V[W2V-BERT 2.0] CAMP[CAMPPlus 风格编码] MelExt[Mel 频谱提取] Qwen[QwenEmotion 情感模型] end subgraph Semantic [语义编码] VQ[Semantic Codec VQ-VAE] Codes[离散 Codes] end subgraph Synthesis [生成模型] GPT[GPT UnifiedVoice] Latent[Latent Features] Diff[S2Mel 扩散模型 DiT+CFM] end subgraph Output [声码器] BigVGAN[BigVGAN] Wave((输出波形)) end RefAudio -->|音色/情感| W2V RefAudio -->|风格| CAMP RefAudio -->|Mel参考| MelExt Text --> Qwen W2V --> VQ --> Codes CAMP --> GPT Qwen --> GPT MelExt --> GPT Codes --> GPT GPT -->|Mel Codes| Latent Latent -->|Prompt Condition| Diff Diff -->|80-band Mel| BigVGAN BigVGAN --> Wave style RefAudio fill:#fff3cd,stroke:#d6b656 style Wave fill:#d4edda,stroke:#c3e6cb style GPT fill:#e2e3e5,stroke:#333 style Diff fill:#e2e3e5,stroke:#333

3.6.2 关键模型参数

子模型 关键参数 / 说明
GPT UnifiedVoice 24 层, 1280 维, 20 头。文本 Token 上限 600,Mel Token 上限 1815。
S2Mel 扩散 DiT 架构 + CFM 采样。步数:25,CFG Rate: 0.7
Semantic Codec 码本大小: 8192。提取 W2V-BERT 第 17 层特征。
BigVGAN 22kHz, 80-band Mel 输入。

3.6.3 情感控制

支持 8 维情感向量控制(喜、怒、哀、惧、厌恶、低落、惊喜、平静)。情感向量经归一化(总和 0.8)后与音色嵌入混合。

3.7 音频混合与视频合成 — ffmpeg

3.7.1 背景音分离 (Karaoke 算法)

默认使用卡拉OK算法配合带通滤波:

pan=mono|c0=0.5*c0+-0.5*c1,highpass=f=200,lowpass=f=3400

3.7.2 混合参数


4. 文件组织结构

{工作目录}/ ├── {video}.mp4 # 原始视频 (SD) ├── {video}_hd.mp4 # 高清视频 (可选) ├── {video}_temp/ # 工作临时目录 │ ├── *.wav # 提取的音频 / TTS 单句 / 混合音频 │ ├── *.srt # ASR 字幕 / 优化字幕 / 翻译字幕 │ ├── *.mp4 # 中间视频文件 │ └── *.md # 文案 ├── ttstasks/ │ └── {video}.json # TTS 任务配置 └── checkpoints/ # IndexTTS2 模型文件

5. 关键设计决策

  1. VAD 防幻觉:三重防护机制(VAD 过滤 + 禁用上下文依赖 + 高置信度阈值),解决 Whisper 静音段幻觉问题。
  2. Mac 适配:ASR 使用 CPU + INT8 量化;IndexTTS2 禁用 MPS FP16(因性能倒退)强制使用 FP32。
  3. 音质提升:引入 S2Mel 扩散模型(25步 CFM),相比直接 GPT 生成波形,显著提升了频谱的细节还原度。
  4. 音色解耦:使用 W2V-BERT 提取语义 + VQ-VAE 量化,将内容与音色分离,实现更准确的零样本克隆。
  5. 断点续传:全流程基于文件存在性检查,支持随时中断和恢复。

原文

源链接