ChatTTS: 将您的文本转换为语音
引言
想象一下,你正在创建一个播客或制作一个听起来像真实对话的虚拟助手。这就是ChatTTS的用武之地。这个尖端的文本转语音工具将你的书面文字转化为栩栩如生的音频,以惊人的精确度捕捉细微差别和情感。想象一下:你打字写出一份剧本,而ChatTTS用一种真实而富有表现力的声音将其呈现出来。无论你是在开发引人入胜的内容还是增强用户互动,ChatTTS都为无缝、自然听起来的对话的未来提供了一瞥。深入了解这个工具如何改变你的项目,让你的声音以全新的方式被听到。
学习成果
- 了解 ChatTTS 在文本到语音技术中的独特能力和优势。
- 识别ChatTTS与其他文本到语音模型如Bark和Vall-E之间的关键差异和好处。
- 了解文本预处理和输出微调如何增强生成语音的可定制性和表现力。
- 了解如何将ChatTTS与大型语言模型集成以实现高级文本到语音应用程序。
- 了解 ChatTTS 在创建音频内容和虚拟助手中的实际应用。
目录
- 介绍
- ChatTTS 概述
- ChatTTS的特点是什么?
- 文本预处理:特殊标记以获得更多控制
- ChatTTS: 微调输出
- 开源计划和社区参与
- 如何使用ChatTTS
- 使用随机发言者
- 如何使用 ChatTTS 运行两阶段控制
- 将ChatTTS与LLMs集成
- ChatTTS的应用
- 结论
ChatTTS 概述
ChatTTS,声生成工具,是人工智能的一次重大飞跃,使得无缝对话成为可能。随着语音生成的需求与文本生成和大型语言模型(LLMs)一起增加,ChatTTS使音频对话变得更加方便和全面。与这个工具进行对话非常简单,通过全面的数据挖掘和预训练,这一概念的效率得到了进一步的提升。
ChatTTS 是许多应用程序中最好的开源文本到语音生成模型之一。这个工具在英语和中文方面都表现出色。凭借超过 100,000 小时的训练数据,该模型可以提供两种语言的对话,听起来很自然。
ChatTTS 凭借其独特的特性,在其他可能通用且缺乏表现力的 大型语言模型 中脱颖而出。经过大约 10 小时的英语和中文数据训练,该工具极大推动了人工智能的发展。其他文本转语音模型,如 Bark 和 Vall-E,具有与此相似的优秀功能。但 ChatTTS 在某些方面优于这些模型。
例如,当将 ChatTTS 与 Bark 进行比较时,长文本输入存在明显的差异。
输出通常不超过13秒,这是因为它的GPT风格架构。此外,对于旧GPU、默认的collabs或CPU,Bark的推理速度可能较慢。然而,它在企业GPU、Pytorch和CPU上表现良好。
ChatTTS另一方面具有良好的推理速度;它可以每秒生成大约七个语义标记的音频。该模型的情感控制也使其优于Valle。
让我们深入探讨一下使 ChatTTS 成为 AI 语音生成有价值工具的一些独特功能:
对话式语音合成
该模型经过训练,以生动地执行任务对话。它具有自然的语音模式,并保持多说话者的语音合成。这一简单概念使用户,特别是那些有语音合成需求的用户,更加轻松。
控制与安全
ChatTTS正在采取许多措施来确保该工具的安全性和伦理问题。人们对这种模型的滥用有着可以理解的担忧,一些功能,比如降低图像质量,以及当前对检测人工语音的开源工具的研究,都是伦理人工智能发展的良好例子。
与LLM的集成
这是朝着该模型的安全性和控制的另一步发展。ChatTTS团队展示了他们保持可靠性的愿望;添加水印并与大型语言模型集成,是确保可能出现的安全性和可靠性问题的明显迹象。
这个模型还有一些突出的特点。一个重要的特性是用户可以控制输出和某些语音变化。下一节将对此进行更详细的解释。
文本预处理:特殊标记以获得更多控制
该模型赋予用户的可控性水平使其独特。在添加文本时,您可以包含令牌。这些令牌充当嵌入命令,控制口头命令,包括暂停和笑声。
这个令牌概念可以分为两个阶段:句子级控制和单词级控制。句子级引入了诸如笑声 [笑_ (0-2)] 和停顿等令牌。另一方面,单词级控制在特定单词周围引入这些停顿,使句子更加生动。
ChatTTS: 微调输出
使用一些参数,您可以在音频生成过程中优化输出。这是使该模型更可控的另一个关键特性。
这个概念类似于句子级控制,因为用户可以控制特定的身份,例如说话者身份、语音变体和解码策略。
通常,文本预处理和输出微调是赋予ChatTTS高度定制化和生成富有表现力的语音对话的两个关键特征。
params_infer_code = {
'prompt':'[speed_5]', 'temperature':.3}
params_refine_text = {
'prompt':'[oral_2][laugh_0][break_6]'}
开放源代码计划和社区参与
ChatTTS 强大的潜力,具备微调能力,并与 LLM 无缝集成。社区希望开源一个基于训练的模型,以进一步开发,并招募更多研究人员和开发者来改进它。
关于发布一个具有多种情感控制和Lora训练代码的模型版本的谈话也在进行中。这一发展可能会大大降低训练的难度,因为ChatTTS具有LLM集成。
该模型还支持一个网页用户界面,您可以在其中输入文本、改变参数并交互式地生成音频。这可以通过webui.py脚本实现。
python webui.py --server_name 0.0.0.0 --server_port 8080 --local_path /path/to/local/models
如何使用ChatTTS
我们将强调该模型高效运行的简单步骤,从下载代码到微调。
下载代码并安装依赖项
!rm -rf /content/ChatTTS
!git clone https://github.com/2noise/ChatTTS.git
!pip install -r /content/ChatTTS/requirements.txt
!pip install nemo_text_processing WeTextProcessing
!ldconfig /usr/lib64-nvidia
这段代码包含帮助设置环境的命令。从Git Hub下载该模型的克隆版本可以获取项目的最新版本。这些代码行还安装必要的依赖项,并确保系统库为NVIDIA GPU正确配置。
导入所需库
运行此模型进行推理的下一步涉及导入脚本所需的必要库;您需要导入Torch、ChatTTS和IPython.display中的Audio。您可以使用ipynb文件收听音频。如果您想使用第三方库或安装音频驱动程序,如FFmpeg或SoundFile,还有另一种选择将此音频保存为“.wav”文件。
代码应该如下所示:
import torch
torch._dynamo.config.cache_size_limit = 64
torch._dynamo.config.suppress_errors = True
torch.set_float32_matmul_precision('high')
from ChatTTS import ChatTTS
from IPython.display import Audio
正在初始化 ChatTTS
这一步涉及使用类中的‘chat’作为实例来初始化模型。然后,加载ChatTTS预训练数据。
chat = ChatTTS.Chat()
# 如果权重更新,请使用force_redownload=True。
chat.load_models(force_redownload=True)
# 另外,如果你手动下载了权重,请设置source='locals',local_path将指向你的目录。
# chat.load_models(source='local', local_path='你的本地路径')
使用 ChatTTS 进行批量推理
texts = ["所以我们发现,竞争和合作是一种巨大的动力,让我们朝着目标前进,所以当你失落时,有一个人可以呼叫,有一个人帮助你重新振作,然后还有一个人可以和你一起进行活动。",]*3 \
+ ["我觉得像我们这些写程序的人,他,我觉得多多少少可能会对开源有一种情怀在吧我觉得开源是一个很好的形式。现在其实最先进的技术掌握在一些公司的手里的话,就他们并不会轻易的开放给所有的人用。"]*3
wavs = chat.infer(texts)
这个模型通过提供文本列表来执行批量推理。IPython 中的“audio”函数可以帮助您播放生成的音频。
Audio(wavs[0], rate=24_000, autoplay=True)
Audio(wavs[3], rate=24_000, autoplay=True)
wav = chat.infer('四川美食可多了,有麻辣火锅、宫保鸡丁、麻婆豆腐、担担面、回锅肉、夫妻肺片等,每样都让人垂涎三尺。', \
params_refine_text=params_refine_text, params_infer_code=params_infer_code)
所以,这表明了速度、变异性和特定语音特征的参数是如何定义的。
音频(wav[0], 速率=24_000, 自动播放=True)
使用随机发言者
这个概念是该模型允许的另一个出色的定制功能。使用 ChatTTS 随机采样一个说话者生成音频是无缝的,随机说话者嵌入样本也使其成为可能。
您可以使用ipynb文件收听生成的音频或者使用第三方库将其保存为.wav文件。
rand_spk = chat.sample_random_speaker()
params_infer_code = {
'spk_emb' : rand_spk, }
wav = chat.infer('四川美食确实以辣闻名,但也有不辣的选择。比如甜水面、赖汤圆、蛋烘糕、叶儿粑等,这些小吃口味温和,甜而不腻,也很受欢迎。', \
params_refine_text=params_refine_text, params_infer_code=params_infer_code)
如何使用 ChatTTS 运行双阶段控制
两阶段控制允许您分别进行文本细化和音频生成。这可以通过“refine_text_only”和“skip_refine_text”参数实现。
您可以在ChatTTS中使用两阶段控制来优化文本和音频生成。此外,您可以在下面的代码块中使用一些独特的参数单独进行此优化:
text = "所以我们发现,竞争和合作是保持对目标的动力的一个重要方式,所以当你失足时,有一个人可以叫,有一个人可以让你重回正轨,还有一个人可以和你一起做活动。"
refined_text = chat.infer(text, refine_text_only=True)
refined_text
wav = chat.infer(refined_text)
Audio(wav[0], rate=24_000, autoplay=True)
这是第二阶段,表示音频生成过程中语音的断点和停顿。
text = '所以我们发现竞争和合作是一种巨大的方式来保持动力朝着我们的目标前进,所以当你失去动力时有一个人可以呼叫,有一个人能让你重新振作,然后还有一个人可以和你一起进行活动。'
wav = chat.infer(text, skip_refine_text=True)
Audio(wav[0], rate=24_000, autoplay=True)
将ChatTTS与LLMs集成
ChatTTS与大型语言模型(LLMs)的集成意味着它可以根据用户在这些模型中的问题,对文本进行精炼并生成音频。以下是分解这一过程的几个步骤。
导入必要的模块
从 ChatTTS.experimental.llm 导入 llm_api
这个函数导入了用于创建API客户端的‘llm_api’。然后我们将使用Deepseek来创建API。这个API有助于促进基于文本的应用程序中的无缝交互。我们可以从Deepseek API获取API。在页面上选择“访问API”选项,注册一个账户,您就可以创建一个新的密钥。
创建 API 客户端
API_KEY = ''
client = llm_api(api_key=API_KEY,
base_url="https://api.deepseek.com",
model="deepseek-chat")
user_question = '四川有哪些好吃的美食呢?'
text = client.call(user_question, prompt_version = 'deepseek')
print(text)
text = client.call(text, prompt_version = 'deepseek_TN')
print(text)
您可以使用生成的文本生成音频。以下是如何添加音频;
params_infer_code = {
'spk_emb' : rand_spk, 'temperature':.3}
wav = chat.infer(text, params_infer_code=params_infer_code)
ChatTTS的应用
一个将文本转换为音频的语音生成工具在今天将是非常有价值的。AI 聊天机器人、虚拟助手的浪潮,以及在许多行业中自动语音的融合使得 ChatTTS 变得极为重要。以下是该模型的一些现实应用。
- 创建文本基础内容的音频版本: 无论是研究论文还是学术文章,ChatTTS都可以高效地将文本内容转换为音频。这种消费材料的替代方式可以帮助以更直接的形式进行学习。
- 虚拟助手和聊天机器人的语音生成: 虚拟助手和聊天机器人如今变得非常流行,自动化系统集成助长了这一趋势。ChatTTS 可以根据这些虚拟助手的文本生成语音。
- 探索文本到语音技术: 探索此模型的方式有很多,其中一些已经在ChatTTS社区进行中。在这方面的一个重要应用是研究该模型的语音合成以用于研究目的。
ChatTTS 表示在 AI 生成方面取得了巨大突破,实现了自然流畅的英语和中文对话。这个模型的最佳部分是它的可控性,允许用户进行定制,因此为语音带来了表现力。随着 ChatTTS 社区不断开发和完善这个模型,它在推进文本到语音技术方面的潜力非常光明。
关键要点
- ChatTTS 擅长生成自然且富有表现力的语音对话。
- 该模型允许对语音模式和特征进行精确控制。
- ChatTTS 支持与大型语言模型的无缝集成,以提高功能。
- 该模型包括确保文本到语音技术的负责任和安全使用的机制。
- 持续的社区贡献和未来的增强功能承诺了持续的进步和多样性。
- 该开源模型背后的团队也优先考虑安全和伦理问题。诸如高频噪声和压缩音频质量等特性提供了可靠性和控制。
- 这个工具也很棒,因为它具有自定义功能,允许用户通过引入暂停、笑声和其他口语特征的参数来微调输出。