Skip to content

ChatTTS - 用于对话场景的文本转语音

ChatTTS(Chat Text To Speech)是专为对话场景设计的文本生成语音(TTS)模型,特别适用于大型语言模型(LLM)助手的对话任务,以及诸如对话式音频和视频介绍等应用。它支持中文和英文,还可以穿插笑声、说话间的停顿、以及语气词等,听起来很真实自然,在语音合成中表现出高质量和自然度(ChatTTS团队声称:突破开源天花板)。

快速开始

一行命令启动一个带有 Web 界面的 ChatTTS API 服务器。

前提条件:支持 CUDA 的 GPU,Docker, 4GB GPU 内存

启动

sh
docker run -d --name chat_tts --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 -p 8500:8080 -p 8501:8501 ccr.ccs.tencentyun.com/text-to-speech/chat_tts_api_ui:latest
  • 8500 端口:映射容器内的8080端口, 用于接收API请求,返回音频文件。
  • 8501 端口:web-ui 界面, 可用于测试。
  • --gpus all: 将主机上的所有 GPU 资源提供给容器。如果应用需要使用 GPU(如深度学习模型推理、视频处理等),这是必要的配置。
  • --ipc=host: 共享主机的 IPC(inter-process communication)命名空间。这允许容器中的进程与主机上的进程使用相同的 IPC 机制进行通信。
  • --ulimit memlock=-1: 设置内存锁住的限制为 -1(即无限制)。某些应用(如某些机器学习框架)可能需要锁住内存(防止交换),以提高性能。
  • --ulimit stack=67108864: 设置线程栈大小限制为 64MB(67108864 字节)。如果应用程序有大量递归或大栈需求,需调整此参数。
  • 使用ccr.ccs.tencentyun.com镜像仓库加载text-to-speech/chat_tts_api_ui镜像

Web UI

URL 网页: http://localhost:8501

build with streamlit

Api

API URL: http://localhost:8500/tts

client: python client.py

由python编写使用fastapi生成@app.post("/tts")接口

调用示例

sh
curl -X POST -H "Content-Type: application/json" -d '{"text": "Hello World", "seed": 1111, "temperature": 0.3, "top_P": 0.7, "top_K": 20, "skip_refine_text": false}' http://127.0.0.1:8500/tts

其中seek参数为随机种子值, 用于生成对应的音色。skip_refine_text: 是否跳过文本的调整或优化(false 表示不跳过)。

已知问题

  • 没有gpu的去除--gpus all参数也能使用, 但是就无法识别英文
  • 语音是最长只能生成30秒(约100字)
  • 采样率为24000
  • 不支持并发

相关资料

粤ICP备20009776号