开发者完整开源了一套本地电影配音工具:音频抓取→Whisper语音识别→LM Studio本地翻译→神经TTS朗读,全流程无需联网和API密钥。
最近我看了不少外国电影,遇到了大多数人都遇到的同一个瓶颈:字幕还好,但当你想欣赏视觉场景时就麻烦了;而配音版本通常听起来像是照着剧本念的。于是我想到——如果我的电脑能直接……给我做电影配音呢?实时配音?
所以我做了一个。它叫 LiveDub,初始设置完成后完全运行在本地机器上。一旦所有东西下载完毕,没有任何数据会离开你的电脑。下面是它的工作原理和开发过程中的一些细节。
它是一个四步流程,每一步都衔接到下一步:
音频捕获 — 一个浏览器扩展抓取标签页中播放的任何音频(YouTube、Netflix、通过 VLC 或任何播放器播放的本地视频文件)。它直接将音频传输到 Whisper 进行转录。
语音转文字 — OpenAI 的 Whisper 模型通过应用的 API 调用在本地运行。你会收到原始文本,语言与内容发言时的语言一致。
翻译 — 这段文本被发送到 LM Studio 的本地 LLM(任何小型模型都可以;我用的是约 2GB 的模型)。模型将其翻译成你目标语言的同时,尽可能保留上下文和语气。
文字转语音 — 一个神经语音模型大声朗读翻译后的文本。这里开始就有意思了……
这是最棘手的部分。当一个场景有多个角色时,你希望他们听起来不一样。在专业配音中,男演员为男性角色配音,女演员为女性角色配音。我想要类似的效果。
解决方案出奇地简单:测量每个说话人声音的音频 pitch。男性语音的频率通常较低(约 85-180 Hz),而女性语音则较高(165-255 Hz)。应用测量每个说话片段的主导 pitch,并相应地在男声和女声 TTS 之间切换。
这并不完美——对于声音较低沉的女性和声音较轻的男性会有边缘情况,但效果足够好,你能注意到差异但不会被它分散注意力。这恰恰是你对配音所期望的。
有时人们会问为什么最喜欢的场景没有被即时配音。答案很简单:在说完之前你无法翻译某句话。你需要至少一到两个句子的缓冲来捕获完整的意思,通过 Whisper 和翻译模型处理,然后再合成语音。
这不是我方法的限制——每家专业配音工作室都是这样工作的。这只是物理学和语言结构的限制。人类翻译也无法在句子中间进行翻译;他们会等待对话中的自然停顿。我的应用做的是同样的事情——只是以机器速度而不是翻译团队的速度进行。
整个东西是 Gumroad 上一次性 5 美元购买。无订阅、无后续云 API 调用、无需维护。它构建为一个 Windows 应用,带有一个浏览器扩展来完成从标签页捕获音频的重活。
有几件事让我惊讶:
Whisper 足够快,可以实时使用。 我曾担心转录延迟会影响体验,但在现代硬件上,相比翻译步骤,它几乎察觉不到。
本地 LLM 对粗糙翻译来说已经足够好。 它们不会达到人类语言学家的水平,但能足够好地捕捉意义和上下文,让你几乎能跟上任何内容。这里的目标是"理解正在说什么",而不是"在剧院上映"。
音频闪避比我预期的更重要。 当原声音乐在配音播放时降到 30% 音量,效果差异巨大。没有它,你会和两个音频源斗争,哪个都听不清楚。
如果你觉得这些有用,可以在 Gumroad 上以 5 美元购买。直接下载安装即可。获取 LM Studio(免费),放入你的模型(约 2GB),然后开始为你在看的内容配音。
对于这种本地优先的媒体工具的发展方向,我真心感到兴奋。现在技术已经可以完全在自己的硬件上处理语音数据——无需云端依赖、无需隐私顾虑,只是一台电脑在做它一直擅长的事:处理数据。