sunx.ai

sunx.ai

從零開始部署ChatTTS,做一個屬於自己的文字轉語音

基礎環境#

PyTorch  2.1.0

Python  3.10(ubuntu22.04)

Cuda  12.1

安裝#

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


#如果要啟動webui.py 就多安裝一下gradio
pip install gradio

執行#

python webui.py
#執行後他會自己下載模型到huggingface文件夾,需要自備魔法,或者用huggingface代理網站
#指定端口執行
python webui.py --server_port 1234

自己編寫 api#

#簡單版 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)

###################################
# 高級班 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


載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。