一个尽量简单、可本地运行的 YouTube 中文配音工具。
输入一个 YouTube 链接,配置好 YouTube Cookie 和 OpenAI 兼容 API,YouDub WebUI 会自动下载视频、分离人声、识别字幕、逐句翻译、生成中文配音,并合成带中文字幕和中文配音的新视频。
English README: README.en.md
作者的 B 站频道:黑纹白斑马(粉丝 65 万+,视频 2 万+,自称"赛博普罗米修斯"),全站作品均使用 YouDub WebUI 自动翻译配音,覆盖科技、游戏、科普、动物、历史等题材。想看本项目实际跑出来的成品视频,欢迎前往关注。
下面是用本项目跑出来的两段真实样例,均可在 GitHub 页面直接播放。Blastoff 长视频展示的是开头 40 秒切片,完整 mp4 文件托管在本仓库的 demo-assets Release 中。
原视频链接 · 竖屏 Shorts
| 原始英文 | 中文配音版 |
|---|---|
jensen_huang_source.mp4 |
jensen_huang_dubbed.mp4 |
原视频链接 · 横屏长视频 · 下方为开头 40 秒切片,完整版可在 demo-assets Release 下载
| 原始英文 | 中文配音版 |
|---|---|
blastoff_clip_source.mp4 |
blastoff_clip_dubbed.mp4 |
中文版视频均带有自动生成的中文配音和中文字幕,背景音乐与音效保留自原始视频。
现在有很多优秀的视频内容只存在于某一种语言里。YouDub WebUI 希望把「看懂外语视频」这件事变得更简单:不做复杂平台,不做繁重工作流,只保留一个本地可跑、容易理解、方便二次开发的最小系统。
它适合:
- 想把 YouTube 视频转换成中文配音的个人用户。
- 想研究 AI 视频本地化流程的开发者。
- 想基于 Whisper、VoxCPM、OpenAI API、Demucs、FFmpeg 做产品原型的人。
- 想参与开源共建,让跨语言内容传播更容易的人。
- 单页 Web 控制台,输入 URL 即可开始。
- 可以在页面里管理 YouTube Cookie、代理端口和 OpenAI 兼容 API 设置。
- 实时查看任务进度,知道当前跑到下载、识别、翻译、配音还是合成。
- 所有流程串行执行,架构简单,方便调试和改造。
- 运行数据保存在本地 SQLite 和本地文件中。
- 默认使用 ModelScope 下载模型,更适合国内网络环境。
- Demucs 使用源码子模块,避免发布版缺少
demucs.api的问题。
YouTube URL
-> yt-dlp 下载
-> Demucs 分离人声和背景音
-> Whisper 识别语音(含词级时间戳)
-> spaCy 重新分句并对齐时间戳
-> OpenAI 兼容 API 逐句翻译
-> VoxCPM2 生成中文配音
-> FFmpeg 合成最终视频
建议准备:
- Python 3.12
- Node.js 20+
- FFmpeg / ffprobe
- CUDA GPU
- 可用的 YouTube 代理
- Netscape 格式 YouTube Cookie
- OpenAI 兼容 API 的 base URL、API key 和 model
git clone https://github.com/liuzhao1225/YouDub-webui.git
cd YouDub-webui
git submodule update --init --recursivePython 依赖:
python3.12 -m venv .venv
.venv/bin/pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt前端依赖:
npm --prefix apps/web install --registry=https://registry.npmmirror.com下载 spaCy 英文模型(用于 ASR 重新分句):
.venv/bin/python -m spacy download en_core_web_sm如果 Aliyun 某个 Python 包暂时不可用,再单独对那个包使用 Tsinghua 源重试。不要把 Tsinghua 配成全局 fallback。
cp env.txt.example .env常用配置:
DEVICE=cuda
WORKFOLDER=./workfolder
MODEL_CACHE_DIR=./data/modelscope
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
YTDLP_PROXY_PORT=
.env 用于应用运行。不要提交任何密钥、Cookie 或下载产物。
启动后端:
.venv/bin/uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8000启动前端:
npm --prefix apps/web run dev -- --hostname 0.0.0.0 --port 3000打开:
http://localhost:3000
打开页面后,进入 Settings:
- 粘贴 Netscape 格式 YouTube Cookie。
- 填写 yt-dlp 代理端口,例如
20171。 - 填写 OpenAI base URL 和 API key。
- 点击
Get models获取可选模型,或手动输入模型名。 - 保存后回到首页,输入 YouTube URL,开始转换。
API key 和 Cookie 会在页面中脱敏显示,后端不会把 Cookie 明文返回给前端。
推荐使用 Chrome 扩展 Get cookies.txt LOCALLY(开源,cookie 不出本机):
- 在 Chrome 安装扩展并保持启用。
- 登录
https://www.youtube.com。 - 在 youtube.com 页面点扩展图标,选择
Export→Netscape,得到cookies.txt。 - 把文件内容整段粘贴到 Settings 的 Cookie 输入框。
任务详情页底部提供 Danger zone,确认后会调用 DELETE /api/tasks/{id},同时清理 SQLite 记录、运行日志以及 workfolder/ 下整段会话目录。运行中的任务无法删除。
- Frontend: Next.js App Router, shadcn/ui, Lucide icons
- Backend: FastAPI, SQLite
- Download: yt-dlp
- Source separation: Demucs
- ASR: openai-whisper(默认 large-v3-turbo)+ spaCy 句子重分割
- Translation: OpenAI-compatible Chat Completions API
- TTS: VoxCPM2
- Media: FFmpeg
这是一个 MVP。当前重点是把最短链路跑通,并保持架构足够简单,方便大家阅读、运行和改造。
欢迎共建:
- 改进安装体验。
- 适配更多 TTS / ASR / 翻译模型。
- 优化字幕样式和横竖屏视频布局。
- 提升下载稳定性。
- 增加任务管理和结果管理。
- 补充不同平台的部署指南。
如果这个项目对你有帮助,欢迎 Star、Fork、提交 Issue 或 PR。也欢迎把它分享给对 AI 视频本地化、开源工具和跨语言内容传播感兴趣的人。