ChatTTS 对话语音
在 Clore.ai 的 GPU 上运行 ChatTTS 对话式文本转语音,并提供细粒度韵律控制。
最后更新于
这有帮助吗?
这有帮助吗?
# 从 PyPI 安装
pip install ChatTTS torch torchaudio
# 或从源码安装以获取最新功能
git clone https://github.com/2noise/ChatTTS.git
cd ChatTTS
pip install -r requirements.txt
# 验证 GPU
python -c "import torch; print(torch.cuda.get_device_name(0))"import ChatTTS
import torch
import torchaudio
# 初始化并加载模型(首次运行时会下载权重)
chat = ChatTTS.Chat()
chat.load(compile=False) # 在预热后将 compile=True 以获得更快的推理
texts = [
"嗨!你今天过得怎么样?",
"我整个上午都在做这个项目。进展不错。",
]
wavs = chat.infer(texts)
for i, wav in enumerate(wavs):
audio_tensor = torch.from_numpy(wav)
if audio_tensor.dim() == 1:
audio_tensor = audio_tensor.unsqueeze(0)
torchaudio.save(f"output_{i}.wav", audio_tensor, 24000)
print(f"已保存 output_{i}.wav")import ChatTTS
import torch
import torchaudio
chat = ChatTTS.Chat()
chat.load(compile=False)
# 采样一个说话人 —— 将此字符串保存以便以后重用
rand_spk = chat.sample_random_speaker()
params_infer_code = ChatTTS.Chat.InferCodeParams(
spk_emb=rand_spk,
temperature=0.3,
top_P=0.7,
top_K=20,
)
params_refine_text = ChatTTS.Chat.RefineTextParams(
prompt='[oral_2][laugh_0][break_4]',
)
texts = ["欢迎收听今天的节目。让我告诉你一些令人兴奋的事情。"]
wavs = chat.infer(
texts,
params_refine_text=params_refine_text,
params_infer_code=params_infer_code,
)
audio = torch.from_numpy(wavs[0])
if audio.dim() == 1:
audio = audio.unsqueeze(0)
torchaudio.save("consistent_speaker.wav", audio, 24000)import ChatTTS
import torch
import torchaudio
chat = ChatTTS.Chat()
chat.load(compile=False)
# 标签:[uv_break] = 短暂停,[laugh] = 笑声,[lbreak] = 长暂停
text = 'What is [uv_break]your favorite food?[laugh][lbreak]'
rand_spk = chat.sample_random_speaker()
params = ChatTTS.Chat.InferCodeParams(spk_emb=rand_spk, temperature=0.3)
# skip_refine_text=True 会保留你手动的控制标签
wavs = chat.infer(text, skip_refine_text=True, params_infer_code=params)
audio = torch.from_numpy(wavs[0])
if audio.dim() == 1:
audio = audio.unsqueeze(0)
torchaudio.save("controlled_output.wav", audio, 24000)cd ChatTTS
python examples/web/webui.py --server_name 0.0.0.0 --server_port 7860