引言
这几天看到ChatTTS语音合成项目貌似很火爆,就抽空体验了一下,整体感觉语音还是比较自然的,不过整个项目说明比较简单,没有给出更详细的使用方法。比如如何控制音色,选择固定人声等,希望后面能够更加完善。
本文详细介绍了ChatTTS项目的基本使用步骤与方法,我在使用过程中遇到了一些坑,都替小伙伴们提前解决了。本文提供的所有项目源码、模型文件和示例代码等内容,只需配置好环境既可体验。所有文件获取方式见文末。
ChatTTS简介
ChatTTS是专门为对话场景设计的文本转语音模型。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在HuggingFace中开源的版本为4万小时训练且未SFT的版本。
项目亮点
对话式 TTS
: ChatTTS针对对话式任务进行了优化,实现了自然流畅的语音合成,同时支持多说话人。
细粒度控制
: 该模型能够预测和控制细粒度的韵律特征,包括笑声、停顿和插入词
等。
更好的韵律
: ChatTTS在韵律方面超越了大部分开源TTS模型。同时提供预训练模型,支持进一步的研究。
下载源码
下载源码后解压如下:
环境配置
使用conda 创建虚拟环境配置【输入安装命令前,需进入到项目目下】。命令如下:
conda create -n ChatTTS python=3.9 # 创建新的虚拟环境 source activate ChatTTS # 激活新建的虚拟环境 pip install -r requirements.txt #安装项目需要的库
项目使用步骤
导入需要的库
import ChatTTS from wave import Wave_write import numpy as np
加载模型
这里需要自行修改base_path
的路径,改成你自己的项目路径:
base_path = r'D:\1MyShare\VoiceProgram\ChatTTS-main\ChatTTS-main\ChatTTS' chat = ChatTTS.Chat() chat.load_models(source='local',local_path=base_path)
模型推理
# 输入文本 inputs = """大家好,我是阿旭。专注于python、机器学习及人工智能等相关技术分享,感谢大家的点赞关注""" # 笑声、停顿等按需要添加的输入文本中具体位置 params_refine_text = { 'prompt': '[oral_2][laugh_0][break_4]' } wavs = chat.infer(inputs, params_refine_text=params_refine_text)[0]
语音保存
将结果保存到test4.wav
文件中:
sample_rate = 24000 # 转换数据类型并调整到合适的范围 # audio_data_rescaled = (wavs * 32767).astype(np.int16).flatten() audio_data_rescaled = (wavs * 28000).astype(np.int16).flatten() # 创建并打开一个wav文件用于写入 with Wave_write('test4.wav') as wave_file: wave_file.setparams((1, 2, sample_rate, len(audio_data_rescaled), 'NONE', 'not compressed')) wave_file.writeframes(audio_data_rescaled.tobytes())