VoiceCraft 上手指南:10 秒音频如何编辑已有语音,零样本 TTS 实操与避坑清单
【免费下载链接】VoiceCraftZero-Shot Speech Editing and Text-to-Speech in the Wild项目地址: https://gitcode.com/GitHub_Trending/vo/VoiceCraft
有声书录完了,结果讲述人在一句话里读错了一个词——按传统后期流程,得把整章重新录一遍。VoiceCraft 只需要把错句区间蒙上、输入正确文本,模型就会用同一个音色把这段补出来。这个做零样本语音编辑和文本转语音(TTS)的工具,还能直接处理播客、网络视频这类带环境声的真实录音。
📌 项目速览
- 是什么:一个基于"令牌填充"(token infilling)神经编解码语言模型的语音编辑 + 零样本 TTS 开源项目,配了 Gradio 网页界面和命令行脚本。
- 核心能力:几秒参考音频就能克隆或编辑一个没见过的声音;对任意文本做零样本 TTS;Gradio 里还有 Long TTS 模式可整篇长文分段合成。
- 训练数据是"在野"录音:有声书、网络视频、播客,所以真实带噪音频也能处理,而不是只对录音棚干声友好。
- 适合谁:声音后期/有声书制作、想免费克隆音色的应用开发者、想训练或微调语音模型的研究者。
- 硬件:完整本地跑需要 NVIDIA GPU;先在线上体验则无门槛。
🚀 最快上手路径:先跑通 Colab
官方 README 把 Colab 列为最简单方式:在 Google Colab 里运行项目提供的推理 notebook(语音编辑和 TTS 各有一个,说明写在 README 的 QuickStart 部分),按 cell 提示选模型、传参考音频、填目标文本,跑完直接听结果,全程不用装环境。
确认效果后再考虑本地部署。克隆仓库:
git clone https://gitcode.com/GitHub_Trending/vo/VoiceCraft cd VoiceCraft conda create -n voicecraft python=3.9.16 && conda activate voicecraft # 依赖按 environment.yml 安装后,启动本地网页界面: pip install -r gradio_requirements.txt && python gradio_app.py浏览器打开 127.0.0.1:7860 就是 Gradio 界面:选模型 → 加载 → 转写 → 跑 TTS / 编辑 / Long TTS。嫌手动装依赖麻烦就用 Docker:docker build --tag voicecraft .后执行start-jupyter.sh(Linux)或start-jupyter.bat(Windows),细节在 README。
🔍 它到底怎么做到的:把语音当"填空题"
两个类比就能说清原理。
第一,语音先变成数字序列。项目用 Encodec 神经音频编解码器把音频压成一串离散码(项目自训版本是 56M 参数、4 个码本 × 2048 码),文本则由 phonemizer 转成音素序列。模型全程不碰波形,只在"序列"上工作——和语言模型处理文字是一个思路。
第二,编辑就是填空题。语音编辑时,把目标区间蒙掉,模型拿到"前面的原音频 + 后面的原音频 + 这段要说的话",只补出被蒙住区间的缺失码;上下文保证了新内容和前后的音色、节奏自然衔接。TTS 则是填空题的特例:只有几秒参考音频加目标文本,整个区间都是空白,全靠参考音色"续写"。生成完再由编解码器解码回波形。
关键目录就这几个:data/ 负责音素化和音频编码,models/ 是主模型与码本延迟模式(主定义在 models/voicecraft.py),steps/ 管训练与优化器,示例入口是 inference_tts.ipynb、inference_speech_editing.ipynb 和可独立集成的 tts_demo.py。
⚠️ 能力边界与真实表现
- 只支持英文:文本侧用的是 english_us_arpa 音素体系,中文开箱即用不了。
- 长度有上限:训练时长超 16 秒的语句被丢弃了,官方建议"参考 + 生成长度" ≤ 16 秒;长文本要靠 Gradio 的 Long TTS 分段绕开。
- 绑定特定 Encodec 权重:静默码等推理细节是针对项目提供的编解码器 checkpoint 调的,换自己的 codec 必须重新配置。
- 速度不算快:README 的 TODO 里"提升效率"仍未勾掉,推理可用 kvcache 换取 4~8 倍加速。
- 授权注意:代码为 CC BY-NC-SA 4.0,限非商业;模型权重另有 Coqui 模型许可证(LICENSE-CODE、LICENSE-MODEL)。
🛠 进阶玩法:想深入可以做的三件事
- 调采样参数:生成用 top_k / top_p / temperature 控制。项目更新日志明确写了:把 top_p=1 换成 top_k=40 后编辑和 TTS 质量大幅变好,这是官方验证过的组合;出循环复读声时再配合
stop_repetition(默认连续重复 2 次即停)。 - 长文本分段合成:用 Gradio 的 Long TTS 模式整篇合成,某段不满意可以只重跑那一段,不用从头再来。
- 用私有数据微调:流程是"备音频+转写 → data/phonemize_encodec_encode_hf.py 提取音素和编码 → 组装 manifest → 跑 z_scripts/ 里的脚本(如
e830M.sh)"。微调建议用 AdamW;若新数据引入原词表没有的音素,记得扩text_vocab_size并处理 text_embedding 权重的形状。
🩹 常见问题排查
- torch / xformers / CUDA 版本打架:别猜版本,直接对 environment.yml 装,或干脆留在 Colab / Docker 里跑。
- 提取编码阶段爆显存(训练数据准备时):按 README 建议调小
--batch_size和--max_len。 - 生成的语音卡顿或复读:先确认采样参数用的是 top_k=40 这套组合,再查
stop_repetition;参考音频尽量清晰无噪。 - 本地 Gradio 起不来:espeak、festival 及 libasound2 等系统音频库要先装好,再装
gradio_requirements.txt,这一步最常被跳过。
如果你要改的是已有录音里的个别错误、或想不录一条音频就克隆音色,从 Colab 开始听效果;满意了再迁到本地 GPU,用自己的数据微调成真正能日常用的工具。
【免费下载链接】VoiceCraftZero-Shot Speech Editing and Text-to-Speech in the Wild项目地址: https://gitcode.com/GitHub_Trending/vo/VoiceCraft
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考