Chatterbox 开源语音合成快速上手指南:从零到多语言 TTS 实战
【免费下载链接】chatterboxSoTA open-source TTS项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox
Chatterbox 是 Resemble AI 开源的语音合成模型家族,覆盖多语言 TTS、零样本语音克隆与低延迟实时合成三类需求。本文带你完成安装、跑通第一条语音,并拆清每个模型的参数默认值与适用边界。读完之后,你能独立选型,并用几行代码生成带克隆音色的多语言音频,不用再靠示例文件猜参数。
🛠️ 装好环境:两条安装路径
先说结论:Python 用 3.11 最稳,依赖已在 pyproject.toml 里钉死,照装即可。项目官方在 Python 3.11(Debian 11)上开发测试,torch锁 2.6.0,transformers锁 5.2.0,混版本容易崩。
两条路径任选其一。
# 方式一:包管理器,最快 pip install chatterbox-tts# 方式二:源码安装,便于改依赖 conda create -yn chatterbox python=3.11 conda activate chatterbox git clone https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox cd chatterbox pip install -e .一行验证,能 import 就算成功:
python -c "import chatterbox; print('ok')"小贴士:首次运行
from_pretrained会从 HuggingFace 拉模型权重(Turbo 约 350M、多语言约 500M)。国内网络建议先配好镜像或HF_TOKEN,否则下载步骤会卡住。
🚀 5 行代码出第一个声音
这条示例放在所有讲解之前,目的只有一个:让你最快听到声音。用原版ChatterboxTTS,不传参考音时走内置音色,无需准备音频文件。
import torchaudio as ta from chatterbox.tts import ChatterboxTTS model = ChatterboxTTS.from_pretrained(device="cuda") # 也可 "cpu" / "mps" text = "Welcome to Chatterbox, an open-source text to speech model." wav = model.generate(text) # 返回 1 维张量 ta.save("first.wav", wav, model.sr) # model.sr 是采样率跑通这一步,你会看到:终端无报错,当前目录多出first.wav,用播放器打开是一段英文朗读。设备不支持 GPU 就把device改成"cpu",速度慢但不影响出结果。
🎯 三大核心能力拆解
零样本语音克隆:3 秒音频复刻音色
它能做什么:给一段参考语音,把任意文本用该音色念出来,不用训练。依据在prepare_conditionals——参考音会被切成说话人嵌入和语音 token 提示,长度上限由DEC_COND_LEN = 10 * S3GEN_SR控制,所以取 3~10 秒最稳。
import torchaudio as ta from chatterbox.tts import ChatterboxTTS model = ChatterboxTTS.from_pretrained(device="cuda") wav = model.generate( "你好,这是我克隆出来的声音。", audio_prompt_path="reference.wav", # 传入即启用克隆 exaggeration=0.5, # 情感夸张度 cfg_weight=0.5, # 条件引导强度 ) ta.save("clone.wav", wav, model.sr)| 参数 | 默认 | 作用 |
|---|---|---|
audio_prompt_path | None | 参考音频,传入即启用克隆 |
exaggeration | 0.5 | 情感夸张度,>0.7更戏剧化 |
cfg_weight | 0.5 | 条件引导,降到0可减少口音残留 |
temperature | 0.8 | 采样随机性 |
多语言 TTS:一个模型切换 23 种语言
它能做什么:同一个对象,改language_id就换语种,无需重载模型。依据是mtl_tts.py里的SUPPORTED_LANGUAGES,共 23 项,覆盖中文、日文、法文等。多语言版language_id是必传参数,传错会直接抛ValueError。
import torchaudio as ta from chatterbox.mtl_tts import ChatterboxMultilingualTTS # t3_model="v3" 用最新检查点;不传默认 v2 model = ChatterboxMultilingualTTS.from_pretrained( device="cuda", t3_model="v3" ) wav_zh = model.generate("你好,欢迎使用多语言语音合成。", language_id="zh") wav_ja = model.generate("こんにちは、多言語音声合成のテストです。", language_id="ja") ta.save("zh.wav", wav_zh, model.sr)常用语言代码:zh中文、ja日文、en英文、ko韩文、fr法文、de德文、es西文、ru俄文、ar阿文、hi印地文、tr土耳其文等,完整 23 项见SUPPORTED_LANGUAGES。
Turbo 低延迟合成:副语言标签让语气更真实
它能做什么:英文低延迟场景更快,并原生支持[laugh]、[chuckle]、[cough]这类副语言标签。依据是tts_turbo.py用S3Gen(meanflow=True)且n_cfm_timesteps=2,把解码从 10 步压到一步,显存占用更低。Nano(110M)与 Turbo 同类,传nano=True即可,8 核 CPU 能跑到 3 倍实时。
Turbo 采用单步解码,配合副语言标签面向低延迟语音助手场景。
import torchaudio as ta from chatterbox.tts_turbo import ChatterboxTurboTTS model = ChatterboxTurboTTS.from_pretrained(device="cuda") # 副语言标签让语气更真实:[laugh] [chuckle] [cough] text = "Hi there [chuckle], have you got one minute to chat?" # 参考音需 >5 秒,否则 assert 报错;不传则用内置音色 wav = model.generate(text) ta.save("turbo.wav", wav, model.sr)| 项目 | 说明 |
|---|---|
| 副语言标签 | [laugh][chuckle][cough]原生支持 |
| 参考音时长 | 必须>5秒,否则触发断言 |
cfg_weight/exaggeration | 不被支持,传了会被忽略并告警 |
| 解码步数 | 单步(对比原版 10 步),速度更快 |
🧩 三个落地场景
多语言客服回复
需求:同一套客服话术,按客户语种各生成一条语音。
replies = { "zh": "您好,有什么可以帮您?", "en": "Hello, how can I help you?", "ja": "こんにちは、ご用件は何ですか?", } for lang, text in replies.items(): wav = model.generate(text, language_id=lang) ta.save(f"reply_{lang}.wav", wav, model.sr)可继续扩展:接一个语种识别接口,根据用户输入动态决定language_id,再生成对应回复。
批量有声内容生成
需求:把分好的章节文本一次性转成音频文件。
articles = ["第一章 引言……", "第二章 背景……", "第三章 方法……"] for i, text in enumerate(articles): wav = model.generate(text, language_id="zh", cfg_weight=0.5) ta.save(f"chapter_{i}.wav", wav, model.sr)可继续扩展:长文按句号切段、逐段生成再拼接,避免单次文本过长。
声音克隆应用
需求:把一段已有录音换成目标人物的音色,用于虚拟主播。
import torchaudio as ta from chatterbox.vc import ChatterboxVC model = ChatterboxVC.from_pretrained("cuda") wav = model.generate( audio="input.wav", # 原始录音 target_voice_path="target.wav", # 目标音色 ) ta.save("vc_out.wav", wav, model.sr)可继续扩展:缓存set_target_voice提取的ref_dict,多个输入共用同一目标音色,省去重复编码。
⚙️ 模型选型与参数调优
先选型。五个模型参数、语言、用途如下,数据来自 README 的 Model Zoo。
| 模型 | 参数量 | 语言 | 核心特性 | 适用场景 |
|---|---|---|---|---|
| Chatterbox-Turbo | 350M | 英语 | 副语言标签、低显存、单步解码 | 低延迟语音助手、生产环境 |
| Chatterbox-Nano | 110M | 英语 | 同 Turbo 架构,8 核 CPU 3 倍实时 | 端侧 / CPU、紧预算 |
| Chatterbox-Multilingual V3 | 500M | 23+ | 说话人相似度更高、幻觉更少 | 全球化、本地化、跨语言克隆 |
| Single Language Pack | 500M×6 | 6 项专项 | 语言 / 地区方言质量控制 | 重点语言、方言敏感 |
| Chatterbox(原版) | 500M | 英语 | CFG 与 exaggeration 可调 | 通用零样本 TTS、创意控制 |
再调参。以下默认值与区间取自官方 Tips,仅对原版与多语言生效(Turbo/Nano 会忽略这些参数)。
| 场景 | cfg_weight | exaggeration | 效果 |
|---|---|---|---|
| 通用 / 日常 | 0.5 | 0.5 | 官方默认,多数语言适用 |
| 戏剧化表达 | ~0.3 | 0.7+ | 更富表现力,语速偏快 |
| 参考音语速快 | ~0.3 | 0.5 | 放慢节奏、更从容 |
| 跨语言口音残留 | 0 | 0.5 | 避免继承参考音语言口音 |
🧯 高频问题避坑
| 问题 | 原因 | 解法 |
|---|---|---|
| CUDA 显存不足 | 500M 模型 + 长文本 | 换 Turbo/Nano,或device="cpu" |
| Mac 报 MPS 错误 | PyTorch 未开 MPS 或系统过旧 | 参考 example_for_mac.py,回退mps/cpu |
| Turbo 传参考音报错 | 参考音不足 5 秒 | 换成>5秒的清晰语音 |
| 克隆音带原语言口音 | 参考音与目标语言不符 | 设cfg_weight=0,或换同语言参考音 |
| 权重下载崩溃(xet) | HF 存储后端异常 | Turbo/Nano 类已自动降级重试 |
| 生成速度慢 | 走的是 CPU 推理 | 优先 GPU;Nano 在 8 核 CPU 可达 3 倍实时 |
💡 进阶技巧
技巧一:批量生成用线程池。
import concurrent.futures texts = ["第一句", "第二句", "第三句"] def run(t): return model.generate(t, language_id="zh") with concurrent.futures.ThreadPoolExecutor() as ex: wavs = list(ex.map(run, texts)) # 逐条落盘技巧二:用完整释放显存。
import torch model = ChatterboxTTS.from_pretrained(device="cuda") wav = model.generate("测试") ta.save("t.wav", wav, model.sr) del model # 删除模型引用 torch.cuda.empty_cache() # 清空缓存显存技巧三:异常兜底,避免单条失败中断整批。
try: wav = model.generate(text, language_id=lang) except ValueError as e: # 语言代码错误等 print(f"重试默认参数: {e}") wav = model.generate(text) # 去掉语言标签兜底 except Exception as e: # 其它异常,降级朗读 wav = model.generate("合成失败,请稍后重试。")📋 一页速查
核心源码路径:
- src/chatterbox/tts.py:原版
ChatterboxTTS - src/chatterbox/mtl_tts.py:多语言
ChatterboxMultilingualTTS - src/chatterbox/tts_turbo.py:Turbo / Nano
- src/chatterbox/vc.py:语音转换
ChatterboxVC - src/chatterbox/models/:T3、S3Gen、声码器
常用命令:
pip install chatterbox-tts # 安装 python example_tts.py # 基础 + 多语言示例 python example_vc.py # 语音转换示例 python gradio_tts_app.py # 启动 Web 界面关键参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
device | str | "cuda" | 设备,cuda/mps/cpu |
t3_model | str | "v2" | 多语言检查点,v2/v3 |
language_id | str | 无 | 语言代码,多语言必传 |
audio_prompt_path | str | None | 参考音频,启用克隆 |
exaggeration | float | 0.5 | 情感夸张度 |
cfg_weight | float | 0.5 | 条件引导强度 |
nano | bool | False | 用 Nano(110M) 替代 Turbo |
下一步:运行 example_tts.py,再对照 example_vc.py 与 example_tts_turbo.py,把你自己的参考音接进去。
【免费下载链接】chatterboxSoTA open-source TTS项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考