ChatTTS 对话语音模型
为中英文日常对话生成自然、可控的多说话人语音。
项目主要作为显式调用的本地语音生成库和示例运行,未显示索取凭据或广泛系统权限,因此最小权限和外部影响得到部分支持;README也说明命令行会写入音频文件。扣分在于模型与依赖下载的数据流、遥测和网络行为没有完整说明,未提供敏感文本或生成音频的处理政策,也没有操作级确认或回滚机制。依赖仅少量固定版本,requirements中多数依赖范围宽泛;工作流直接下载并安装第三方deb且未在所示步骤中校验其摘要,Actions也按版本标签而非提交固定。许可证、模型许可、上游项目、贡献者和联系方式归属清楚,故来源归属满分;发布者未获企业登记验证仅表示身份未知。
README、依赖清单和工作流大体构成一致的安装与使用路径,PyPI、GitHub、Hugging Face及多种安装方式提高依赖可获得性。扣分是英文同时被列为支持语言又在示例中称为实验性,模型和若干组件依赖外部服务,且没有离线保障。故障说明主要是安装警告、已知质量问题以及音频保存的兼容性回退;示例使用无类型区分的裸except,也没有系统化错误诊断。
对话式TTS、LLM助手、研究用途、中英文、WebUI、命令行和Python API等受众与场景均有明确说明。能力边界也较充分,包括仅研究/教育用途、非商业模型许可、英语实验性、有限控制标记、质量不稳定以及尚未完成的情绪控制。扣分在于输入触发规则主要靠示例描述,特殊标记的语法和冲突处理不完整;环境说明覆盖Python 3.11、Linux专属依赖、GPU选项与显存需求,但缺少完整的操作系统、CPU、驱动和兼容性矩阵。
README结构清晰,安装路径、快速开始、基础和高级示例、FAQ、路线图、许可及联系方式齐全。代码AGPLv3+与模型CC BY-NC 4.0被明确区分,且提供完整AGPL文本,因此许可满分。扣分在于包名大小写和安装来源可能造成一定辨识负担,未提供正式API稳定性承诺;PyPI徽章和路线图不能替代版本政策或变更日志。维护渠道有issues、PR、邮箱和社群,但未列出明确负责人,且发布者身份仍未知。
输出为可直接保存和播放的音频数组或MP3/WAV文件,示例展示多说话人采样、韵律控制和不同调用方式,具有明确的对话语音生成增量价值。扣分主要在成本披露不完整:FAQ给出至少4GB显存、4090速度和RTF参考,但未系统说明模型下载体积、CPU性能、内存、能耗或生产部署成本;模型的非商业限制也缩小了实际采用范围。
安装命令、API调用、依赖版本下限、硬件参考和许可陈述可定位到具体文件,但诸如超过多数开源TTS的韵律、训练时数、自然度和安全缓解效果等重要主张缺少随附基准、数据说明或可审计结果,因此主张可追溯性较弱。README与LICENSE对代码许可形成有限交叉印证,requirements和工作流也支持部分环境事实,但材料总体集中于单一项目来源。文档能够区分已发布功能、路线图、实验性能力和免责声明,因此事实与推断分离较好;营销性比较和安全效果仍未清楚标为未经验证的主张。
- 模型采用CC BY-NC 4.0并明确限制为教育和研究用途;不要仅依据代码的AGPL许可推定模型可商用。
- 输入文本和生成音频可能包含敏感信息,但所给材料未说明保留、遥测、缓存、远程下载交互或删除政策。
- requirements中多数依赖未锁定精确版本;部署前应生成锁文件、审计传递依赖,并验证模型与二进制下载的完整性。
- 工作流直接下载并安装第三方deb,所示步骤没有先验证固定摘要;自动化环境应固定不可变版本并校验来源。
- README承认自回归生成可能出现多说话人或低音质问题,需要重复采样;不应把单次输出用于高风险或身份敏感场景。
- 训练数据来源、比较性质量主张和高频噪声安全措施未由所给材料独立验证。
这个 Agent 能做什么,适合哪些场景?
ChatTTS 是面向对话场景的生成式文本转语音模型,尤其适合为 LLM 助手合成语音,但它本身不是完整的自主 Agent。仓库提供算法基础设施、预训练模型接入方式、Python 库、命令行示例和 WebUI,可在本地读取文本并生成 WAV 或 MP3 音频。模型支持中文和英文、多说话人音色采样,以及对笑声、停顿和口语化程度等韵律特征的有限控制。已发布的开放模型是未经 SFT 的 4 万小时预训练版本,主模型则使用超过 10 万小时的中英文音频训练。代码采用 AGPLv3+,模型采用 CC BY-NC 4.0,且明确限于教育和研究用途,因此不适合需要商业授权或稳定生产质量的团队直接采用。
用户通过 ChatTTS.Chat() 创建实例并调用 chat.load(compile=False) 加载模型;chat.infer(texts) 接收一个或多个文本并返回音频数组。程序可用 torchaudio.save 将结果写成 24 kHz WAV,命令行示例 python examples/cmd/run.py 则把音频保存为 ./output_audio_n.mp3。chat.sample_random_speaker() 可采样说话人嵌入,并通过 ChatTTS.Chat.InferCodeParams 设置 spk_emb、temperature、top_P 和 top_K。ChatTTS.Chat.RefineTextParams 支持句级提示,如 [oral_2][laugh_0][break_6];跳过文本细化后,还可在文本中使用 [laugh]、[uv_break] 和 [lbreak] 进行词级控制。仓库也能运行 python examples/web/webui.py 提供本地 WebUI,并已列出流式音频生成和零样本推理代码。
- 研究人员需要在本地评估中英文对话式 TTS,并研究自回归语音生成、音频分词或韵律表现。
- LLM 助手原型开发者需要把回复文本转换成带有停顿、笑声和口语化节奏的语音。
- 交互式演示开发者需要从随机说话人嵌入生成不同音色,用于多角色对话原型。
- Python 开发者需要批量输入多段文本,并将返回的数组保存为 24 kHz WAV 音频。
- 研究团队需要通过本地 WebUI、命令行或 Python API 比较多次采样结果并筛选可用语音。
这个 Agent 有哪些优点和局限?
- 专门针对对话式语音优化,支持中文、英文及多说话人生成,而不是只面向单一旁白场景。
- 提供句级与词级韵律控制,可显式插入笑声、长短停顿并调整口语化参数。
- 同时提供 Python API、命令行程序和本地 WebUI,便于研究、批处理和交互式试验。
- 支持随机说话人嵌入、流式音频生成和零样本推理代码,适合进一步研究与原型开发。
- 已发布模型采用 CC BY-NC 4.0,并被明确限定为教育和研究用途,不能直接用于商业项目。
- 自回归生成可能出现多说话人混入或音质不佳,文档建议重复采样来寻找合适结果。
- 当前词级控制只有
[laugh]、[uv_break]和[lbreak],多情绪控制仍在路线图中。 - 英文仍被标注为实验性功能;来源没有承诺生产级稳定性或完整性。
- 生成 30 秒音频至少需要 4 GB GPU 显存;即使在 RTX 4090 上,文档给出的实时因子也约为 0.3。
- 训练时加入了少量高频噪声,并用 MP3 尽量压缩音质以降低滥用风险,这会限制追求高保真输出的场景。
如何安装或部署这个 Agent?
克隆并安装依赖:
git clone https://github.com/2noise/ChatTTS
cd ChatTTS
conda create -n chattts python=3.11
conda activate chattts
pip install -r requirements.txt也可安装稳定版:
pip install ChatTTS或安装 GitHub 最新版:
pip install git+https://github.com/2noise/ChatTTS本地开发模式使用:
pip install -e .首次使用还需要加载模型;来源未要求 API 密钥。若使用 GPU,FAQ 表明生成 30 秒音频至少需要 4 GB 显存。Linux 可选安装 safetensors vllm==0.2.7 torchaudio。文档明确不建议安装仍无法正常运行的 TransformerEngine 适配,也不建议为了推理安装会拖慢生成速度的 FlashAttention-2。
如何使用这个 Agent?
在项目根目录启动 WebUI:
python examples/web/webui.py命令行生成 MP3:
python examples/cmd/run.py "Your text 1." "Your text 2."Python 最小调用:
import ChatTTS
import torch
import torchaudio
chat = ChatTTS.Chat()
chat.load(compile=False)
wavs = chat.infer(["Hello from ChatTTS.", "你好,这是 ChatTTS。"] )
torchaudio.save("output.wav", torch.from_numpy(wavs[0]).unsqueeze(0), 24000)部分 torchaudio 版本要求直接传入 torch.from_numpy(wavs[0]),而不是增加一个维度。若要控制韵律,可创建 ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_6]') 并传给 chat.infer。
这个 Agent 与同类方案有什么区别?
仓库将 Bark、XTTSv2 和 VALL-E 列为自回归式 TTS 参考,并说明此类模型通常难以完全避免说话人混入和音质波动。Fish Speech 被列为使用 GVQ 音频分词器进行 LLM 建模的参考;ChatTTS 自身使用预训练的 Vocos 声码器。来源没有给出这些具名系统之间的统一量化基准,因此无法据此断言 ChatTTS 在速度、音质或稳定性上全面领先。
常见问题
可以用于商业产品吗?
运行需要多少显存?
必须连接 ChatGPT 或其他模型 API 吗?
为什么同一段文字有时音质不佳或混入多个说话人?
现在能精确控制哪些情绪或语气?
[laugh]、[uv_break] 和 [lbreak]。多情绪控制尚未完成。