从零开始部署ChatTTS，做一个属于自己的文字转语音

基础环境

Copy
PyTorch  2.1.0

Python  3.10(ubuntu22.04)

Cuda  12.1

安装

Copy
git clone https://github.com/2noise/ChatTTS.git
cd ChatTTS
pip install -r requirements.txt

#如果要启动webui.py 就多安装一下gradio
pip install gradio

运行

Copy
python webui.py
#运行后他会自己下载模型到huggingface文件夹，需要自备魔法，或者用huggingface代理网站
#指定端口运行
python webui.py --server_port 1234

自己编写 api

Copy
#简单版 api.py 运行 python api.py
import ChatTTS
import torch
import torchaudio
from IPython.display import Audio

# 初始化 ChatTTS 模型
chat = ChatTTS.Chat()
chat.load_models(compile=False) # 如果需要更高性能，可以设置为 True
rand_spk = chat.sample_random_speaker()
# 要转换的文本
texts = ["你好，我是文字转语音"]

# 执行推理
wavs = chat.infer(texts)

# 保存音频文件
torchaudio.save("output1.wav", torch.from_numpy(wavs[0]), 24000)

Copy
###################################
# 高级班 v-api.py 运行 python v-api.py
import ChatTTS
import torch
import torchaudio
from IPython.display import Audio

chat = ChatTTS.Chat()
chat.load_models(compile=False) # 如果需要更高性能，可以设置为 True

###################################
# Sample a speaker from Gaussian.

rand_spk = chat.sample_random_speaker()

params_infer_code = {
'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 = {
'prompt': '[oral_2][laugh_0][break_6]'
}

###################################
# For word level manual control.
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(wav[0]), 24000)

总结

里面还有很多调节，语速，随机角色保存，特殊符号 笑声，间隔等等，这个开源刚出来 ，但是听着很好听，成长空间很大。

自己可以做 api 来使用，挺方便

来源：

此文由 Mix Space 同步更新至 xLog
原始链接为 https://sunx.ai/posts/nlp/chattts