AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


12K+ Star!ChatTTS:一款专为日常对话设计的文本到语音模型,能为LLM助手等对话场景提供自然、富有表现力的语音合成
发布日期:2024-06-08 06:36:03 浏览次数: 1814


项目简介

ChatTTS[1] 是一款专为日常对话设计的文本到语音(TTS)生成模型,它能够为LLM(大型语言模型)助手等对话场景提供自然、富有表现力的语音合成。

这个模型支持中英文两种语言,经过超过10万小时的中文和英文数据训练而成。

目前,ChatTTS在HuggingFace上提供的开源版本是一个预训练了4万小时的模型,且未进行SFT(Super Fine-Tuning,超微调)。

此外,模型可以预测和控制细粒度的韵律特征,包括笑声、停顿和插入语等。

ChatTTS 亮点

  1. 对话式TTS:优化了基于对话的任务,支持多说话者,便于进行互动交流。
  2. 精细控制:模型能够预测并控制精细的韵律特征,包括笑声、停顿和插入语。
  3. 更佳韵律:在韵律方面超越了大多数开源TTS模型,提供预训练模型以支持进一步的研究和开发。

此外,ChatTTS还提供了基本和高级两种使用方式,用户可以根据自己的需求进行选择。

使用方法

基本使用

import ChatTTS
from IPython.display import Audio

chat = ChatTTS.Chat()
chat.load_models(compile=False# 设置为 True 以获得更好的性能

texts = ["PUT YOUR TEXT HERE",]

wavs = chat.infer(texts)

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

高级使用

###################################
# 从高斯分布中采样一个说话者。

rand_spk = chat.sample_random_speaker()

params_infer_code = {
 'spk_emb': rand_spk, # 添加采样的说话者
 'temperature'.3# 使用自定义温度
 'top_P'0.7# top P 解码
 'top_K'20# top K 解码
}

###################################
# 句子级别手动控制。

# 使用 oral_(0-9), laugh_(0-2), break_(0-7) 
# 来在文本中生成特殊标记进行合成。
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)

###################################
# 单词级别手动控制。
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'''# 英语仍在实验中。

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)

常见问题解答 (FAQ)

  • 需要多少显存?推理速度如何?

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

  • 模型稳定性不够好,存在多说话者或音质差等问题。

这通常是自回归模型(例如 bark 和 valle)的问题,通常难以避免。可以尝试多次采样以找到合适的结果。

  • 除了笑声,我们还能控制其他什么?我们可以控制其他情感吗?

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

项目目前处于学术目的,仅供教育和研究使用,并且开发者对信息的准确性、完整性或可靠性不作保证。同时,为了限制ChatTTS的使用,开发者在40,000小时的模型训练中加入了高频噪声,并尽可能使用MP3格式压缩音质,以防止恶意使用。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询