文本转语音工具 ChatTTS 使用教程
文本转语音工具 ChatTTS 使用教程
文章目录
Part.I Introduction
ChatTTS (Chat Text To Speech) 是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。在 HuggingFace 中开源的版本为4万小时训练且未SFT的版本。
开发 ChatTTS 的团队称:突破开源天花板!ChatTTS 有如下特点:
ChatTTS 文本转语音示例如下
B 站_ChatTTS 示例
Part.II 一键安装部署
Chap.I 下载
建议使用『ChatTTS 一键本地安装!目前最简单高效的部署方案【文本转语音】』进行安装部署,使用的是 123 云盘,近 3G 压缩包分分钟下完。
1、下载好后解压,得到如下文件,双击app.exe
,会自动进行环境配置。
2、环境配置好后会在浏览器中弹出来使用接口(http://127.0.0.1:9966/)。
Chap.II 使用
参数的含义如下:
- text:指的是需要转换成语音的文字内容。
- Refine text:选择是否自动对输入的文本进行优化处理。
- 随机度:一个控制输出随机性的参数,数值越大,生成的语音随机性越高,这可能导致生成的语音质量有时更好,有时更差。
- 音色选择:默认值为2222,这是一个数字参数,用于选择声音的类型。可选的数字有2222、7869、6653、4099、5099,可以任选其一,或者输入其他数字以随机选择声音。
- 定制声音:这是一个正整数参数,用于定制声音的音调和音色。如果设置了此值,将优先使用,而忽略声音选择参数。
- 提示设置(Prompt):用于添加笑声、停顿等效果。例如,可以设置为
[oral_2][laugh_0][break_6]
。
合成好之后即可下载
Chap.III 存在的问题
这种方法虽然简单,但是看不到程序内部运行的逻辑,也没有办法更改程序本身的代码,出现问题也没有行之有效的解决方案。笔者在尝试的时候就遇到了一些问题,如下:
1、无法识别[lauge]
等提示词
2、前面几秒声音乱入。
Part.III 手动部署
克隆仓库
git clone https://github.com/2noise/ChatTTS
cd ChatTTS
安装依赖
pip install --upgrade -r requirements.txt
Chap.I 快速使用
建议先执行一遍
python examples/cmd/run.py "Your text 1."
快速使用:命令行交互(生成的音频将保存至 ./output_audio_n.mp3
)
python examples/cmd/run.py "Your text 1." "Your text 2."
快速使用:WebUI 可视化界面
python examples/web/webui.py
PS:建议文字数目不要超过150个。长文本后面就是在瞎说。
Chap.II 开发教程
安装ChatTTS
的Python 包,方法有如下三种
1、从 PyPI 安装稳定版
pip install ChatTTS
2、从 GitHub 安装最新版
pip install git+https://github.com/2noise/ChatTTS
3、从本地文件夹安装开发版
pip install -e .
基础用法
import ChatTTS
import torch
import torchaudio
chat = ChatTTS.Chat()
chat.load(compile=False) # Set to True for better performance
texts = ["PUT YOUR 1st TEXT HERE", "PUT YOUR 2nd 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()
print(rand_spk) # save it for later timbre recovery
params_infer_code = ChatTTS.Chat.InferCodeParams(
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 = ChatTTS.Chat.RefineTextParams(
prompt='[oral_2][laugh_0][break_6]',
)
wavs = 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]'
wavs = 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)
Reference
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)