主题
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
- 不支持并发
相关资料
- ChatTTS源码: https://github.com/2noise/ChatTTS
- ChatTTS模型:https://huggingface.co/2Noise/ChatTTS
- ChatTTS中文官网:https://chattts.com/zh
- ChatTTS在线网页Demo:https://huggingface.co/spaces/lenML/ChatTTS-Forge
- ChatTTS-api-ui-docker: https://github.com/Jackiexiao/ChatTTS-api-ui-docker
- ChatTTS二次开发项目合集:https://github.com/libukai/Awesome-ChatTTS
- 子豪兄代码教程:https://github.com/TommyZihao/ChatTTS_Tutorials