SRT 字幕转语音:把字幕变成配音音轨
字幕文件里已经有配音所需的一切:文字,以及每句台词应该出现的时间。把它转成语音,就能为教程、短视频或翻译后的视频生成一条与画面对齐的配音音轨,而且一句都不用录。请注意:Supertonic 3 暂不支持中文,可朗读英语、日语、韩语等 31 种语言。
免费的 SuperClonica 引擎在离线状态下用自然的声音朗读每一句,再由一个简短的 Python 脚本把它放到对应的开始时间。本指南介绍脚本、如何让过长的台词放进时间段,以及如何把音轨放到视频下面。
准备工作
引擎本身不读取 SRT 文件,大约二十行 Python 就能搞定。
- 一个 SRT 文件:来自剪辑软件、自动字幕或翻译。
- 免费的 SuperClonica 引擎和 Python 3.10 或更新版本:python -m pip install superclonica-cpu。numpy 会一并安装。
- 一个声音:十个标准声音之一、目录中的声音,或你自己训练的声音。
- 不需要显卡,普通处理器就够了。
免费试听一句
在任意声音页面粘贴一句字幕,30 到 100 个字符,选择语言并点击生成按钮。几秒后就能听到视频的效果,无需注册。
从字幕到一条音轨
在循环之前只创建一次引擎:加载需要几秒,每句只需不到一秒。
- 读取文件:每条字幕由序号、包含开始和结束时间的一行以及文本组成。
- 逐条朗读:audio, sample_rate = tts.synthesize(text, voice="F2", lang="en", seed=7)。
- 创建一个与视频等长的静音 numpy 数组,把每句语音加到其字幕开始的采样点:开始秒数乘以采样率。
- 用 tts.save("track.wav", track) 保存结果。
放不下的台词
把每句语音的时长和它所在字幕的时长并排打印出来。语音比时间段长时,会与下一句重叠。先缩短文本;把两条短字幕合并成一条;或者创建一个稍快的引擎,例如 Superclonica(speed=1.15),允许范围为 0.7 到 2.0。相同的文本、声音和 seed 总会得到相同的音频,所以可以只改一句再重新生成音轨。
把配音放到视频下面
把 track.wav 作为音轨导入剪辑软件,或用一条命令与视频合并:ffmpeg -i video.mp4 -i track.wav -map 0:v -map 1:a -c:v copy -c:a aac voiced.mp4。如果想在配音下面保留音乐或音效,就把原声放在第二条音轨上。只为你自己的视频或已获许可的视频配音,未经同意不要使用模仿真实人物的声音。