切换日光/暗黑模式
原生透传层
文生音 TTS
把文本合成为语音,直接返回音频流。请求体原样转发给 Grok,报错是官方原文。
POST
/xai/v1/tts端点
http
POST /xai/v1/tts
GET /xai/v1/tts/voices # 音色列表
GET /xai/v1/tts/voices/{voice_id} # 单个音色详情
WSS /xai/v1/tts # 流式合成,见总览这是 原生透传路径。同一能力在 OpenAI 兼容层的写法见 文生音 TTS(OpenAI 兼容)。
同字段的无前缀路径
/v1/tts 用的是完全相同的字段名(不转换),区别只是报错会被包成 OpenAI 信封 {"error":{"message":...}}。
- 想要 xAI 原文报错 → 用本页的
/xai/v1/tts - 想要统一错误格式、又不想改字段名 → 用
/v1/tts
请求
bash
curl -X POST https://api.wxiai.com/xai/v1/tts \
-H "Authorization: Bearer $WXIAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "你好,这是一段语音合成测试。",
"voice_id": "eve",
"language": "zh"
}' \
--output speech.mp3请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
text | 是 | 要合成的文本,最长 15,000 字符。支持语音标签 |
language | 是 | BCP-47 语言码(en、zh、pt-BR)或 auto 自动识别。大小写不敏感 |
voice_id | 否 | 音色 ID,不传默认 eve。大小写不敏感 |
speed | 否 | 语速倍率,0.7–1.5,默认 1.0 |
output_format | 否 | 输出编码,见总览。不传默认 MP3 / 24 kHz / 128 kbps |
with_timestamps | 否 | 为 true 时返回 JSON 信封,含 base64 音频 + 逐字符时间戳 |
text_normalization | 否 | 为 true 时先把数字、缩写、符号转成口语形式再合成 |
optimize_streaming_latency | 否 | 流式合成的延迟档位:0(默认,不做优化、音质最好)、1(首包更小、块边界有轻微音质损失)。官方指南另提到 2 |
replace | 否 | 发音替换表,见 TTS 总览 |
原生路径不认 OpenAI 的字段名
input、voice、response_format 只兼容层有效。原生层写它们会被原样转发给 Grok 并报缺字段。
官方字段是 text、voice_id、output_format。
返回
成功时返回音频二进制流,Content-Type 取决于 output_format.codec:
curl用--output speech.mp3存文件- 别用
response.json(),会解析失败
例外:传了 with_timestamps: true 时改成返回 application/json:
json
{
"audio": "<base64 音频>",
"content_type": "audio/mpeg",
"duration": 0.92,
"audio_timestamps": {
"graph_chars": ["H", "e", "l", "l", "o"],
"graph_times": [
[0.00, 0.06], [0.06, 0.12], [0.12, 0.18], [0.18, 0.24], [0.24, 0.34]
]
}
}graph_chars[i] 与 graph_times[i] 按下标一一对应。按下标遍历 graph_chars,不要用下标去切原始文本——开了 text_normalization 时一个符号可能被读成好几个词,时间只记在它的第一个字符上。
音色
| 说明 | |
|---|---|
| 默认音色 | eve |
| 内置音色 | 至少 26 个,常用示例值:eve、ara、rex、leo |
| 大小写 | 不敏感,eve / Eve / EVE 都能用 |
bash
curl https://api.wxiai.com/xai/v1/tts/voices \
-H "Authorization: Bearer $WXIAI_API_KEY"返回每个音色的 voice_id、name、language。完整清单、语言表、语音标签、输出格式、发音替换与自定义音色见音频处理总览。
这一层的注意点
language是必填的:不传直接报参数错误。不想指定就传auto。voice_id不是voice:写错了在原生层是「字段缺失」,不是「音色不存在」。- 传了
text之外的字段不会本地报错:原生层不做校验,错误由 Grok 返回。 url类参数没有:TTS 是同步返回音频流,不产生临时链接。
相关页
- 音频处理总览 —— 音色清单、20 种语言、语音标签、输出格式、逐字符时间戳
- 文生音 TTS(OpenAI 兼容) —— 同一能力的另一条路径
- 音生文 STT(原生透传) —— 反向能力
- 实时语音(原生透传) —— 双向对话
