Skip to content

jie955/video-translator

Repository files navigation

Video Translator

将英文视频一键转为双语字幕视频,并生成结构化内容摘要。

Faster-Whisper 本地语音转文字 + LLM 智能翻译 + FFmpeg 字幕烧录,纯本地 ASR 零 API 成本,翻译费用低至几分钱。


为什么用这个

市面上的视频翻译工具要么是纯云端(贵、慢、隐私顾虑),要么是纯本地(翻译质量差)。Video Translator 采用混合架构:本地 Whisper 做语音识别,云端 LLM 做翻译和摘要,兼顾成本、质量和速度。

实际测试:11 分钟英文技术访谈,端到端完成双语字幕视频 + 结构化摘要,翻译成本约 CNY 0.02-0.05。

核心特性

  • 6 步全自动流水线 — 音频提取 → 语音转写 → LLM 翻译 → 双语合并 → 字幕烧录 → 内容摘要,一条命令完成
  • 本地 ASR 零成本 — Faster-Whisper large-v3(CTranslate2 加速),GPU/CPU 自适应,无需任何 API Key
  • 多引擎翻译 — 支持 agicto 网关 / Gemini / OpenAI / DeepSeek / Kimi,切换引擎只改一个参数
  • 工程级可靠性 — 断点续传、VAD 静音过滤、索引保护防 LLM 乱序、ASS 六层防线、27 个单元测试
  • 术语表积累 — YAML 格式术语表,随用随长,确保技术名词翻译一致
  • 结构化摘要 — 自动生成视频概述、核心主题、关键论点、金句摘录,直接作为内容素材

快速开始

环境要求

  • Python 3.10+
  • FFmpeg(含 ffprobe,需在 PATH 中)
  • NVIDIA GPU(可选,CPU 也可运行但速度较慢)
  • 至少一个 LLM API Key

安装

git clone https://github.com/jie955/video-translator.git
cd video-translator

pip install -r requirements.txt

配置

# 1. 复制环境变量模板,填入你的 API Key
cp .env.example .env
# 编辑 .env,至少填一个引擎的 Key

# 2. 安装 FFmpeg(Windows)
winget install ffmpeg
# macOS: brew install ffmpeg
# Ubuntu: sudo apt install ffmpeg

运行

# 放入视频
cp your_video.mp4 input/video.mp4

# 一键运行(默认 agicto 网关 + Gemini 2.5 Flash)
python run.py --video input/video.mp4 --provider gemini

完成后查看 output/ 目录:

output/
├── audio.wav            # 提取的音频
├── english.srt          # Whisper 生成的英文字幕
├── chinese.srt          # LLM 翻译的中文字幕
├── bilingual.srt        # 中英双语字幕
├── bilingual.ass        # ASS 高级字幕(用于烧录)
├── final.mp4            # 压制完成的视频
└── summary.md           # 结构化视频摘要

工作流程

MP4 → FFmpeg → Audio.wav → Faster-Whisper → English SRT
  → LLM 翻译 → Chinese SRT
  → 合并双语 SRT → ASS 字幕
  → FFmpeg 烧录 → 最终视频
  → LLM 摘要 → summary.md

断点续传:run.pyoutput/.checkpoint/ 记录每步完成状态,中断后重跑自动跳过已完成步骤。

配置说明

config.yaml 控制全部参数:

whisper:
  model_size: "large-v3"     # large-v3 | large-v2 | medium | base | small
  device: "auto"             # cuda | cpu | auto
  vad_filter: true           # 静音过滤,减少幻觉
  initial_prompt: "..."      # 注入背景信息,提升术语识别

translation:
  provider: "agicto"         # agicto | gemini | openai | deepseek | kimi
  model: "gemini-2.5-flash"  # 模型名
  max_lines_per_chunk: 80    # 每块最大行数
  temperature: 0.1           # 低温度 = 更一致

subtitles:
  mode: "soft"               # soft | hard | both

命令行参数覆盖配置:

python run.py \
  --video input/video.mp4 \
  --provider deepseek \
  --model deepseek-chat \
  --subtitle-mode hard \
  --glossary glossary/anthropic.yaml

各模块独立使用

每个步骤可单独运行:

# 仅提取文字(语音转写)
python transcribe.py

# 仅翻译已有字幕
python translate.py

# SRT 转 ASS(高级字幕样式)
python srt_to_ass.py --srt output/bilingual.srt --zh-only --preset default --auto-font

# 烧录字幕
python burn_subtitle.py --video input/video.mp4 --srt output/bilingual.ass --mode hard

# 生成视频摘要
python summarize.py --input output/chinese.srt --output output/summary.md

ASS 字幕样式预设

预设 风格 推荐场景
default 白字 + 不透明黑底框 PPT / 演讲 / 访谈(首选)
compact 小字号 + 半透明底框 信息密集视频
youtube 白字描边 + 阴影 深色背景 / 游戏视频

API Key 配置

引擎 环境变量 获取地址
agicto 网关 AGICTO_API_KEY agicto.com
Gemini GEMINI_API_KEY ai.google.dev
OpenAI OPENAI_API_KEY platform.openai.com
DeepSeek DEEPSEEK_API_KEY platform.deepseek.com
Kimi KIMI_API_KEY platform.moonshot.cn

密钥通过 .env 文件或环境变量传入,不写进代码。

成本估算

以 11 分钟视频为例:

环节 成本
Whisper 转写 CNY 0(本地运行)
LLM 翻译(Gemini 2.5 Flash) CNY 0.02-0.05
LLM 摘要 CNY 0.005-0.01
合计 约 CNY 0.03-0.06

run.py 启动时会自动预估费用。

术语表

术语表位于 glossary/,YAML 格式,翻译时强制遵循:

# glossary/ai_tech.yaml
Agent: Agent
Tool Use: 工具调用 (Tool Use)
Chain of Thought: 思维链 (Chain of Thought)

内置 ai_tech.yaml(通用 AI 技术)和 anthropic.yaml(Anthropic 专项),可按领域扩展。每遇到新术语追加一行,术语表质量随使用正向增长。

测试

python -m pytest tests/ -v    # 27 tests

Golden Test 覆盖 6 类异常输入(BOM、控制字符、混排语言、特殊字符、畸形时间戳等),验收标准:全部生成合法 ASS。

技术架构

                ┌─────────────┐
   MP4 ───────► │ FFmpeg      │ ──► audio.wav (16kHz mono)
                └─────────────┘
                       │
                ┌──────▼──────┐
                │ Faster-     │ ──► english.srt
                │ Whisper v3  │     (带时间戳)
                │ (本地 GPU)   │
                └─────────────┘
                       │
                ┌──────▼──────┐
                │ LLM 翻译     │ ──► chinese.srt
                │ (智能分块 +  │     (索引保护)
                │  术语表)     │
                └─────────────┘
                       │
          ┌────────────┼────────────┐
          ▼            ▼            ▼
   bilingual.srt  bilingual.ass  summary.md
          │            │
          ▼            ▼
   soft sub      hard burn ──► final.mp4

FAQ

Q: 没有 GPU 能用吗? 可以。自动退回 CPU + int8 量化,速度慢但功能完整。30 分钟视频 CPU 转写约 20-40 分钟,GPU 约 3-5 分钟。

Q: 支持中文视频转英文字幕吗? Whisper 支持多语言识别,修改 config.yamllanguage 参数即可。翻译方向需调整 translate.py 的 prompt。

Q: 视频画面中的文字能提取吗? 当前版本仅处理音轨语音,不做 OCR。OCR 可作为未来扩展方向。

Q: 支持实时流式转写吗? 当前为离线处理,不支持实时流。Faster-Whisper 的流式模式可作为扩展点。

贡献

欢迎提交 Issue 和 Pull Request。详见 CONTRIBUTING.md

特别欢迎以下方向:

  • 新的术语表(按领域:区块链、医学、法律等)
  • 新的 LLM 引擎接入
  • ASS 样式预设扩展
  • 多语言翻译方向(日中、韩中等)

License

MIT

About

将英文视频一键转为双语字幕并生成结构化摘要 — Faster-Whisper 本地 ASR + LLM 智能翻译 + FFmpeg 烧录

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages