Chatterbox 语音合成完全教程:23 种语言、3 秒声音复刻与情感调音
【免费下载链接】chatterboxSoTA open-source TTS项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox
跑通第一条生成命令后,目录里会多出几个 wav 文件:同一段法语用男声读、用女声读,中文播客腔、日语广告腔各一版,全都来自同一个 5 亿参数的模型,而复刻某个人声音时,你手里只有对方 3 秒左右的录音。Chatterbox 是 Resemble AI 开源的多语言 TTS(语音合成)项目,核心解决三件事:用 23 种语言的文本直接出声、用几秒参考音频克隆音色、用两个参数控制说话的夸张程度。
为什么值得装一台
先说它对你的实际用处,再谈细节:
- 一次装好,全球 23 种语言:中、英、日、韩、法、德、西、俄、阿拉伯语都在同一个模型里,切换只靠一个语言代码,不用为每种语言单独部署模型
- 声音复刻零门槛:3 到 5 秒清晰人声即可当参考片段,跨语言克隆(用英文素材的声音说中文)也基本稳定
- 情感有旋钮:
exaggeration控制夸张程度,cfg_weight控制语速节奏,日常、播报、戏剧化各有一套调法 - 界面现成:Gradio 可视化页面开箱即跑,不写代码也能试参数
从零跑通:装环境到出第一声音频
官方在 Python 3.11 上开发测试过,所有依赖版本都固定在 pyproject.toml 里,所以装好就能跑,不用来回查版本。
先建个独立环境:
conda create -yn chatterbox python=3.11 conda activate chatterbox然后是安装,两条路选一条:
pip install chatterbox-tts或者从源码装,适合要改代码的人:
git clone https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox cd chatterbox pip install -e .首次生成音频,参考 example_tts.py 的最小用法——先自动选设备,再加载模型、传文本、存文件:
import torch import torchaudio as ta from chatterbox.tts import ChatterboxTTS # cuda 优先,没有就退回 cpu(Mac 可写 mps) device = "cuda" if torch.cuda.is_available() else "cpu" model = ChatterboxTTS.from_pretrained(device=device) wav = model.generate("Today is a good day for a long walk.") ta.save("first.wav", wav, model.sr)第一次运行会从 Hugging Face 拉模型权重,之后就走本地缓存了。播放first.wav,出声就算跑通。
23 种语言一键切换
你要做多语言 App、给视频批量换配音,或者内容要面向不同地区,就用多语言模型。入口在 mtl_tts.py,用法和单语言版几乎一样,多传一个language_id:
from chatterbox.mtl_tts import ChatterboxMultilingualTTS mtl = ChatterboxMultilingualTTS.from_pretrained(device=device) # 想用 V3 检查点,加载时加 t3_model="v3" french = "Bonjour, comment ça va? Ceci est un test de synthèse vocale." zh = "你好,这是一个语音合成测试。" ta.save("french.wav", mtl.generate(french, language_id="fr"), mtl.sr) ta.save("chinese.wav", mtl.generate(zh, language_id="zh"), mtl.sr)支持的语言和代码一共 23 种:
| 语言 | 代码 | 语言 | 代码 | 语言 | 代码 | 语言 | 代码 |
|---|---|---|---|---|---|---|---|
| 阿拉伯语 | ar | 英语 | en | 意大利语 | it | 荷兰语 | nl |
| 丹麦语 | da | 西班牙语 | es | 日语 | ja | 挪威语 | no |
| 德语 | de | 芬兰语 | fi | 韩语 | ko | 波兰语 | pl |
| 希腊语 | el | 法语 | fr | 马来语 | ms | 葡萄牙语 | pt |
| 希伯来语 | he | 印地语 | hi | 中文 | zh | 俄语 | ru |
| 瑞典语 | sv | 斯瓦希里语 | sw | ||||
| 土耳其语 | tr |
对中文、拉美/西班牙西语、巴西/葡萄牙葡语、印地语这 6 个重点语种,官方还出了单独的专项微调模型(Single Language Pack),需要更细的口音与方言控制时可以考虑。
3 秒参考音频,复刻一个声音
你要给播客换固定主播音、把客户的一段话转成品牌声音、或者给角色配音但不想录,就是声音复刻的活儿。分两条路走:
TTS 模式换声音——文本照写,把参考音频路径塞给generate即可(完整示例见 example_vc.py):
wav = model.generate( text, audio_prompt_path="reference.wav", # 3-5 秒清晰人声 )VC 模式直接换音色——手里已经有一段音频,只想换掉说话人:
from chatterbox.vc import ChatterboxVC vc = ChatterboxVC.from_pretrained(device) wav = vc.generate(audio="speech.wav", target_voice_path="target.wav") ta.save("converted.wav", wav, vc.sr)音色特征由 voice_encoder 模块从参考音频里提取。片段短、清晰、无背景音,效果最好;3 秒左右就够,太长反而容易带进杂音。
情感调音:两个参数管掉语气
同一句"今天天气不错",可以读成平淡播报,也可以读成惊喜分享。开关就是exaggeration(夸张度)和cfg_weight(节奏权重),都直接传给generate:
calm = model.generate("警告!系统即将过载!", exaggeration=0.3, cfg_weight=0.6) drama = model.generate("警告!系统即将过载!", exaggeration=0.8, cfg_weight=0.3)几个实测取向的起点:
| 场景 | exaggeration | cfg_weight |
|---|---|---|
| 日常对话 | 0.5(默认) | 0.5(默认) |
| 情感朗读 | 0.7 及以上 | 0.3 左右 |
| 平稳播报 | 0.3 – 0.4 | 0.6 – 0.8 |
注意exaggeration调高往往会把语速带快,这时把cfg_weight往下压一点,节奏就稳了。
可视化界面:不想写代码就开 Gradio
根目录自带三个页面脚本,一条命令起来:
python gradio_tts_app.py # 文本转语音 python gradio_vc_app.py # 语音转换 python multilingual_app.py # 多语言综合应用以 TTS 页面为例:左边输入文本、上传参考音频,两个滑块分别对应exaggeration(0.25–2.0,0.5 为中性)和cfg_weight(0–1),"More options" 里还藏着 temperature、min_p、top_p、repetition_penalty 和随机种子;右边直接播放结果。调参对比靠听,页面比改代码快得多。
原理一图流
整个流水线是三段:文本进 T3、声音进编码器、两路特征合成交给 S3Gen 出波形。
三句话讲完:
- 文本由 T3 模型 转成语义 token,这一步顺带把情感、韵律信息编码进去
- 参考音频由 VoiceEncoder 提出发声人特征
- 两路特征进入 S3Gen 解码成 mel 谱,再过 HiFi-GAN 还原波形
模块文件在 src/chatterbox/models/ 下都有对应源码,想看哪段读哪段。
调优与避坑
日常对话:默认exaggeration=0.5、cfg_weight=0.5对大多数语言都够用,先别动参数。
声音复刻:参考片段的语言尽量和目标文本一致,否则输出可能带上参考片段的口音;确实要跨语言时,把cfg_weight设为 0 能减轻这种串音。参考说话人语速偏快时,cfg_weight降到 0.3 附近节奏会更稳。
戏剧化朗读:cfg_weight压到 0.3 左右、exaggeration抬到 0.7 以上;嫌语速被带快了,再回调cfg_weight。
常见问题:
- 发音发怪 → 先查
language_id是不是拼对了 - 显存不够 →
device="cpu"硬跑,只是慢,不是不能跑 - Mac 用户 → 用
device="mps",具体补丁写法见 example_for_mac.py - 文本太长 → 单段控制在 200 字内,质量更稳
最后提一句:每条生成音频都内置了 Perth 神经水印,能扛住 MP3 压缩和常规剪辑,检测准确率接近 100%。用开源模型生成声音这件事本身没问题,但别把它用在冒充他人上。
写在最后
一个模型覆盖 23 种语言、几秒音频就能复刻声音、两个参数就能调语气——这就是 Chatterbox 现在给到的。装好环境,先跑第一条generate命令,把first.wav听进耳朵里,剩下的调参就交给耳朵。
【免费下载链接】chatterboxSoTA open-source TTS项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考