An AI powered tool to execute end-to-end video dubbing.
Project description
Video Dubbing - 视频译配自动化工具
简体中文 | English
Video Dubbing 是一款 AI 驱动的命令行视频译配工具, 可进行语音识别 (ASR)、文本翻译、语音生成 (TTS), 实现端到端视频译配, 并支持批量处理视频文件, 一键生成多语言配音视频.
成品展示:
✨ 功能特性
- 功能全面: ASR → 翻译 → TTS 全链路自动化
- 高精度语音识别 powered by OpenAI-Whipser
- 支持使用兼容 OpenAI 的任意 LLM API 进行翻译
- 基于 Edge-TTS 的高质量语音合成
- 配置高度灵活: 各功能可独立开关, 以用于字幕批量翻译、语音合成等场景
- 丰富的后处理选项: 内置音轨/字幕添加功能, 支持字幕格式自定义
- 批量处理: 支持 glob 匹配, 一键批处理
- 多硬件支持: 支持在 CPU/CUDA/NPU 平台上运行
🚀 快速开始
配置运行环境
要求: Python 3.11, ffmpeg, ffprobe
推荐使用优秀的 Python 环境管理工具 astral-sh/uv
安装 ffmpeg & ffprobe:
- Windows: 下载 此链接 并解压, 将
bin/ffmpeg.exe和bin/ffprobe.exe复制到某个位于PATH中的目录 - MacOS:
brew install ffmpeg - Linux: ...
安装 Video Dubbing
按需选择以下安装方式:
最小安装:
适用于无须 ASR, 仅需翻译和 TTS 的场景, 可避免安装 pytorch, pandas 等大型依赖项, 占用空间仅 ~20MB
pip install video-dubbing
# or
uv tool install -p 3.11 video-dubbing # with uv
基础安装:
pip install video-dubbing[asr]
# or
uv tool install -p 3.11 video-dubbing[asr] # with uv
华为 NPU:
pip install video-dubbing[npu]
# or
uv tool install -p 3.11 video-dubbing[npu] # with uv
理论上只要 torch_npu 支持的平台都可以运行, 在 Ascend 910B3 上测试通过, 若你成功在其他平台上运行, 欢迎提交 PR 更新此处.
基础用法
由于配置项较多, 推荐使用配置文件设定大多数配置项. 首先生成默认配置文件:
生成配置文件:
dub -gc # 将在当前目录下生成 config.json, 包含默认配置
而后在执行时, 通过 -c 参数指定配置文件, 并添加其他参数覆盖配置文件中的设置:
加载配置文件:
dub -c config.json # 后加其他命令行参数
示例
示例 1: 批量转译 videos 目录下所有 mp4 文件为中文:
dub -c config.json --input-videos videos/*.mp4 --use-html
示例 2: 批量翻译 subs 目录下的字幕为中文:
dub -c config.json --input-subtitles subs/*.srt --asr False --tts False
⚠️ 注意事项
- 不建议一开始就直接批处理大量文件, 建议先尝试单个文件, 确保配置正确
- 可设置
--debug及--log_dir打开调试模式并保存日志, 以便排查问题 - 上报 Issue 时请提供详细的配置信息及日志, 以便更快定位问题
文件限制:
- 视频文件支持格式取决于 ffmpeg, 常见格式如 mp4, mkv, webm 等均支持
- 字幕文件仅支持 srt 格式, 其他格式可使用 ffmpeg 转换为 srt
- 确保字幕文件编码为 UTF-8, 否则可能导致乱码问题
- 若仅指定视频, 必须开启 ASR; 若仅指定字幕, 无法开启 ASR; 若同时指定, 则二者数量和顺序必须一一对应
NPU 相关:
- 使用 NPU 时,
--device保持为cuda即可, 无需修改
LLM 相关:
--use_html选项当原文字幕分句良好时推荐开启(即每行都基本以句号结尾), 否则推荐关闭. 使用 whisper 转译英文视频生成的字幕一般都符合此要求.
⚙️ 全部配置参数
options:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
加载 JSON 或 YAML 格式的配置文件 (default: None)
-gc, --gen-config 生成默认配置文件 (default: False)
-v, --version show program's version number and exit
General:
--input_videos INPUT_VIDEOS [INPUT_VIDEOS ...], --input-videos INPUT_VIDEOS [INPUT_VIDEOS ...]
待处理的视频文件 (default: [])
--input_subtitles INPUT_SUBTITLES [INPUT_SUBTITLES ...], --input-subtitles INPUT_SUBTITLES [INPUT_SUBTITLES ...]
待处理的字幕文件 (srt 格式) (default: [])
--output_dir OUTPUT_DIR, --output-dir OUTPUT_DIR
输出目录. 留空则使用输入文件所在目录 (default: None)
--asr [ASR] 语音识别开关 (default: True)
--translate [TRANSLATE]
翻译开关 (default: True)
--tts [TTS] 语音合成开关 (default: True)
--debug [DEBUG] 调试模式 (default: False)
--log_dir LOG_DIR, --log-dir LOG_DIR
日志目录, 若为空则不保存 (default: None)
ASR:
--model MODEL whisper 模型型号 (default: turbo)
--model_dir MODEL_DIR, --model-dir MODEL_DIR
whisper 模型存储目录 (default: None)
--device DEVICE 用于运行 ASR 相关模型的硬件设备 (default: cuda)
--align [ALIGN] 进行词汇对齐 (default: False)
--diarize [DIARIZE] 进行说话者分离 (default: False)
--hf_token HF_TOKEN, --hf-token HF_TOKEN
Hugging Face token. 用于下载需同意用户协议的某些模型 (default: )
Translate:
--target_lang TARGET_LANG, --target-lang TARGET_LANG
目标语言 (default: 简体中文)
--base_url BASE_URL, --base-url BASE_URL
LLM API 地址 (default: https://api.openai.com/v1)
--api_key API_KEY, --api-key API_KEY
LLM API key (default: )
--llm_model LLM_MODEL, --llm-model LLM_MODEL
LLM 模型 (default: )
--use_html [USE_HTML], --use-html [USE_HTML]
使用 HTML 标记请求多行翻译. 当字幕分句良好时推荐开启, 否则推荐关闭 (default: False)
--remove_ellipsis [REMOVE_ELLIPSIS], --remove-ellipsis [REMOVE_ELLIPSIS]
移除字幕行尾的省略号 (default: False)
--llm_req_rate LLM_REQ_RATE, --llm-req-rate LLM_REQ_RATE
LLM 请求速率 (r/s) (default: 5)
--batch_size BATCH_SIZE, --batch-size BATCH_SIZE
单次请求 LLM 翻译的最大行数. 过大会提高失败率 (default: 10)
TTS:
--voice VOICE TTS 声音. 参考 https://gist.github.com/BettyJJ/17cbaa1de96235a7f5773b8690a20462 (default: zh-CN-YunyangNeural)
--tts_req_rate TTS_REQ_RATE, --tts-req-rate TTS_REQ_RATE
TTS 请求速率 (r/10s) (default: 3)
--audio_format AUDIO_FORMAT, --audio-format AUDIO_FORMAT
音频输出格式 (default: aac)
--add_track [ADD_TRACK], --add-track [ADD_TRACK]
添加 TTS 音频到视频 (default: True)
--track_title TRACK_TITLE, --track-title TRACK_TITLE
TTS 音轨标题. 默认使用 voice 名称 (default: None)
Subtitle:
--soft [SOFT] 添加字幕方式 (True: 软 / False: 硬) (目前仅支持软字幕) (default: True)
--add_asr_sub [ADD_ASR_SUB], --add-asr-sub [ADD_ASR_SUB]
将语音识别字幕添加到视频 (default: True)
--asr_sub_title ASR_SUB_TITLE, --asr-sub-title ASR_SUB_TITLE
语音识别字幕标题 (default: None)
--asr_sub_style ASR_SUB_STYLE, --asr-sub-style ASR_SUB_STYLE
语音识别字幕样式. 参考 https://github.com/yuanshanhua/video-dubbing/blob/main/docs/subtitle_style_zh.md (default: None)
--add_trans_sub [ADD_TRANS_SUB], --add-trans-sub [ADD_TRANS_SUB]
将译文字幕添加到视频 (default: True)
--trans_sub_title TRANS_SUB_TITLE, --trans-sub-title TRANS_SUB_TITLE
译文字幕标题 (default: None)
--trans_sub_style TRANS_SUB_STYLE, --trans-sub-style TRANS_SUB_STYLE
译文字幕样式 (default: None)
--add_bilingual_sub [ADD_BILINGUAL_SUB], --add-bilingual-sub [ADD_BILINGUAL_SUB]
将双语字幕添加到视频 (default: True)
--bilingual_sub_title BILINGUAL_SUB_TITLE, --bilingual-sub-title BILINGUAL_SUB_TITLE
双语字幕标题 (default: None)
--bilingual_sub_style BILINGUAL_SUB_STYLE, --bilingual-sub-style BILINGUAL_SUB_STYLE
双语字幕样式 (default: None)
🙏 致谢
本项目基于以下优秀开源项目:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file video_dubbing-1.1.0.tar.gz.
File metadata
- Download URL: video_dubbing-1.1.0.tar.gz
- Upload date:
- Size: 179.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a162c7f436a1d2aa22053ad4a722f835fcdc9bf76bc388dbbef98836f82abed7
|
|
| MD5 |
b049722a69109f7d78b0e24be34ca733
|
|
| BLAKE2b-256 |
390a9776a17e4600a520f1d0128717227382754bb150b1af1e64dac45522ca37
|
File details
Details for the file video_dubbing-1.1.0-py3-none-any.whl.
File metadata
- Download URL: video_dubbing-1.1.0-py3-none-any.whl
- Upload date:
- Size: 50.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58c3f64a2a610a10373fab06cdf2d44e2d34587c6ba6317f594ff5ff4375c3a4
|
|
| MD5 |
d9ded949392df4bf141d44b30a5d2e3d
|
|
| BLAKE2b-256 |
2803e960843aad46610f7a28324ced42ade7b36cba4c868f9de852c8e6dfd5d6
|