ChatTTS是一个专为对话场景(如LLM助手)设计的文本转语音模型,由2noise团队开发并开源,本文将详细介绍如何充分利用ChatTTS的强大功能。
项目地址: https://github.com/2noise/ChatTTS
什么是ChatTTS?¶
ChatTTS是一个专为对话场景(如LLM助手)设计的文本转语音模型,由2noise团队开发并开源。它是一个生成式语音模型,提供了高质量的文本转语音功能,具有以下特点:
- 支持多种语言(目前支持英语和中文)
- 针对对话场景优化,提供自然和富有表现力的语音合成
- 支持多说话人,便于交互式对话
- 提供细粒度的韵律控制,包括笑声、停顿和插入语
- 在韵律方面超越大多数开源TTS模型
数据集和模型¶
- 主模型使用了100,000+小时的中文和英文音频数据进行训练。
- HuggingFace上的开源版本是一个40,000小时预训练模型,没有经过SFT(监督微调)。
基础使用方法¶
1. 安装ChatTTS¶
推荐安装方法(使用conda环境):
# 创建conda环境
conda create -n chattts python=3.11
conda activate chattts
# 克隆仓库
git clone https://github.com/2noise/ChatTTS
cd ChatTTS
# 安装依赖
pip install -r requirements.txt
2. 启动WebUI¶
python examples/web/webui.py
注意: 首次使用时,系统会自动下载所需的模型文件,请确保您的网络连接正常。
如果在生成语音时遇到"RuntimeError: narrow(): length must be non-negative"错误,
这通常是由于transformers库版本不兼容导致的。解决方法是降低transformers的版本:
pip uninstall transformers
pip install transformers==4.53.2
3. 命令行推理¶
python examples/cmd/run.py "您的文本1." "您的文本2."
这将会将音频保存到 ./output_audio_n.mp3
4. Python代码示例¶
除了使用WebUI和命令行工具,您还可以直接在Python代码中使用ChatTTS:
import ChatTTS
import torch
import torchaudio
# 初始化ChatTTS
chat = ChatTTS.Chat()
chat.load(compile=False) # 设置为True以获得更好的性能
# 准备要转换的文本
texts = ["这是您的第一段文本", "这是您的第二段文本"]
# 执行文本转语音
wavs = chat.infer(texts)
# 保存音频文件
for i in range(len(wavs)):
"""
在某些版本的torchaudio中,第一行代码有效,而在其他版本中,第二行代码有效。
"""
try:
torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)
except:
torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]), 24000)
注意:如果在Windows系统中遇到"Couldn't find appropriate backend"错误,请安装soundfile库:pip install soundfile,这个错误通常是因为torchaudio缺少适当的音频后端导致的。
实用应用场景¶
1. 虚拟助手和聊天机器人¶
- 语音交互:为聊天机器人提供自然的声音
- 多角色对话:创建多个不同音色的虚拟角色
- 情感表达:通过韵律控制表达不同情感
2. 内容创作¶
- 有声读物:将文本内容转换为高质量的有声读物
- 视频配音:为视频内容添加自然的人声旁白
- 播客制作:生成播客节目的音频内容
3. 教育应用¶
- 语言学习:为语言学习材料提供标准发音
- 课程讲解:将课程内容转换为语音讲解
- 无障碍教育:为视觉障碍学生提供语音学习材料
4. 辅助功能¶
- 无障碍阅读:为视觉障碍用户提供屏幕阅读功能
- 语音导航:为应用程序提供语音导航功能
- 信息播报:将重要信息以语音形式播报
常见问题解答¶
Q: ChatTTS支持哪些语言?¶
A: 目前ChatTTS支持英语和中文,开发团队计划在未来添加更多语言支持。
Q: 我需要多少VRAM?推理速度如何?¶
A: 对于30秒的音频片段,至少需要4GB的GPU内存。对于4090 GPU,它可以每秒生成大约7个语义token对应的音频。实时因子(RTF)约为0.3。
Q: 模型稳定性不够好,存在多个说话者或音频质量差等问题。¶
A: 这是一个通常发生在自回归模型(例如bark和valle)中的问题,通常很难避免。可以尝试多个样本以找到合适的结果。
Q: 除了笑声,我们还能控制其他东西吗?我们能控制其他情绪吗?¶
A: 在当前发布的模型中,可用的token级控制单元是[laugh]、[uv_break]和[lbreak]。此外,还可以使用oral_(0-9)、laugh_(0-2)、break_(0-7)等参数进行更精细的控制。未来的版本中,可能会开源具有更多情绪控制功能的模型。
Q: ChatTTS支持流式音频生成吗?¶
A: 是的,ChatTTS支持流式音频生成,这是开发团队计划中的重要功能之一。流式生成可以减少等待时间,提高用户体验,特别适合实时对话场景。
Q: ChatTTS的许可证是什么?¶
A: ChatTTS的代码采用AGPLv3+许可证发布,模型采用CC BY-NC 4.0许可证,仅用于教育和研究目的,不得用于任何商业或非法用途。
4. 结合其他AI工具¶
ChatTTS与其他AI工具结合使用效果更佳:
- LLM对话系统:将ChatGPT等大语言模型与ChatTTS结合,创建完整的语音对话系统
- 语音识别:结合语音识别工具,实现双向语音交互
- 情感分析:结合情感分析工具,根据文本情感调整语音表现
总结¶
ChatTTS是一个强大的文本转语音工具,特别适合对话场景。关键要点包括:
- 对话优化:专为对话场景设计,提供自然和富有表现力的语音合成
- 多语言支持:目前支持英语和中文,未来将添加更多语言
- 细粒度控制:可以控制韵律特征,包括笑声、停顿和插入语,支持词语级别和句子级别的控制
- 开源可用:代码和模型均为开源,便于研究和应用开发
- 多说话人支持:支持多个说话人,适合创建对话场景,并可保存和重用特定音色
- 流式生成:支持流式音频生成,减少等待时间,提高用户体验
- 跨平台考虑:虽然Windows环境安装有一定限制,但提供了多种解决方案,包括Colab在线体验
掌握这些技巧,你就能更好地利用ChatTTS创建高质量的语音内容。记住,虽然ChatTTS功能强大,但使用时需要遵守其许可证规定,仅用于教育和研究目的。
想了解更多AI工具使用技巧?请访问AI225导航,我们提供最全面的AI工具使用指南和资源。
