API 文档
王小听 API 兼容 OpenAI 格式,开发者可零成本迁移。
基础地址
https://api.wxtts.com/v1所有 API 路径以 /v1 开头,兼容 OpenAI 格式。
鉴权方式
在请求头携带 API Key:
Authorization: Bearer sk-wxtts-xxx在控制台「API Key 管理」创建 Key,格式为 sk-wxtts- 前缀。
POST /audio/speech
文字转语音,兼容 OpenAI 接口。
curl -X POST https://api.wxtts.com/v1/audio/speech \
-H "Authorization: Bearer sk-wxtts-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "你好,欢迎使用王小听。",
"voice": "xiaoxiao",
"response_format": "mp3",
"speed": 1.0,
"pitch": 1.0
}' --output speech.mp3| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 必填 | 要合成的文本,单次最长 5000 字符 |
| voice | string | 必填 | 音色 ID,完整列表见 GET /v1/voices |
| model | string | - | 模型 ID,tts-1 或 tts-1-hd,默认 tts-1 |
| response_format | string | - | 音频格式 mp3 / wav / pcm,默认 mp3 |
| speed | number | - | 语速 0.5-2.0,默认 1.0 |
| pitch | number | - | 音调 0.5-2.0,默认 1.0 |
响应格式
默认返回 JSON,音频以 base64 编码:
{
"code": 0,
"data": {
"audioBase64": "UklGRiQAAABXQVZF...",
"format": "mp3",
"charCount": 12,
"voice": "xiaoxiao",
"model": "tts-1",
"timestamps": [
{ "beginTime": 0, "endTime": 1500, "text": "你好,欢迎使用王小听。" }
]
}
}设置请求头 Accept: audio/mpeg 可直接返回二进制音频流,响应头包含 X-Char-Count(字符数)、X-Voice(音色)、X-Model(模型)。
| 字段 | 类型 | 说明 |
|---|---|---|
| audioBase64 | string | base64 编码的音频数据 |
| format | string | 音频格式 |
| charCount | integer | 本次合成字符数 |
| voice | string | 音色 ID |
| model | string | 模型 ID |
| timestamps | array | 句子级时间戳(用于字幕生成,可能为空) |
其他接口
GET /v1/voices— 获取音色列表GET /v1/models— 获取可用模型列表GET /v1/usage— 查询当前用量
SSML 支持
在 input 字段中使用 SSML 标签可控制停顿、语速音调、强调等。后端会自动解析标签分段合成拼接,无 SSML 标签时按普通文本处理。
| 标签 | 说明 |
|---|---|
| <break time="500ms"/> | 插入指定时长静音(支持 ms / s 单位),仅 wav/pcm 格式生效 |
| <prosody rate="0.8">...</prosody> | 调整语速/音调,rate/pitch 支持绝对值(0.5-2.0)、百分比(+10%)、关键字(slow/fast/normal) |
| <emphasis>...</emphasis> | 强调片段,自动略增音调并轻微减速 |
| <speak>...</speak> | 外层包装标签(可选),自动剥离 |
<speak>
你好,欢迎使用王小听。
<break time="500ms"/>
<prosody rate="0.8" pitch="1.1">这里是慢速高音调片段。</prosody>
<emphasis>重点强调内容</emphasis>
</speak>多说话人对话
使用 <dialog> 包裹多段 <speaker voice="音色ID">文本</speaker> 实现一段文本多角色配音,每个说话人使用不同音色,对话之间自动插入 300ms 短停顿。
<dialog>
<speaker voice="longanhuan">你好,今天天气真好。</speaker>
<speaker voice="longanyang">是啊,我们去公园散步吧。</speaker>
<speaker voice="longanhuan">好主意,走吧!</speaker>
</dialog>流式 TTS
POST /v1/audio/speech/stream 按句切分,每段合成完成立即推送 PCM 字节流(16-bit 单声道),实现首字低延迟播放。响应 Content-Type: audio/pcm。前端使用 fetch + ReadableStream 读取,AudioContext 解码播放。流式接口固定输出 PCM,不支持 mp3/wav。
// 浏览器 fetch + ReadableStream 流式播放
const resp = await fetch("https://api.wxtts.com/v1/audio/speech/stream", {
method: "POST",
headers: {
"Authorization": "Bearer sk-wxtts-xxx",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "tts-1",
input: "长文本将按句切分,每段合成完成立即推送 PCM 流,实现首字低延迟。",
voice: "longanhuan"
})
});
const reader = resp.body.getReader();
const audioCtx = new AudioContext({ sampleRate: 22050 });
while (true) {
const { done, value } = await reader.read();
if (done) break;
// value 为 16-bit PCM 字节,用 AudioBufferSourceNode 播放
const audioBuffer = pcmToAudioBuffer(value, 22050);
const src = audioCtx.createBufferSource();
src.buffer = audioBuffer;
src.connect(audioCtx.destination);
src.start();
}错误码
| 状态码 | 说明 |
|---|---|
| 400 | 请求参数错误(如文本为空、音色不存在、格式不支持) |
| 401 | 未认证或 API Key 无效 |
| 429 | 请求过于频繁,请稍后再试 |
| 500 | 服务器内部错误 |
限流策略
API 服务仅向 Pro 用户开放,Free / Creator 用户请使用配音工具进行语音合成。
| 套餐 | 并发 | 每分钟请求 | 每月字符 |
|---|---|---|---|
| Free / Creator | 不支持 | 不支持 | 不支持 |
| Pro | 5 | 60 | 10 万 |
超限返回 429。