从 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问题。
亮点
- 对话式TTS:ChatTTS针对基于对话的任务进行了优化,能够实现自然和富有表现力的语音合成。它支持多说话者,便于进行交互式对话。
- 精细控制:该模型可以预测和控制精细的韵律特征,包括笑声、停顿和插入语。
- 更好的韵律: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]。在未来版本中,我们可能会开源具有额外情感控制能力的模型。
致谢
- bark、XTTSv2 和 valle 通过自回归风格的系统展示了令人瞩目的TTS结果。
- fish-speech 揭示了GVQ作为LLM建模音频标记器的能力。
- vocos 作为预训练的声码器。
特别感谢
- wlu-audio lab 在早期算法实验中的贡献。
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
chattts_fork-0.0.8.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a818be695b6b6691487113e78104d7c3550202c9dfcf6e51fd7eebbe36c0c180 |
|
MD5 | 4c93e1b67a1e59ee930c0c28ecb62b13 |
|
BLAKE2b-256 | 11f47d332ed10875baf48fdd1c85bc44b7d9a02eb94c7c818164fb8b0f4ee8b3 |
chattts_fork-0.0.8-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 569084d9f451fbfa6c28f1c15c893a594279a9032d1e720571dab30f30c680be |
|
MD5 | 4f2e2f7852bfc03454a9e64c06f4cbb7 |
|
BLAKE2b-256 | eab130518814c5c46d0300f10cdd07bbc2ecd4449c916debcdf0841adb6fd26b |