ChatTTS是由2noise团队开发的一款专门针对对话场景设计的生成式文本转语音(TTS)模型。该项目在GitHub上已获得超过35,000+星标,是目前最受欢迎的开源TTS项目之一。
项目地址: https://github.com/2noise/ChatTTS
开发团队: 2noise
开源协议: AGPLv3+ (代码) / CC BY-NC 4.0 (模型)
主要语言支持: 中文、英文
ChatTTS的设计初衷是为LLM助手等对话应用提供自然、流畅的语音交互体验,相比传统TTS模型,它在对话场景下表现更加出色。
[laugh]
、[laugh_0-2]
[uv_break]
、[lbreak]
、[break_0-7]
[oral_0-9]
# 克隆项目
git clone https://github.com/2noise/ChatTTS
cd ChatTTS
# 安装依赖
pip install --upgrade -r requirements.txt
# 或使用conda环境
conda create -n chattts python=3.11
conda activate chattts
pip install -r requirements.txt
import ChatTTS
import torch
import torchaudio
# 初始化模型
chat = ChatTTS.Chat()
chat.load(compile=False) # 设为True可获得更好性能
# 文本转语音
texts = ["你好,我是ChatTTS", "Hello, I am ChatTTS"]
wavs = chat.infer(texts)
# 保存音频文件
for i, wav in enumerate(wavs):
torchaudio.save(f"output_{i}.wav", torch.from_numpy(wav).unsqueeze(0), 24000)
# 随机采样说话人
rand_spk = chat.sample_random_speaker()
# 设置推理参数
params_infer_code = ChatTTS.Chat.InferCodeParams(
spk_emb=rand_spk, # 说话人嵌入
temperature=0.3, # 温度参数
top_P=0.7, # top-P采样
top_K=20, # top-K采样
)
# 设置文本精炼参数
params_refine_text = ChatTTS.Chat.RefineTextParams(
prompt='[oral_2][laugh_0][break_6]', # 添加韵律控制
)
# 生成语音
wavs = chat.infer(
texts,
params_refine_text=params_refine_text,
params_infer_code=params_infer_code,
)
ChatTTS作为专门针对对话场景设计的TTS模型,在以下方面表现突出:
🎯 专业性: 专门为对话场景优化,在聊天机器人、AI助手等应用中表现优异
🚀 技术先进性: 采用最新的深度学习技术,在韵律控制和多说话人支持方面领先
🌟 开源价值: 提供完整的开源解决方案,降低了高质量TTS技术的使用门槛
🤝 社区活跃: 拥有活跃的开发者社区和丰富的生态资源
⚡ 实用性: 提供了从基础使用到高级控制的完整功能,满足不同层次的需求
ChatTTS的出现填补了对话场景专用TTS模型的空白,为构建更自然的人机语音交互体验提供了强有力的技术支撑。随着技术的不断发展和社区的持续贡献,相信ChatTTS将在语音合成领域发挥越来越重要的作用。