首页
开源项目
搜索 TinyTools
ChatTTS用于日常对话的生成式语音模型
37.5k
在线演示
Github仓库
Gitee仓库
# ChatTTS 用于日常对话的生成语音模型。 ## 简介 > [!注意] > 此代码库包含算法基础架构和一些简单示例。 > [!提示] > 有关扩展的最终用户产品,请参阅由社区维护的索引代码库 [Awesome-ChatTTS](https://github.com/libukai/Awesome-ChatTTS/tree/en)。 ChatTTS 是一个专为 LLM 助手等对话场景设计的文本转语音模型。 ### 支持语言 - [x] 英语 - [x] 中文 - [ ] 即将推出... ### 亮点 > 您可以参考**[Bilibili 上的此视频](https://www.bilibili.com/video/BV1zn4y1o7iV)**获取详细说明。 1. **对话式 TTS**:ChatTTS 针对对话类任务进行了优化,可实现自然且富有表现力的语音合成。它支持多说话人,方便进行交互式对话。 2. **细粒度控制**:该模型可以预测和控制细粒度的韵律特征,包括笑声、停顿和感叹词。 3. **更佳的韵律**:ChatTTS 在韵律方面超越了大多数开源 TTS 模型。我们提供预训练模型以支持进一步的研究和开发。 ### 数据集和模型 > [!重要] > 发布的模型仅供学术用途。 - 主模型使用超过 100,000 小时的中英文音频数据进行训练。 - **[HuggingFace](https://huggingface.co/2Noise/ChatTTS)** 上的开源版本是一个经过 4 万小时预训练的模型,无需 SFT。 ### 路线图 - [x] 开源 4 万小时基础模型和 spk_stats 文件。 - [x] 流式音频生成。 - [x] 开源 DVAE 编码器和零样本推理代码。 - [ ] 多情绪控制。 - [ ] ChatTTS.cpp(欢迎在 `2noise` org 中提交新的代码库) ### 许可证 #### 代码 代码采用 `AGPLv3+` 许可证发布。 #### 模型 模型采用 `CC BY-NC 4.0` 许可证发布。本模型旨在用于教育和研究,不得用于任何商业或非法用途。作者不保证信息的准确性、完整性或可靠性。本代码库中使用的信息和数据仅供学术和研究之用。数据来自公开来源,作者不主张对数据的任何所有权或版权。 ### 免责声明 ChatTTS 是一个强大的文本转语音系统。然而,负责任地、合乎道德地使用这项技术至关重要。为了限制 ChatTTS 的使用,我们在训练这个 40,000 小时模型时添加了少量高频噪声,并使用 MP3 格式尽可能地压缩音频质量,以防止恶意行为者将其用于犯罪目的。与此同时,我们已经内部训练了一个检测模型,并计划在未来将其开源。 ### 联系方式 > 欢迎随时在 GitHub 上提交问题/PR。 #### 正式咨询 如需正式咨询模型和路线图,请通过 **open-source@2noise.com** 联系我们。 #### 在线聊天 ##### 1. QQ 群(中文社交应用) - **群 1**,808364215 - **群 2**,230696694 - **群 3**,933639842 - **群 4**,608667975 ##### 2. Discord 服务器 点击[此处](https://discord.gg/Ud5Jxgx5yD)加入。 ## 开始 ### 克隆代码库 ```bash git clone https://github.com/2noise/ChatTTS cd ChatTTS ``` ### 安装要求 #### 1. 直接安装 ```bash pip install --upgrade -r requirements.txt ``` #### 2. 通过 conda 安装 ```bash conda create -n chattts python=3.11 conda activate chattts pip install -r requirements.txt ``` #### 可选:安装 vLLM(仅限 Linux) ```bash pip install safetensors vllm==0.2.7 torchaudio ``` #### 不推荐 可选:如果使用 NVIDIA GPU,请安装 TransformerEngine(仅限 Linux) > [!警告] > 请勿安装! > TransformerEngine 的适配版本目前正在开发中,目前无法正常运行。 > 仅用于开发目的。更多详情请参阅 #672 #676 > [!注意] > 安装过程非常缓慢。 ```bash pip install git+https://github.com/NVIDIA/TransformerEngine.git@stable ``` #### 不推荐 可选:安装 FlashAttention-2(主要针对 NVIDIA GPU) > [!警告] > 请勿安装! > 目前,根据[此问题](https://github.com/huggingface/transformers/issues/26990),FlashAttention-2 会降低生成速度。 > 仅用于开发目的。 > [!注意] > 请参阅 [Hugging Face 文档](https://huggingface.co/docs/transformers/perf_infer_gpu_one#flashattention-2) 查看支持的设备。 ```bash pip install flash-attn --no-build-isolation ``` ### 快速入门 > 执行以下命令时,请确保您位于项目根目录下。 #### 1. 启动 WebUI ```bash python examples/web/webui.py ``` #### 2. 通过命令行进行推断 > 它会将音频保存到 `./output_audio_n.mp3` ```bash python examples/cmd/run.py "Your text 1." "Your text 2." ``` ## 安装 1. 从 PyPI 安装稳定版本 ```bash pip install ChatTTS ``` 2. 从 GitHub 安装最新版本 ```bash pip install git+https://github.com/2noise/ChatTTS ``` 3. 以开发模式从本地目录安装 ```bash pip install -e . ``` ### 基本用法 ```python 导入 ChatTTS 导入 torch 导入 torchaudio chat = 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) ``` ### 高级用法 ```python ##################################### # 从高斯模型中采样说话人。 rand_spk = chat.sample_random_speaker() print(rand_spk) # 保存以便后续音色恢复 params_infer_code = ChatTTS.Chat.InferCodeParams( spk_emb = rand_spk, # 添加采样说话人 temperature = .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( texts, params_refine_text=params_refine_text, params_infer_code=params_infer_code, ) ##################################### # 用于单词级手动控制。 text = '[uv_break]你最喜欢的英国食物是什么?[笑][lbreak]' wavs = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code) """ 在某些版本的 torchaudio 中,第一行代码可以正常工作,但在其他版本中,第二行代码也可以正常工作。 """ 尝试: 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) ``` <详情打开> <摘要>
示例:self简介
```python inputs_en = """ chat T T S 是一款专为对话应用设计的文本转语音模型。 [uv_break]它支持混合语言输入,[uv_break]并提供多说话人功能, 能够精确控制韵律元素,例如 [uv_break]笑声、[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) ```
**男声**
**女声**
[男声说话者](https://github.com/2noise/ChatTTS/assets/130631963/e0f51251-db7f-4d39-a0e9-3e095bb65de1)
[女声](https://github.com/2noise/ChatTTS/assets/130631963/f5dcdd01-1091-47c5-8241-c4f6aaaa8bbd)
tabler/tabler is licensed under the
MIT License
A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.
Permissions
Commercial use
Modification
Distribution
Private use
Limitations
Liability
Warranty
Conditions
License and copyright notice