MossHubAPI 文档
开发者文档 语音合成

语音合成

下载代码

按 MiniMax 官方格式把文本合成为语音,音频以十六进制编码放在 JSON 响应里。

请求

POST /minimax/v1/t2a_v2
Authorization: Bearer $MOSSHUB_API_KEY
Content-Type: application/json
{
  "model": "YOUR_MODEL_ID",
  "text": "你好,欢迎使用语音合成。",
  "voice_setting": { "voice_id": "YOUR_VOICE_ID" }
}

请求体沿用 MiniMax 官方格式:MossHub 只把模型 ID 换成上游模型,text、voice_setting 等其余字段原样转发。音色 ID、语速和音频格式等以 MiniMax 官方文档为准。

响应

{
  "data": { "audio": "4944…", "status": 2 },
  "extra_info": { "audio_format": "mp3", "usage_characters": 22 },
  "trace_id": "07053e4cf976",
  "base_resp": { "status_code": 0, "status_msg": "success" }
}

响应是 JSON,不是音频文件:data.audio 是十六进制编码的音频,格式见 extra_info.audio_format;base_resp.status_code 为 0 表示成功。

传 "stream": true 时按 SSE 分段返回,每段 data: 是同样结构的 JSON,最后一段带 extra_info。

错误

MiniMax 的参数错误以 HTTP 200 返回,base_resp.status_code 不为 0,MossHub 原样转发,不计费。MossHub 自己拒绝的请求也用 base_resp 表示,同时带 HTTP 状态:

HTTP 状态base_resp.status_code原因
4002013请求体不是带 model 的 JSON 对象,或模型不走这个端点
4011004密钥无效或已过期
4021008额度已用完
4031004这把密钥不能使用该模型
4042013模型不存在
4132013请求体超过 32 MiB
4291002线路繁忙,按 Retry-After 等待
5021033上游出错或拒绝了 MossHub 的上游账号
5031000暂无可用线路
5041001上游超时

流式返回中途出错时,最后一段的 base_resp.status_code 不为 0;由 MossHub 结束的流为 1033。

计费

按 MiniMax 返回的 extra_info.usage_characters 计费,单位是字符。上游没有返回这个值时(比如流式在最后一段之前中断),按请求的 text 估算:汉字算 2 个字符,其他字符算 1 个。客户端断开后请求仍会完成并计费。单价见控制台模型详情的「价格」。

完整调用示例

先替换密钥、授权模型 ID 与示例输入;不自动执行。

curl -sS "$MOSSHUB_API_BASE/minimax/v1/t2a_v2" \
  -H "Authorization: Bearer $MOSSHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"YOUR_MODEL_ID","text":"你好,欢迎使用语音合成。","voice_setting":{"voice_id":"YOUR_VOICE_ID"}}' \
  | python3 -c 'import json, sys
reply = json.load(sys.stdin)
if reply.get("base_resp", {}).get("status_code") != 0:
    sys.exit(json.dumps(reply, ensure_ascii=False))
name = "speech." + reply["extra_info"]["audio_format"]
open(name, "wb").write(bytes.fromhex(reply["data"]["audio"]))
print("已保存", name)'
实际可调用的模型、授权与价格以控制台为准。
页面字体:MiSans(小米,依《MiSans 字体知识产权许可协议》使用);Google Sans Flex(SIL Open Font License 1.1)。