返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

12K Star!ChatTTS:一款专为日常对话设计的文本到语音模型,能为LLM助手等对话场景提供自然、富有表现力的语音合成

[复制链接]
链载Ai 显示全部楼层 发表于 2 小时前 |阅读模式 打印 上一主题 下一主题

项目简介

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

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

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

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

ChatTTS 亮点

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

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

使用方法

基本使用

importChatTTS
fromIPython.displayimportAudio

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

texts=["UTYOURTEXTHERE",]

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,#topP解码
'top_K':20,#topK解码
}

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

#使用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='Whatis[uv_break]yourfavoriteenglishfood?[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="""
chatTTSisatexttospeechmodeldesignedfordialogueapplications.
[uv_break]itsupportsmixedlanguageinput[uv_break]andoffersmultispeaker
capabilitieswithprecisecontroloverprosodicelements[laugh]likelike
[uv_break]laughter[laugh],[uv_break]pauses,[uv_break]andintonation.
[uv_break]itdeliversnaturalandexpressivespeech,[uv_break]soplease
[uv_break]usetheprojectresponsiblyatyourownrisk.[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格式压缩音质,以防止恶意使用。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ