开始之前
配音就是把视频里的话换成另一种语言的话,可以拆成四件事。转写:把原来的语音变成文字。翻译:翻译这段文字。说出来:用一个声音把译文说出来。对齐:把新的音频对到视频上,画面里有人说话时,这包括口型同步。每一步的结果都交给下一步,所以转写里的一个错误,会变成声音里的一个错误。
前面两课讲了声音。文字转语音是你说出译文的办法,声音克隆是在对方同意的前提下保留原说话人声音的办法。请用你自己做的视频,或者你有权翻译的视频,并且先拿其中 30 秒来试。
第 1 步:转写语音
配音从文字开始。OpenAI 的文件转写指南说,转写原语言的录音,先用 gpt-transcribe。文件最大 25 MB,格式可以是 mp3、mp4、mpeg、mpga、m4a、wav 或 webm。视频更长的话,指南说要压缩音频,或者切成每块不超过 25 MB 的片段,而且不要切在一句话的中间。
有三个可选字段,帮助识别名字和术语。prompt 用平常的话给出背景,keywords 列出你预计会听到的确切词语,languages 写出说话用的语言。指南把关键词称作提示,不是必须出现的输出,所以要检查它们是有帮助,还是让没说过的词冒了出来。下面的请求是指南里的示例,换了文件名和示例词。
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F model="gpt-transcribe" \
-F file="@/path/to/file/talk.mp3" \
-F 'prompt=A product demo for a note-taking app called Notely.' \
-F 'keywords[]=Notely' \
-F 'languages[]=en'- 返回的是 JSON,转写文字在
text里,languages列表装着检测到的语言代码。检测不可靠时,这个列表是空的。 - 想把音频留在自己的电脑上,就用 Whisper。它的代码和权重都是 MIT 许可,用
pip install -U openai-whisper安装,需要装好 ffmpeg。whisper audio.mp3 --model turbo就能转写,README 说默认设置转写英语效果很好。 - 指南里关于逐词时间戳和字幕格式的示例,用的都是已弃用的模型,这些模型会在 2027 年 2 月 26 日停用。需要带时间的文字,就用自己会对齐单词的工具,比如下面的 VideoLingo。
- 视频播放的同时把转写读一遍。这里的每个错误,都会被抄进译文和声音里。
第 2 步:翻译转写稿
拿到译文有三条路。Whisper 可以把语音直接翻译成英语:whisper japanese.wav --model medium --language Japanese --task translate。它的 README 警告说,即使设了 --task translate,turbo 模型仍然返回原语言,所以要用 medium 或 large。
OpenAI 较早的 /v1/audio/translations 接口,同样只把录音翻译成英语文字,指南把它列为已弃用,2027 年 2 月 26 日关停。对还在说着的话,指南指向 gpt-realtime-translate,它在说话人说话的同时,流式返回译文音频和转写文字。每种目标语言要开一个会话,所以英语译西班牙语、英语译法语要两个会话。
其他语言组合,以及已经录好的音频,就把转写稿交给聊天模型。这条提示词是本课自己写的,不是哪家厂商的。一次贴几行带编号的字幕。
把下面的字幕行从英语翻译成西班牙语。
保持编号和行数不变。
每一行的长度尽量接近原文,因为配音要在同样长的时间里说完。
这些词保留英文:Notely、workspace。
只返回带编号的行。
1. Welcome to Notely.
2. In this video, I will show you how to share a workspace.- 保留编号,这样每一行译文都能对回它的时间戳。
- 给出一份名字和术语的词表,这些词保留英文。VideoLingo 用自定义加 AI 生成的术语,目的相同:让译文从头到尾连贯。
- 要求译文行的长度和原文差不多。README 说,配音的时间对不对,取决于译文、语音服务和语速。
- 配音之前,请懂这门语言的人读一遍。README 说,翻译质量取决于源音频、语言和所选的模型。
第 3 步:说出译文
这就是第一课的文字转语音,每一行跑一次。选一个现成的声音,或者按第二课讲的,在对方同意的前提下克隆说话人的声音。OpenAI 的指南说,它的声音针对英语优化,其他语言则遵循 Whisper 的语言清单。VideoLingo 说,它能配的语言取决于你选的语音方式,并列出 OpenAI、Fish Audio、SiliconFlow 的 Fish 和 CosyVoice2、GPT-SoVITS、Edge TTS 和 F5-TTS,另有一个自定义适配器。
它的 README 里有两条限制在这里要紧。调整语速不能保证说得自然,也不能保证完全同步。本课的建议由此而来:一句话太长、放不进它的时间段,就在译文里缩短,不要靠加快语速。另外,README 还说,配音流程不会自动给每个说话人分配不同的声音,所以两个人的访谈,要把每个人的台词分开配。
第 4 步:口型同步,只在画面里有人脸时才做
换了新的话,嘴形也该跟着变。口型同步模型会改动视频里的人脸,让它对上新的音频,Wav2Lip 的 README 说它适用于任何人、任何声音和任何语言。如果说话人不在画面里,或者视频放的是幻灯片或屏幕录像,这一步就跳过。
下面三个开源项目,最大的差别在许可。Wav2Lip 的命令展示了这件事的样子:输入一段视频、一个音频文件和一个检查点,结果落在 results/result_voice.mp4。它的 README 说,音频可以是 ffmpeg 能读的任何文件,包括视频。
python inference.py --checkpoint_path <ckpt> --face <video.mp4> --audio <an-audio-source>| Wav2Lip | MuseTalk | LatentSync | |
|---|---|---|---|
| README 里写的许可 | 只限研究、学术和个人使用 | 代码是 MIT,模型“可用于任何目的,包括商用” | README 没有写,要去仓库里查 |
| README 写明的硬件 | 没有写 | 在 4 GB 显存的笔记本显卡上用 fp16 测过,8 秒视频约要 5 分钟 | 1.5 版要 8 GB,1.6 版要 18 GB |
| 怎样启动 | 上面的 inference.py 命令 | python app.py 打开一个 Gradio 页面 | python gradio_app.py 打开一个 Gradio 页面 |
| README 里的一条建议 | 720p 常常比 1080p 效果好 | 输入视频用 25 帧每秒 | inference_steps 取 20 到 50:越高画质越好,运行越慢 |
来源:GitHub: Rudrabha/Wav2Lip README (2026年11月6日 查阅);GitHub: TMElyralab/MuseTalk README (2026年11月6日 查阅);GitHub: bytedance/LatentSync README (2026年11月6日 查阅)
一个工具做第 1 到 3 步:浏览器里的 VideoLingo
VideoLingo 是一个 Apache 2.0 许可的项目,在一个 Streamlit 界面里把语音识别、字幕翻译、分段和配音合在一起。它生成字幕文件,你要的话也能生成带字幕或配好音的视频。它支持的输入语言有英语、俄语、法语、德语、意大利语、西班牙语、日语和中文。在 Windows 上,README 给了一条一键的路。
git clone https://github.com/Huanshere/VideoLingo.git && cd VideoLingo
uv run start.py- 上面两行是 README 给 macOS、Linux 和 Windows 从源码安装的办法。以后要启动,就在文件夹里再运行一次
uv run start.py。 - 语音识别默认在你的电脑上运行。如果你在侧边栏选了云服务,README 说你的音频会发给那家服务,并可能产生费用。
- 从项目 GitHub 页面的最新 Release 下载 Source code (zip),解压并打开文件夹。
- 双击
OneKeyStart.bat,并让这个窗口一直开着。第一次运行会安装 uv、Python 3.12、各种依赖和 FFmpeg,需要联网。 - VideoLingo 在浏览器里打开后,在侧边栏填入你的 API 地址、密钥和模型。模型要来自兼容 OpenAI 的聊天服务,并且能返回流程需要的结构化 JSON。
- 先拿一段短视频试,打开配音之前,先读它生成的字幕。
每一步在哪里出错
VideoLingo 的 README 列了一份当前的限制,Whisper 的 README 又补了一条。不管你用哪个工具,它们都是一份不错的地图,标出配音容易在哪些地方坏掉。
| 步骤 | 会出什么错 | 先检查什么 |
|---|---|---|
| 转写 | 背景噪声和各语言专用的对齐模型,会影响识别和逐词时间戳 | 把最吵的那一幕和它的字幕对比,并且先试试把人声和音乐分开 |
| 转写 | 数字和符号可能没有可靠的逐词时间 | 把每一行带数字的字幕都读一遍 |
| 转写 | Whisper 的表现因语言差别很大 | 整段视频之前,先用你的语言试一小段 |
| 转写 | 混合语言的说话,不能保证每种语言的文字和时间都准确 | 在语言变化的地方把视频切开 |
| 翻译 | 聊天模型的回复必须满足流程的 JSON 结构 | 运行失败时,README 说要先检查 output/gpt_log/error.json,不要一上来就删掉所有输出 |
| 说出来 | 时间和表达取决于译文、语音服务和语速 | 先听最长的那几句,并缩短它们的译文 |
| 说出来 | 不会自动给每个说话人分配单独的声音 | 每个说话人的台词单独配 |
发布之前,先检查配音
把配音和原片放在一起播放,看四件事。
- 漂移。把每一场景的结尾和原片对比,因为说得太长的声音,会在那里落后于画面。
- 名字和数字。这些是转写最容易漏的词,价格或日期里错一个数字,就是真正的错误。
- 母语者的耳朵。请一位说目标语言的人,开着声音听一遍。
- 披露。OpenAI 的文字转语音指南说,它的使用政策要求向最终用户清楚披露这个声音是 AI 生成的,自定义声音指南则要求你保留任何来源元数据和水印。
- 音频去了哪里。云服务会收到这段录音:VideoLingo 的 README 说,音频会发给你选的服务,还可能产生费用。上传之前,请读那家服务自己关于音频的条款。
常见错误
- 还没拿一小段试过,就给整段视频配音。
- 跳过读转写稿这一步,结果每句话里都有一个错的名字。
- 逐字翻译,结果一句话还没说完,声音的时间就用完了。
- 把
--model turbo和--task translate一起用,得到的还是原语言。 - 在不分配声音的工具里,给两个说话人用同一个声音。
- 在付费项目里用 Wav2Lip,而它的 README 禁止商用。
- 漏掉告诉观众这个声音是 AI 生成的那一句。
动手试试
- 剪一段只有一个人说话的 30 秒片段,用
gpt-transcribe或whisper --model turbo转写,并标出每一处错误。 - 用上面的提示词翻译转写稿,再请懂这门语言的人读一遍。
- 安装 VideoLingo,只生成字幕,再和你自己的转写稿对比。
- 给最长的三句话配音,并把每一句的时长和原片对比。
下一门课:Vibe coding 入门
你现在能做出语音、声音、歌曲和配音了。Vibe coding 入门是另一种创作:你向 AI 工具描述一个应用,再检查它交回来的东西。
自测一下
配音的四件事按什么顺序做?
查看答案
C. 转写、翻译、说出来、对齐 先要有文字,才能翻译,先要有译文,声音才能说出来。把音频对到画面上放在最后。
即使设了 --task translate,Whisper 的哪个模型仍然返回原语言?
查看答案
D. turbo README 说 turbo 没有为翻译训练过,翻译要用 medium 或 large。
Wav2Lip 的 README 允许怎样使用?
查看答案
A. 只限研究、学术和个人使用 README 说,它的结果只应用于研究、学术或个人用途,任何形式的商业使用都被严格禁止。
VideoLingo 的配音流程会自动给每个说话人分配单独的声音吗?
查看答案
B. 不会,它不会自动分配 README 把这一条列在当前的限制里,所以有多个说话人的视频,要手动给每个人的台词配音。
常见问题
怎样用 AI 把视频配成另一种语言?
从小处开始。让一个说话人、一种语言走完每一步,把结果和原片并排播放,满意了再对整段视频重复一遍。上面的步骤列出了每一步,以及它容易在哪里出错。
有没有免费的 AI 配音工具?
VideoLingo 可以按 Apache 2.0 许可免费下载,并在你自己的电脑上运行。它调用的服务,比如用你的 API 密钥访问的聊天模型,或者云端语音服务,可能向你收费,所以开始之前要逐个确认。
Whisper 能翻译成英语以外的语言吗?
README 里的翻译示例,目标语言只有英语一种。想译成别的语言,就先转写,再请聊天模型翻译转写稿。
我需要口型同步吗?
只有说话人的嘴看得见时才需要。幻灯片、屏幕录像或者说话人不在画面里,用旁白就够了。先看许可,因为 Wav2Lip 的许可是非商业的。
我能给配音选哪些语言?
上限在声音,不在翻译。Chatterbox 的 Multilingual V3 列出 23 种以上语言,不过这个项目已在 2026 年 8 月退役,OpenAI 的声音则是针对英语调校的。翻译成某种语言之前,先看你选的声音支持哪些语言。
资料来源
- OpenAI API docs: File transcription https://developers.openai.com/api/docs/guides/speech-to-text
- OpenAI API docs: Live translation https://developers.openai.com/api/docs/guides/realtime-translation
- OpenAI API docs: Text to speech https://developers.openai.com/api/docs/guides/text-to-speech
- OpenAI API docs: Custom voices https://developers.openai.com/api/docs/guides/custom-voices
- GitHub: openai/whisper README https://github.com/openai/whisper
- GitHub: Huanshere/VideoLingo README https://github.com/Huanshere/VideoLingo
- GitHub: Rudrabha/Wav2Lip README https://github.com/Rudrabha/Wav2Lip
- GitHub: TMElyralab/MuseTalk README https://github.com/TMElyralab/MuseTalk
- GitHub: bytedance/LatentSync README https://github.com/bytedance/LatentSync
- GitHub: resemble-ai/chatterbox README https://github.com/resemble-ai/chatterbox
