Chatterbox 多语言语音合成入门:装好 5 分钟,克隆声音只要 3 秒
【免费下载链接】chatterboxSoTA open-source TTS项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox
Chatterbox 是 Resemble AI 开源的 TTS(文本转语音)模型,约 0.5B 参数、Llama 架构,一次加载就能做多语言合成、基于约 3 秒参考音频的声音克隆,还能把语气浓度随手调高调低。读完这篇,你手上应该有一个装好的环境:能用默认音色合成第一句话,能把同一句文本切成中文或法语朗读,能用一段几秒的录音换掉说话人,还能让语气从平稳播报推到戏剧化朗读。
它凭什么值得关注
- 23 种语言一个模型:从中文、英语到日语、阿拉伯语,靠一个
language_id参数切换,不需要换模型或单独训练。 - 3 秒声音克隆:零样本方式复刻音色,给一段几秒的参考音频就行,声音特征提取由独立的 voice_encoder 模块完成。
- 情感浓度可调:
exaggeration一个参数控制"演得多开",同一段文字能在新闻腔和朗读腔之间滑动。 - 部署门槛低:约 0.5B 参数(Llama 架构),有 NVIDIA 卡走 CUDA、没有卡跑 CPU、Mac 走 MPS,普通开发机都够。
5 分钟拿到第一句语音
项目基于 Python 3.11 开发,先建个 conda 环境隔离,避免依赖冲突。安装走 PyPI 包或源码二选一,版本约束都锁在仓库根的 pyproject.toml 里,照抄即可。
# PyPI 安装(推荐) 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 .装完直接合成第一句。from_pretrained首次运行会拉取模型权重,耐心等一次;generate返回的是 PyTorch 张量,配合 torchaudio 按采样率落盘就是 WAV 文件。
import torch, torchaudio as ta from chatterbox.tts import ChatterboxTTS device = "cuda" if torch.cuda.is_available() else "cpu" # 有 NVIDIA 卡用 CUDA,否则回退 CPU model = ChatterboxTTS.from_pretrained(device=device) wav = model.generate("Hello, this is Chatterbox.") ta.save("hello.wav", wav, model.sr)跑完在目录里得到 hello.wav,默认音色开箱即用。Mac 用户把设备判断里的条件换成torch.backends.mps.is_available()(需 PyTorch 2.0+),完整写法参考 example_for_mac.py。上面这段的完整版脚本在 example_tts.py,多语言示例也写在同一个文件里。
三个真实任务上手
下面三个任务共用上面定义的device和ta(torchaudio),不再重复 import。
切换语言合成
目标:同一个模型对象,换language_id就能切语种,不用重新加载模型。多语言入口是 mtl_tts.py 里的ChatterboxMultilingualTTS,它和单语言模型是两套独立的 checkpoint。
from chatterbox.mtl_tts import ChatterboxMultilingualTTS model = ChatterboxMultilingualTTS.from_pretrained(device=device) wav = model.generate("你好,这是多语言语音合成测试。", language_id="zh") ta.save("zh.wav", wav, model.sr)调参提示:language_id传小写语言代码(如 zh、fr),它也是generate的必填参数,和单语言模型混用会直接缺参。传了不支持的代码会抛ValueError,报错里会列出全部可用代码,照着改就行。
用 3 秒音频克隆声音
目标:把"说什么内容"和"谁来发音"拆开——内容随便给一段音频,音色只来自你要复刻的那段参考录音。对应脚本是 example_vc.py。
from chatterbox.vc import ChatterboxVC vc = ChatterboxVC.from_pretrained(device=device) wav = vc.generate(audio="my_speech.wav", target_voice_path="ref.wav") ta.save("cloned.wav", wav, vc.sr)调参提示:my_speech.wav是被转换的原始语音,ref.wav才是定音色的参考音频,要求人声清晰、无背景噪音,时长落在 3~10 秒区间内相似度最稳。内部流程是把内容音频先转成语音 token,再由目标音色重新解码成波形,所以原句子的内容和节奏会被保留、只换掉声音本身。
调节情感浓度
目标:exaggeration管"情感演得多开",cfg_weight管生成时多贴文本,两个旋钮都挂在generate上,改参数不用重新加载模型。
# 情感朗读:夸张度拉高,cfg 权重压低 wav = model.generate("Watch out! The system is about to go down!", exaggeration=0.8, cfg_weight=0.3) ta.save("emotional.wav", wav, model.sr)调参提示:默认 0.5 / 0.5 最稳,适合日常对话。想让语气更抓人,把 exaggeration 提到 0.7~0.9、cfg_weight 压到 0.3~0.4;要冷静播报感则反过来。几组常用组合的取值放在下面的速查表里,成对调整,单拉一个参数容易飘。
不想写代码?用官方界面
仓库自带两个 Gradio(Python 的 Web 界面框架)入口,启动后浏览器自动打开,输入文本、调参数、试听、下载音频一气呵成,不用写一行代码。python gradio_tts_app.py打开文本转语音界面,python gradio_vc_app.py打开声音转换界面,对应 gradio_tts_app.py 和 gradio_vc_app.py,两个脚本都在仓库根目录。
调参与排错速查
| 项目 | 建议值 | 说明 |
|---|---|---|
| exaggeration | 默认 0.5,常用 0.3~0.9 | 情感夸张度:越高语气越戏剧化,越低越平 |
| cfg_weight | 默认 0.5,常用 0.3~0.8 | 越低越自由发挥,越高越贴文本 |
| 常用组合 | 日常 0.5/0.5;情感朗读 0.7~0.9/0.3~0.4;新闻播报 0.3~0.4/0.6~0.8 | 两个参数成对调整,单拉一个容易飘 |
| 设备 | CUDA 优先 | CPU 可运行;Mac 走 MPS(需 PyTorch 2.0+) |
| 单次文本长度 | 不超过 200 字 | 过长的句子容易不稳定,长文分段合成 |
| 克隆参考音频 | 3~10 秒 | 人声清晰、无背景噪音和混响 |
排错先看这三处:
- 显存吃紧或 CUDA 相关报错:把 device 直接换成 "cpu",先让链路跑通再谈速度。
- 语种发错音:确认
language_id和文本实际语种一致;传错代码时多语言模型会抛ValueError并列出支持列表,照报错改。 - 克隆出来"像又不像":多半是参考音频的锅,换一段更干净、时长落在 3~10 秒的录音重试。
它覆盖的场景很实际:多语言内容生产、给存量音频换声音、需要语气差异化的配音。后续想加参数或看完整接口,直接翻仓库根的 README 和 src/chatterbox/ 下的模块源码即可。
【免费下载链接】chatterboxSoTA open-source TTS项目地址: https://gitcode.com/GitHub_Trending/chatterbox7/chatterbox
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考