Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FlowTTS

新一代低延迟对话式语音合成系统

GitHub TRTC Python Node.js Go License PRs Welcome

English | 简体中文

仓库地址:https://github.com/Tencent-RTC/FlowTTS


FlowTTS: 一个低延迟、可声音克隆、具备拟人化表达能力的新一代语音生成系统。它能够自然呈现语气词、情绪与副语言细节,让对话场景中的 AI"听起来像真人"。

🎧 在线体验对话式 TTS 全部音色体验页 · 📚 协议细节WebSocket 双向流式协议

目录

特性

  • 超低延迟:流式 SSE API,支持 Keep-Alive 长连接
  • 声音克隆:提交少量语音样本,创建专属克隆音色
  • 拟人化表达:自然呈现语气词、情绪与副语言细节
  • 多语言支持:覆盖中、英、日、韩、粤、马来、阿拉伯、印尼、泰、越南共 10 种语言(详见 语言代码

模型说明

模型 定位 特点
flow_02_turbo 对话场景(最新) 超低延迟、音质高、拟人度强
flow_01_turbo 对话场景 超低延迟、音质高、拟人度强

两个模型均支持上述 10 种语言。

💡 推荐Model 字段传空字符串 "" 即可自动使用最新模型,无需手动指定版本。

快速开始

1. 开通服务

FlowTTS 依托 TRTC AI 对话方案使用,需先开通以下任一服务:

  • AI 智能识别包(轻量版/尊享版)
  • TRTC 包月套餐 Plus 能力

详见 TRTC 开通 & 计费说明

2. 安装依赖

Python

cd examples/python
pip install -r requirements.txt

注意:请确保安装最新版本的腾讯云 SDK(>=3.0.1200),以获得完整的 TTS 功能支持。

Node.js

cd examples/nodejs
npm install

需要 Node.js >= 18。

Go

cd examples/golang
go mod download

需要 Go >= 1.20。

3. 配置环境变量

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

获取密钥:腾讯云控制台

4. 运行示例

从仓库根目录执行(任选一种语言):

# Python
python examples/python/example_streaming.py

# Node.js
node examples/nodejs/example_streaming.js

# Go
cd examples/golang
go run ./streaming

第一次跑建议从 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

# Go 版本
cd examples/golang
go run ./voice_clone

# 3. 在 example_streaming.py 中将 VOICE_CONFIG["VoiceId"] 改为返回的 voice_id 后运行
python examples/python/example_streaming.py

flow_01_ex 默认音色推理 / 克隆推理

如果需要固定使用 flow_01_ex 模型,可运行单独示例。示例默认使用 VoiceId=female-shaonv 推理;如需测试 clone + 推理,可将脚本中的 USE_CLONED_VOICE_FOR_INFERENCE 改为 True / true

# Python
python examples/python/example_flow_01_ex_clone_inference.py

# Node.js
node examples/nodejs/example_flow_01_ex_clone_inference.js

脚本会使用 Model=flow_01_ex 调用非流式 TextToSpeech 并保存 MP3。开启 clone 模式后,会先读取 test_data/clone_sample.wav 调用 VoiceClone,再用返回的 VoiceId 推理。

示例索引

仓库提供多语言示例,Python 与 Node.js 一一对应,Go 提供声音克隆、流式合成、非流式合成三套核心示例。从根目录执行(Node.js 需先 cd examples/nodejs;Go 需先 cd examples/golang):

场景 Python Node.js Go 说明
流式合成(推荐入门) example_streaming.py example_streaming.js go run ./streaming SSE 流式返回,边合成边播放,首包延迟最低
非流式合成 example_non_streaming.py example_non_streaming.js go run ./non_streaming 一次性返回完整音频,适合离线/异步生成
声音克隆 example_voice_clone.py example_voice_clone.js go run ./voice_clone 上传音频样本,得到自定义 VoiceId
flow_01_ex 默认音色推理 / 克隆推理 example_flow_01_ex_clone_inference.py example_flow_01_ex_clone_inference.js - 指定 Model=flow_01_ex,默认 VoiceId=female-shaonv;可开启 clone 模式后用克隆 VoiceId 推理生成 MP3
WebSocket 双向流式 example_ws_bidirection.py example_ws_bidirection.js go run ./ws_bidirection 边发文本边收音频,适合 LLM 流式输出对接;支持 pcm/mp3/opus

三端的 WebSocket 示例都会把音频落盘,并支持用环境变量切换参数:

# 默认 pcm(自动补 WAV 头保存为 .wav)
python examples/python/example_ws_bidirection.py

# opus:体积最小,保存为 .ogg
FLOW_TTS_FORMAT=opus python examples/python/example_ws_bidirection.py

# 可组合的环境变量
# FLOW_TTS_FORMAT=pcm|mp3|opus  FLOW_TTS_SAMPLE_RATE=16000|24000
# FLOW_TTS_BITRATE=64|128|192|256(仅 mp3)  FLOW_TTS_MODEL / FLOW_TTS_VOICE_ID

如何选择接口

场景 推荐接口 原因
实时对话、Agent 语音输出 WebSocket 双向流式 LLM token 流式产出后即时推给 TTS,首句最快出声,可中途打断
已知完整文本,要求最低首包延迟 流式 SSE 一次请求边收边播,比非流式延迟低 50-100ms
离线播报、批量生成、文件导出 非流式 拿到完整音频文件(pcm/wav/mp3),方便后处理
需要专属音色 声音克隆 提交样本得到 VoiceId,再配合上述任意接口使用

API 参考

语音参数

参数 范围 默认值 说明
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
WebSocket 双向流式 pcm, mp3, opus 16000, 24000

默认格式:pcm,默认采样率:24000

opus(仅 WebSocket 双向流式):返回 Ogg 封装的 Opus,约 40kbps,体积约为 128kbps MP3 的 1/3、PCM 的 1/9,适合弱网实时链路。注意每个句子是一条独立的 Ogg 流,拼接后为 chained Ogg,BitRate 参数对其不生效 —— 细节见 WebSocket 双向流式协议 · 音频格式说明

API Endpoint

不同接口使用不同的 endpoint,请注意区分:

接口 Endpoint
流式 SSE (TextToSpeechSSE) trtc.ai.tencentcloudapi.com
非流式 (TextToSpeech) trtc.tencentcloudapi.com
声音克隆 (VoiceClone) trtc.tencentcloudapi.com

Keep-Alive 长连接

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 文档

官方 API

仓库内文档

音色与体验

TRTC AI 对话集成

在 TRTC AI 对话配置中加入 TTS 配置,TTSConfig

{
  "TTSType": "flow",
  "VoiceId": "your_voice_id",
  "Model": "",
  "Speed": 1.0,
  "Volume": 1.0,
  "Pitch": 0,
  "Language": "zh"
}

语言代码(ISO 639-1)

语言 代码
中文 zh
英文 en
日语 ja
韩语 ko
粤语 yue
马来语 ms
阿拉伯语 ar
印尼语 id
泰语 th
越南语 vi

License

MIT License - see LICENSE for details.

About

FlowTTS: 一个低延迟、可声音克隆、具备拟人化表达能力的新一代语音生成系统。它能够自然呈现语气词、情绪与副语言细节,让对话场景中的 AI “听起来像真人”

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages