用 VoiceCraft 实现 3 种零样本语音合成与语音编辑做法:几秒参考音频快速上手 TTS
【免费下载链接】VoiceCraftZero-Shot Speech Editing and Text-to-Speech in the Wild项目地址: https://gitcode.com/GitHub_Trending/vo/VoiceCraft
VoiceCraft 是一个开源的零样本语音编辑与 TTS(文本转语音)工具:只凭几秒参考音频,就能克隆或编辑你从未见过的声音,无需针对特定声音训练。如果你在做有声书、播客或虚拟助手,想快速修正一处读错的发音、或让新文本用参考人的声音念出来,这篇文章能帮你在几小时内跑通它。
先解决什么问题
做过有声书的朋友大概都遇到过这种糟心事:一整章录完了,只有中间几秒读错了一个词。传统做法是重录,而重录很难和原录音的音色、底噪、混响完全一致。VoiceCraft 的语音编辑模式恰好干这件事——你给出原音频和改词后的文本,它只重新生成出错的那几秒,并尽量让前后听不出拼接痕迹。
另一种常见需求:播客开场白想换成另一位嘉宾的声音念,但你没法进棚。用它的零样本 TTS 模式,只要那位的几秒清晰录音做参考,就能让目标文本用类似的声音生成出来。除了这两种模式,它还支持长文本转语音,方便处理整段稿件。
十分钟上手
三种入口按省事程度排列:Colab 最省心,Docker 适合固定环境,本地 conda 环境自由度最高,适合要二次开发的你。
Colab(在线,最省事)
打开 README 里的 Colab notebook(语音编辑、TTS 两个入口),按页面提示运行即可,无需装任何依赖。跑起来后你能看到:上传一段参考音频、输入目标文本,直接在页面里播放生成结果。
Docker(固定环境,适合 Linux/Windows)
git clone https://gitcode.com/GitHub_Trending/vo/VoiceCraft cd VoiceCraft && docker build --tag "voicecraft" . ./start-jupyter.sh # Windows 用 start-jupyter.bat跑起来后你能看到:docker logs jupyter底部会给出一个 URL,浏览器打开即可逐个单元格运行 inference_tts.ipynb,并听到合成音频。
本地 conda 环境(自由度最高)
conda create -n voicecraft python=3.9.16 && conda activate voicecraft pip install phonemizer==3.2.1 # 完整依赖见 environment.yml python tts_demo.py跑起来后你能看到:终端生成一段 wav,用默认示例参数(参考音频 + 目标文本)直接产出 TTS 结果。
它是怎么做到的
整条链路可以概括成「输入 → 处理 → 输出」四步。
输入:你提供参考音频和目标文本。文本先被转成音素(语音学上的最小发音单位,可以理解为比汉字/字母更细的"发音颗粒"),这一步由 data/phonemize_encodec_encode_hf.py 和 data/tokenizer.py 处理。
编码:参考音频不是直接喂给模型的,而是先用 EnCodec 这种神经音频编解码器压成一串离散令牌(token),相当于给音频"数字化成单词"。训练数据准备同样由data/目录下的脚本完成。
模型生成:VoiceCraft 的核心是一个"令牌填充"式语言模型——它看着参考音频的令牌和目标音素序列,在缺失的位置逐词填上新的音频令牌,就像完形填空,主模型定义在 models/voicecraft.py。
输出:生成的令牌再被 EnCodec 解码器还原成真实音频波形,你听到的就是这一步的产物。
进阶玩法
几条能直接改善效果的操作建议:
- 参考音频选短而干净的:几秒即可,但要无背景噪音、无其他人声。参考越干净,模型能提取的音色特征越明确,克隆相似度越高。
- 控制总长度不超过 16 秒:按 README 说明,当前模型训练时丢弃了超过 16 秒的语句,"参考音频 + 生成内容"合计尽量控制在 16 秒内,效果最稳。
- 采样参数优先用 top_k=40:README 的 News 提到,把推理采样从 top_p=1 改为 top_k=40 后,编辑和 TTS 表现都有改善,这是目前推荐默认值;temperature 方面 tts_demo.py 里注释建议 0.9 比 0.8 更好。
- 长文本分段合成:用 Gradio 界面的 Long TTS 模式,先生成整段,再逐段(part-by-part)重跑不满意的部分,比一次生成整篇长文更容易控制质量。
- 编辑前先听对齐结果:语音编辑会先用 MFA 强制对齐定位要改的片段,对齐文件生成在 demo 临时目录里,确认定位准确再跑生成,能避免"改错了位置"。
常见坑
现象:本地装依赖时版本冲突、脚本报错。原因:项目对 torch、xformers、phonemizer 等组件版本敏感。解决:以 environment.yml 里的精确版本为准逐项安装,而不是随手 pip 最新版。
现象:跑语音编辑时报 MFA(Montreal Forced Aligner,强制对齐工具)相关错误。原因:本地环境没装 MFA,或没下载英文词典和声学模型。解决:按 README 的 Environment setup 执行mfa model download dictionary/acoustic english_us_arpa两条命令补齐资源。
现象:准备训练数据时显存爆掉(OOM)。原因:EnCodec 编码大批量长音频时占用峰值高。解决:按 README 提示调小batch_size和max_len参数重跑即可。
现象:生成音频和参考人声音不像、有"塑料感"。原因:参考音频带噪、太长,或参考+生成总长超出模型舒适区。解决:换一段 3~6 秒的干净单人录音做参考,并把总长度压到 16 秒内。
去哪继续
- inference_tts.ipynb:零样本 TTS 推理示例,逐格运行就能看到完整生成流程。
- inference_speech_editing.ipynb:语音编辑推理示例,演示如何指定音频片段和目标文本。
- gradio_app.py:交互式 Web 界面,运行
python gradio_app.py后在 127.0.0.1:7860 打开,适合反复对比不同参数效果。 - README.md:训练、微调、模型下载等完整说明都在这份文档里。
项目本身还在迭代中(如推理采样策略、增强版模型权重都有更新记录),留意 README 的 News 部分即可获取最新进展。
写在最后
一句话总结:VoiceCraft 让你用"听写填空"的方式玩语音——给几秒参考音频,改一个词、念一段新文本,都不需要为某个声音专门训练。下一步建议:先用 Colab 把 TTS 和语音编辑各跑一次找到感觉,再按你的需求决定是否落到 Docker 或本地环境做集成。跑通第一个样例后,上面的参数建议可以帮你把效果再往上抬一档。
【免费下载链接】VoiceCraftZero-Shot Speech Editing and Text-to-Speech in the Wild项目地址: https://gitcode.com/GitHub_Trending/vo/VoiceCraft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考