FlowTTS: 一个低延迟、可声音克隆、具备拟人化表达能力的新一代语音生成系统。它能够自然呈现语气词、情绪与副语言细节,让对话场景中的 AI"听起来像真人"。
🎧 在线体验:对话式 TTS 全部音色体验页 · 📚 协议细节:WebSocket 双向流式协议
- 超低延迟:流式 SSE API,支持 Keep-Alive 长连接
- 声音克隆:提交少量语音样本,创建专属克隆音色
- 拟人化表达:自然呈现语气词、情绪与副语言细节
- 多语言支持:覆盖中、英、日、韩、粤、马来、阿拉伯、印尼、泰、越南共 10 种语言(详见 语言代码)
| 模型 | 定位 | 特点 |
|---|---|---|
flow_02_turbo |
对话场景(最新) | 超低延迟、音质高、拟人度强 |
flow_01_turbo |
对话场景 | 超低延迟、音质高、拟人度强 |
两个模型均支持上述 10 种语言。
💡 推荐:
Model字段传空字符串""即可自动使用最新模型,无需手动指定版本。
FlowTTS 依托 TRTC AI 对话方案使用,需先开通以下任一服务:
- AI 智能识别包(轻量版/尊享版)
- TRTC 包月套餐 Plus 能力
Python
cd examples/python
pip install -r requirements.txt注意:请确保安装最新版本的腾讯云 SDK(>=3.0.1200),以获得完整的 TTS 功能支持。
Node.js
cd examples/nodejs
npm install需要 Node.js >= 18。
cp .env.example .env编辑 .env 文件,填入腾讯云密钥:
TENCENTCLOUD_SECRET_ID=your_secret_id_here
TENCENTCLOUD_SECRET_KEY=your_secret_key_here
TENCENTCLOUD_SDK_APP_ID=1400000000
# 可选:自定义 API Endpoint(默认 trtc.ai.tencentcloudapi.com)
TENCENTCLOUD_ENDPOINT=trtc.ai.tencentcloudapi.com获取密钥:腾讯云控制台
从仓库根目录执行(任选一种语言):
# Python
python examples/python/example_streaming.py
# Node.js
node examples/nodejs/example_streaming.js第一次跑建议从
example_streaming开始,能在数百毫秒内听到首个音频包。
# 1. 准备音频样本(16kHz 单声道 WAV,10-180 秒)
cp your_voice.wav test_data/clone_sample.wav
# 2. 克隆声音,获取 voice_id
python examples/python/example_voice_clone.py
# 3. 在 example_streaming.py 中将 VOICE_CONFIG["VoiceId"] 改为返回的 voice_id 后运行
python examples/python/example_streaming.py仓库提供 4 套示例,Python 与 Node.js 一一对应。从根目录执行(Node.js 需先 cd examples/nodejs):
| 场景 | Python | Node.js | 说明 |
|---|---|---|---|
| 流式合成(推荐入门) | example_streaming.py |
example_streaming.js |
SSE 流式返回,边合成边播放,首包延迟最低 |
| 非流式合成 | example_non_streaming.py |
example_non_streaming.js |
一次性返回完整音频,适合离线/异步生成 |
| 声音克隆 | example_voice_clone.py |
example_voice_clone.js |
上传音频样本,得到自定义 VoiceId |
| WebSocket 双向流式 | example_ws_bidirection.py |
example_ws_bidirection.js |
边发文本边收音频,适合 LLM 流式输出对接 |
| 场景 | 推荐接口 | 原因 |
|---|---|---|
| 实时对话、Agent 语音输出 | WebSocket 双向流式 | LLM token 流式产出后即时推给 TTS,首句最快出声,可中途打断 |
| 已知完整文本,要求最低首包延迟 | 流式 SSE | 一次请求边收边播,比非流式延迟低 50-100ms |
| 离线播报、批量生成、文件导出 | 非流式 | 拿到完整音频文件(pcm/wav/mp3),方便后处理 |
| 需要专属音色 | 声音克隆 | 提交样本得到 VoiceId,再配合上述任意接口使用 |
| 参数 | 范围 | 默认值 | 说明 |
|---|---|---|---|
| Speed | 0.5 ~ 2.0 | 1.0 | 语速,0.5 为半速、2.0 为两倍速 |
| Volume | (0, 10] | 1.0 | 音量,必须大于 0 |
| Pitch | -12 ~ 12 | 0 | 音高,负值更低沉、正值更尖锐 |
| 接口类型 | 支持格式 | 采样率 |
|---|---|---|
| 流式 (SSE) | pcm | 16000, 24000 |
| 非流式 | pcm, wav, mp3 | 16000, 24000 |
默认格式:pcm,默认采样率:24000
不同接口使用不同的 endpoint,请注意区分:
| 接口 | Endpoint |
|---|---|
流式 SSE (TextToSpeechSSE) |
trtc.ai.tencentcloudapi.com |
非流式 (TextToSpeech) |
trtc.tencentcloudapi.com |
声音克隆 (VoiceClone) |
trtc.tencentcloudapi.com |
SDK 支持 HTTP Keep-Alive,复用 TCP 连接以降低延迟:
Python
http_profile = HttpProfile()
http_profile.keepAlive = True # 启用 Keep-Alive
http_profile.pre_conn_pool_size = 3 # 连接池大小| 参数 | 说明 |
|---|---|
keepAlive |
启用后复用 TCP 连接,避免重复握手,降低后续请求延迟 |
pre_conn_pool_size |
预建连接池大小,提前建立连接,首次请求也能快速响应 |
启用 Keep-Alive 后,连续请求可节省约 50-100ms 的连接建立时间
Node.js
Node.js HTTP agent 默认支持连接复用,无需额外配置。
官方 API
仓库内文档
- WebSocket 双向流式协议 — 鉴权、消息格式、事件、错误码、完整示例
- 字符计算规则 — 计费与文本长度限制使用的字符计数规则
音色与体验
在 TRTC AI 对话配置中加入 TTS 配置,TTSConfig:
{
"TTSType": "flow",
"VoiceId": "your_voice_id",
"Model": "",
"Speed": 1.0,
"Volume": 1.0,
"Pitch": 0,
"Language": "zh"
}| 语言 | 代码 |
|---|---|
| 中文 | zh |
| 英文 | en |
| 日语 | ja |
| 韩语 | ko |
| 粤语 | yue |
| 马来语 | ms |
| 阿拉伯语 | ar |
| 印尼语 | id |
| 泰语 | th |
| 越南语 | vi |
MIT License - see LICENSE for details.