跳转到主要内容

从 https://github.com/2noise/ChatTTS 分支到 PYPI

项目描述

ChatTTS

英文 | 中文简体

针对此分支

  • pip3 install chattts-fork
  • chattts "哈哈" -o test.wav
  • 支持了 seed 固定音色 chattts "哈哈" -o test.wav --seed 222

ChatTTS 是一个专门为对话场景(如LLM助手)设计的文本到语音模型。它支持英语和中文两种语言。我们的模型使用100,000+小时的中英文数据进行了训练。HuggingFace上的开源版本是一个40,000小时预训练模型,没有SFT。

有关模型和路线图的正式咨询,请联系我们 open-source@2noise.com。您可以加入我们的QQ群:808364215 (已满) 230696694 (第二组) 进行讨论。欢迎提交github问题。


亮点

  1. 对话式TTS:ChatTTS针对基于对话的任务进行了优化,能够实现自然和富有表现力的语音合成。它支持多说话者,便于进行交互式对话。
  2. 精细控制:该模型可以预测和控制精细的韵律特征,包括笑声、停顿和插入语。
  3. 更好的韵律:ChatTTS在韵律方面优于大多数开源TTS模型。我们提供预训练模型以支持进一步的研究和开发。

有关模型的详细描述,您可以参考 Bilibili上的视频


免责声明

本仓库仅供学术研究之用。它旨在用于教育和研究目的,不应用于任何商业或法律目的。作者不保证信息的准确性、完整性或可靠性。本仓库中使用的信息和数据仅用于学术和研究目的。数据来源于公开可获取的来源,作者不声称对数据拥有所有权或版权。

ChatTTS是一个强大的文本到语音系统。然而,负责任和道德地使用这项技术非常重要。为了限制ChatTTS的使用,我们在40,000小时模型训练过程中添加了一小部分高频噪声,并尽可能使用MP3格式压缩音频质量,以防止恶意行为者将其用于犯罪目的。同时,我们内部训练了一个检测模型,并计划将来开源。


使用说明

基本用法

import ChatTTS
from IPython.display import Audio

chat = ChatTTS.Chat()
chat.load_models(compile=False) # Set to True for better performance

texts = ["PUT YOUR TEXT HERE",]

wavs = chat.infer(texts, )

torchaudio.save("output1.wav", torch.from_numpy(wavs[0]), 24000)

高级用法

###################################
# Sample a speaker from Gaussian.

rand_spk = chat.sample_random_speaker()

params_infer_code = {
  'spk_emb': rand_spk, # add sampled speaker 
  'temperature': .3, # using custom temperature
  'top_P': 0.7, # top P decode
  'top_K': 20, # top K decode
}

###################################
# For sentence level manual control.

# use oral_(0-9), laugh_(0-2), break_(0-7) 
# to generate special token in text to synthesize.
params_refine_text = {
  'prompt': '[oral_2][laugh_0][break_6]'
} 

wav = chat.infer(texts, params_refine_text=params_refine_text, params_infer_code=params_infer_code)

###################################
# For word level manual control.
text = 'What is [uv_break]your favorite english food?[laugh][lbreak]'
wav = chat.infer(text, skip_refine_text=True, params_refine_text=params_refine_text,  params_infer_code=params_infer_code)
torchaudio.save("output2.wav", torch.from_numpy(wavs[0]), 24000)

示例:自我介绍

inputs_en = """
chat T T S is a text to speech model designed for dialogue applications. 
[uv_break]it supports mixed language input [uv_break]and offers multi speaker 
capabilities with precise control over prosodic elements [laugh]like like 
[uv_break]laughter[laugh], [uv_break]pauses, [uv_break]and intonation. 
[uv_break]it delivers natural and expressive speech,[uv_break]so please
[uv_break] use the project responsibly at your own risk.[uv_break]
""".replace('\n', '') # English is still experimental.

params_refine_text = {
  'prompt': '[oral_2][laugh_0][break_4]'
} 
# audio_array_cn = chat.infer(inputs_cn, params_refine_text=params_refine_text)
audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)
torchaudio.save("output3.wav", torch.from_numpy(audio_array_en[0]), 24000)

男性发音者

女性发音者


路线图

  • 开源40k小时基础模型和spk_stats文件
  • 开源VQ编码器和Lora训练代码
  • 流式音频生成,无需优化文本*
  • 开源带多情感控制的40k小时版本
  • ChatTTS.cpp可能?(欢迎PR或创建新仓库。)

常见问题解答

我需要多少VRAM?推理速度如何?

对于30秒的音频片段,至少需要4GB的GPU内存。对于4090 GPU,它每秒可以生成约7个语义标记对应的音频。实时因子(RTF)约为0.3。

模型稳定性不足,存在多发音者或音频质量差等问题。

这是自回归模型(对于bark和valle)通常会出现的问题。这通常很难避免。可以尝试多次样本以找到合适的结果。

除了笑声,我们还能控制其他什么?我们能控制其他情绪吗?

在当前发布的模型中,唯一的标记级控制单元是[laugh]、[uv_break]和[lbreak]。在未来版本中,我们可能会开源具有额外情感控制能力的模型。


致谢

  • barkXTTSv2valle 通过自回归风格的系统展示了令人瞩目的TTS结果。
  • fish-speech 揭示了GVQ作为LLM建模音频标记器的能力。
  • vocos 作为预训练的声码器。

特别感谢

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

chattts_fork-0.0.8.tar.gz (23.1 kB 查看哈希)

上传时间 源代码

构建分发

chattts_fork-0.0.8-py3-none-any.whl (25.8 kB 查看哈希)

上传时间 Python 3

由以下组织支持