
Chatterbox语音合成实战零样本声音克隆从参考音频到多语言生成【免费下载链接】chatterboxSoTA open-source TTS项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterboxChatterbox 是 Resemble AI 的开源文本转语音TTS模型家族解决的核心问题只有一个给一段十几秒的参考录音不训练、不微调直接让这个人说任何你想说的话。仓库里的入口类有三个——ChatterboxTurboTTS低延迟英语、ChatterboxMultilingualTTS23 种语言、ChatterboxVC纯音色转换分别对应不同的部署场景。选对模型入口再安装避免加载一半才发现跑不动三个模型共享同一套代码路径但入口和参数差异不小选型先看这张表入口类参数量语言适合场景ChatterboxTurboTTS默认350M英语语音代理、对延迟敏感的生产环境ChatterboxTurboTTSnanoTrue110M英语端侧 / CPU 推理8 核 CPU 约 3 倍实时ChatterboxMultilingualTTS500M23跨语言本地化、多语言声音克隆Turbo 之所以比原始 Chatterbox 快是因为把语音 token 到 mel 频谱的解码步骤从 10 步蒸馏到了 1 步计算量和显存占用都更低同时支持[laugh]、[chuckle]、[cough]这类原声标签。pip install chatterbox-tts依赖版本在pyproject.toml里是锁死的torch 2.6.0、librosa 0.11.0 等官方测试环境是 Python 3.11 Debian 11。如果你在别的 Python 版本上装出问题先怀疑依赖冲突而不是代码。两个容易踩的点模型权重不是随 pip 包装的首次调用from_pretrained时会从 Hugging Face 拉取如ResembleAI/chatterbox-turbo需要外网内网环境要先离线下载再走from_local。macOS 传devicemps即可MPS 不可用时代码会自动回落到 CPU不会崩。一条参考音频跑通克隆并处理好实例状态克隆的完整调用只有三步加载模型、传参考音频、保存波形。import torchaudio as ta from chatterbox.tts_turbo import ChatterboxTurboTTS model ChatterboxTurboTTS.from_pretrained(devicecuda) wav model.generate(text, audio_prompt_pathref_10s.wav) ta.save(out.wav, wav, model.sr)参考音频有两个硬约束都写死在prepare_conditionals里时长必须大于 5 秒直接 assert解码条件只取前 10 秒DEC_COND_LEN 10 * S3GEN_SR更长的片段会被截掉。所以录 10 秒左右的干净人声最划算。Turbo 还会先做响度归一化目标 -27 LUFS参考音频底噪大、音量忽高忽低时输出质量会明显变差。不传audio_prompt_path也不是不能跑——Turbo 和 Nano 的 checkpoint 里带了内置音色conds.ptexample_tts_turbo.py就是这么写的。但其他模型不带默认音色此时必须先手动调prepare_conditionals否则直接 assert 报错。这里有个并发相关的坑prepare_conditionals会把说话人条件写进实例的self.conds模型对象本身是有状态的。同一个实例连续给不同说话人克隆会互相覆盖做成服务时要么每个请求用独立实例要么加锁串行化。想验证行为先看src/chatterbox/tts_turbo.py里generate的开头几行。调 exaggeration 和 cfg_weight再切到多语言模型原始 Chatterboxsrc/chatterbox/tts.py给了两个最影响听感的旋钮exaggeration默认 0.5情感强度。调高会更有表现力但语速也会跟着变快。cfg_weight默认 0.5引导强度。想慢下来、更稳降到 0.3 左右可以补偿 exaggeration 带来的加速。Turbo 是例外cfg_weight、min_p、exaggeration在它身上无效传了只会打一条 warning 然后忽略源码里hp.emotion_adv False写死了。想控制 Turbo 的语气靠原声标签更直接比如文本里写 calling you back [chuckle], have you got one minute?。多语言模型是另一个类、另一套参数签名language_id必传且做显式校验传错会直接列出全部支持的语言码from chatterbox.mtl_tts import ChatterboxMultilingualTTS model ChatterboxMultilingualTTS.from_pretrained(devicecuda, t3_modelv3) wav model.generate(Bonjour, comment ça va ?, language_idfr)三个要点不传t3_model或传v2加载的是旧版 checkpointV3 在说话人相似度和幻觉抑制上更好新项目建议显式指定t3_modelv3。支持 23 种语言ar、zh、ja、ko、fr、de 等列表定义在src/chatterbox/mtl_tts.py的SUPPORTED_LANGUAGES里。跨语言克隆有口音继承问题参考音频是英语、目标语言是法语时输出会带英语口音。官方给的缓解办法是把cfg_weight设为 0。生成物自带水印用 perth 库验证所有入口类的generate返回前都会经过perth.PerthImplicitWatermarker嵌入水印src/chatterbox/tts.py的__init__里初始化这是不可感知的神经水印MP3 压缩和常规剪辑后仍可检出官方标注检测准确率接近 100%。如果你的应用要对外分发音频建议加一步自检确认水印在位import perth, librosa audio, sr librosa.load(out.wav, srNone) wm perth.PerthImplicitWatermarker().get_watermark(audio, sample_ratesr) print(wm) # 0.0 无水印 / 1.0 已嵌入perth来自resemble-perth依赖装包时已带上。另外注意generate返回的是单声道、采样率为model.sr的张量保存时别自己再传采样率。下一步建议先用example_tts_turbo.py不传参考音频跑通内置音色确认环境没问题再换自己的 10 秒参考音频验证相似度是否达标。这两步都过了才值得去碰 exaggeration、多语言这些调参层面的事。【免费下载链接】chatterboxSoTA open-source TTS项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考