用于日常对话的生成语音模型。
English |简体中文|日本语| Русский | 俄罗斯西班牙语|法语| 한국어
笔记
该存储库包含算法基础结构和一些简单的示例。
提示
对于扩展的最终用户产品,请参阅社区维护的索引库 Awesome-ChatTTS。
ChatTTS是专门针对LLM助手等对话场景设计的文本转语音模型。
英语
中国人
即将推出...
详细介绍可以参考Bilibili上的这个视频。
对话式 TTS :ChatTTS 针对基于对话的任务进行了优化,可实现自然且富有表现力的语音合成。它支持多个扬声器,促进交互式对话。
细粒度控制:该模型可以预测和控制细粒度的韵律特征,包括笑声、停顿和感叹词。
更好的韵律:ChatTTS 在韵律方面超越了大多数开源 TTS 模型。我们提供预训练模型来支持进一步的研究和开发。
重要的
发布的模型仅用于学术目的。
主模型使用10万+小时的中英文音频数据进行训练。
HuggingFace上的开源版本是一个 40,000 小时的预训练模型,没有 SFT。
开源 40k 小时基础模型和 spk_stats 文件。
流式音频生成。
开源 DVAE 编码器和零样本推断代码。
多重情绪控制。
ChatTTS.cpp(欢迎2noise
组织中的新存储库)
该代码在AGPLv3+
许可证下发布。
该模型在CC BY-NC 4.0
许可下发布。它仅供教育和研究用途,不得用于任何商业或非法目的。作者不保证信息的准确性、完整性或可靠性。本存储库中使用的信息和数据仅用于学术和研究目的。数据来自公开来源,作者不主张对数据的任何所有权或版权。
ChatTTS 是一个功能强大的文本转语音系统。然而,负责任且合乎道德地利用这项技术非常重要。为了限制ChatTTS的使用,我们在40,000小时的模型训练过程中添加了少量高频噪声,并尽可能使用MP3格式压缩音频质量,以防止恶意行为者可能利用它进行犯罪目的。同时,我们内部训练了一个检测模型,并计划未来将其开源。
GitHub 问题/PR 始终受到欢迎。
有关模型和路线图的正式询问,请通过[email protected]联系我们。
第一组808364215
二组230696694
第三组933639842
四组608667975
点击此处加入。
git 克隆 https://github.com/2noise/ChatTTScd ChatTTS
pip install --upgrade -r requests.txt
conda 创建-n chattts python=3.11 conda 激活聊天 pip install -r 要求.txt
pip install safetensors vllm==0.2.7 torchaudio
警告
不要安装! TransformerEngine 的适配目前正在开发中,目前无法正常运行。仅出于开发目的安装它。请参阅 #672 #676 的更多详细信息
笔记
安装过程非常慢。
pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable
警告
不要安装!目前FlashAttention-2会根据这个问题降低生成速度。仅出于开发目的安装它。
笔记
请参阅 Hugging Face 文档中支持的设备。
pip install flash-attn --no-build-isolation
执行以下命令时,请确保您位于项目根目录下。
python 示例/web/webui.py
它将音频保存到
./output_audio_n.mp3
python example/cmd/run.py “您的文本 1。” “你的文字2。”
从 PyPI 安装稳定版本
pip 安装 ChatTTS
从 GitHub 安装最新版本
pip install git+https://github.com/2noise/ChatTTS
在开发模式下从本地目录安装
pip install -e 。
import ChatTTSimport torchimport torchaudiochat = ChatTTS.Chat()chat.load(compile=False) # 设置为 True 以获得更好的性能texts = ["PUT YOUR 1st TEXT HERE", "PUT YOUR 2nd TEXT HERE"]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)
#################################### 从 Gaussian 中采样说话人.rand_spk = chat.sample_random_speaker()print (rand_spk) # 保存以供以后音色恢复params_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb = rand_spk, # 添加采样的扬声器温度 = .3, # 使用自定义温度top_P = 0.7, # 顶部 P 解码top_K = 20, # 顶部 K 解码)######################################用于句子级别的手动控制。# 使用oral_(0-9)、laugh_(0-2)、break_(0-7) # 在文本中生成特殊标记进行合成。params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_6]', )wavs = chat.infer(文本,params_refine_text=params_refine_text,params_infer_code=params_infer_code, )###################################### 对于字级手动控制。text = '什么是 [uv_break ]你最喜欢的英语食物?[laugh][lbreak]'wavs = chat.infer(text,skip_refine_text=True,params_refine_text=params_refine_text,params_infer_code=params_infer_code)"""在某些版本中torchaudio,第一行有效,但在其他版本中,第二行也有效。"""try:torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0]).unsqueeze(0), 24000)除了:torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0]), 24000)
input_en = """chat T T S 是专为对话应用程序设计的文本到语音模型。[uv_break]它支持混合语言输入[uv_break]并提供多扬声器功能,可精确控制[uv_break]laughter[uv_break][laugh ]、[uv_break]停顿、[uv_break]和语调[uv_break]它提供自然且富有表现力的语音,[uv_break]所以请[uv_break]使用该项目。 [uv_break]""".replace('n', '') # 英语仍处于实验阶段。params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_4]', )audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)torchaudio.save("self_introduction_output.wav", torch.from_numpy(audio_array_en[0]), 24000)
男性演讲者 | 女演讲者 |
介绍_en_m.webm | 介绍_en_f.webm |
对于 30 秒的音频剪辑,至少需要 4GB GPU 内存。对于 4090 GPU,它每秒可以生成对应于大约 7 个语义标记的音频。实时系数 (RTF) 约为 0.3。
这是自回归模型(对于树皮和山谷)通常会出现的问题。一般情况下很难避免。人们可以尝试多个样品来找到合适的结果。
在当前发布的模型中,唯一的令牌级控制单元是[laugh]
、 [uv_break]
和[lbreak]
。在未来的版本中,我们可能会开源具有额外情绪控制功能的模型。
bark、XTTSv2 和 valle 通过自回归式系统展示了出色的 TTS 结果。
Fish-Speech 揭示了 GVQ 作为 LLM 建模音频分词器的能力。
vocos 用作预训练的声码器。
wlu-audio 实验室用于早期算法实验。