Audio Speech 语音合成 (TTS)
语音合成(Text To Speech,TTS)接口,支持将文本转换为自然流畅的语音音频。 采用同步模式,接口直接返回生成的音频文件 URL,无需轮询任务状态。
接口地址
POST /api/openai/audioSpeech
POST /api/openai/audioSpeech
请求头 Headers
| 名称 | 是否必须 | 说明 |
|---|---|---|
| Authorization | 是 | Bearer API_KEY |
| Content-Type | 是 | application/json |
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | TTS 模型名称,见下方支持模型 |
| text | string | 是 | 需要转换的文本内容(非空即可) |
| voice | string | 否 | 音色角色,不传则使用模型默认音色 |
请求示例
{
"model": "qwen3-tts-flash",
"text": "你好,欢迎使用聚模平台语音合成服务",
"voice": "zhiyan"
}cURL 示例
curl https://api.hejushuzi.com/api/openai/audioSpeech \
-H "Authorization: Bearer sk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-tts-flash",
"text": "你好,欢迎使用聚模平台语音合成服务",
"voice": "zhiyan"
}'成功返回
{
"code": 200,
"msg": "success",
"data": {
"type": "audio",
"url": "/uploads/audio/20260801/abc123.wav",
"usage": {
"characters": 21
}
}
}返回字段说明
| 字段 | 说明 |
|---|---|
| code | 状态码,200 表示成功 |
| data.type | 资源类型,固定为 "audio" |
| data.url | 音频文件访问地址 |
| data.usage.characters | 本次消耗的字符数(用于计费) |
支持模型
以下为常用推荐模型,完整清单与单价以控制台实时报价为准:
| 模型 | 厂商 | 说明 |
|---|---|---|
| qwen3-tts-flash | 阿里百炼 | 通义 TTS 快速版 |
| qwen-audio-3.0-tts-plus | 阿里百炼 | Qwen Audio 3.0 · 高质量 |
| qwen-audio-3.0-tts-flash | 阿里百炼 | Qwen Audio 3.0 · 高性价比 |
可用音色
以下为平台支持的音色角色,通过 voice 参数指定:
| 音色 ID | 说明 | 适用模型 |
|---|---|---|
| Cherry | 女声(默认音色) | qwen3-tts-flash 等 |
| zhiyan | 志妍 · 女声 | qwen3-tts-flash 等 |
| xiaoning | 晓宁 · 女声 | qwen3-tts-flash 等 |
| zhiqiang | 志强 · 男声 | qwen3-tts-flash 等 |
提示 不同模型支持的音色可能不同,具体以模型实际支持为准。不传 voice 参数时使用模型默认音色。
计费说明
- 计费方式:按实际消耗字符数计费
- 计费公式:费用 = characters / 10,000 × 单价
- 字符数由接口返回的 usage.characters 字段统计
- 费用保留 6 位小数,实时从账户余额扣除
- 余额不足等业务错误统一返回
500,不会调用模型
错误码
音频接口内部将大部分业务错误统一处理为500(缺少 model / text、模型不存在、非 TTS 模型、余额不足、上游异常等均返回{"code":500,"msg":"..."}),仅鉴权失败返回鉴权层错误码。
| code | 说明 | 触发场景 | 解决方案 |
|---|---|---|---|
| 401 | API Key 无效 | Authorization 头缺失或 API Key 不存在 | 检查 API Key 是否正确 |
| 500 | 音频生成失败 | 缺少 model/text、模型不存在、余额不足或上游异常 | 检查请求参数,充值余额,稍后重试或联系客服 |
错误返回示例
{ "code": 401, "msg": "Invalid API Key" }
{ "code": 500, "msg": "text is required" }
{ "code": 500, "msg": "Insufficient balance" }
{ "code": 500, "msg": "Model not found" }