输入关键词搜索

MiniMax-Speech

更新时间: 2026/08/27 10:13:38

本文介绍网易云信大模型 API(简称 AIHub)与 MiniMax 厂商兼容 的同步文本转语音接口的使用说明。

AIHub 通过 MiniMax Provider-native 入口提供同步文本转语音能力。接口支持非流式 JSON 和 SSE 流式输出,请求参数与成功响应保持 MiniMax 原生结构;业务方使用 AIHub API Key 和 AIHub Logical Model,网关负责鉴权、模型授权、路由、上游凭证注入、用量解析和计费。

请求说明

AIHub 入口:

POST https://ai.yunxinapi.com/hub/minimax/v1/t2a_v2

  • 请勿 将 MiniMax 原厂 API Key 发送到 AIHub。
  • AIHub 根据 Logical Model 选择 MiniMax Channel,并在出站前注入对应的上游凭证和上游模型。

请求参数

Header 参数

参数 必填 说明 示例
Authorization 必填 AIHub API Key Bearer 鉴权 Bearer <AIHUB_API_KEY>
Content-Type 必填 请求体必须为 JSON application/json
Accept 流式建议 stream: true 时可显式声明 SSE text/event-stream

记录 AIHub Request ID 和响应中的 trace_id不要 记录 API Key 或完整音频正文。

Body 参数

参数 类型 必填/默认值 说明 示例
model string 必填 AIHub Logical Model,AIHub 校验授权后按路由配置改写为上游 MiniMax 模型 "speech-2.8-hd"
text string 必填 待合成文本,必须 少于 10000 个字符;超过 3000 字符时建议使用流式输出 "真正的危险不是计算机开始像人一样思考。"
stream boolean 可选,默认 false false:返回 JSON;true:返回 text/event-stream true
- stream_options object 流式可选 控制最终 Chunk 是否携带聚合后的完整音频 {"exclude_aggregated_audio":true}
exclude_aggregated_audio boolean 可选,默认 false false:最终 status: 2 Chunk 包含完整聚合音频;true:最终 Chunk 不再重复完整音频。长音频建议设为 true
默认值为 false 时,不能 将前序增量音频与最终完整音频直接拼接,否则会得到重复内容。客户端应 只使用最终 Chunk 的完整音频,或设置 exclude_aggregated_audio: true 后拼接前序增量 Chunk。
true
- voice_setting object 可选 音色合成配置。单音色需提供 voice_id;混合音色时将 voice_id 置空并传 timbre_weights {"voice_id":"English_expressive_narrator"}
voice_id string 单音色必填 系统音色、复刻音色或文生音色 ID;混合音色时置空 "English_expressive_narrator"
speed number 可选,默认 1 语速范围 [0.5, 2] 1.05
vol number 可选,默认 1 音量范围 (0, 10] 1
pitch integer 可选,默认 0 音调范围 [-12, 12]0 表示原音调 0
emotion string 可选 happysadangryfearfuldisgustedsurprisedcalmfluentwhisper。模型默认按文本自动选择,仅明确需要时传入
fluentwhisper 仅对 Speech 2.6 生效;Speech 2.8 不支持 whisper。其他 Emotion 是否达到预期取决于模型、音色和文本。
"happy"
text_normalization boolean 可选,默认 false 中文/英文文本规范化,可改善数字朗读,但略微增加延迟 true
latex_read boolean 可选,默认 false 朗读 $$...$$ 包裹的 LaTeX;仅支持中文,开启后 language_boost 被设为 Chinese true
- audio_setting object 可选 采样率、码率、封装格式、声道和流式 CBR 配置
编码说明:pcmu_raw/pcmu_wav:8 kHz G.711 mu-law 编码;前者为裸数据,后者封装在 WAV 容器中。opus:Ogg/Opus 编码。
{"sample_rate":32000,"format":"mp3"}
sample_rate integer 可选,默认 32000 80001600022050240003200044100 32000
bitrate integer 可选,默认 128000 3200064000128000256000;仅对 mp3 生效 128000
format string 可选,默认 mp3 mp3pcmflacwavpcmu_rawpcmu_wavopus "mp3"
channel integer 可选,默认 1 1 单声道,2 双声道 1
force_cbr boolean 可选,默认 false 恒定比特率编码;仅流式 mp3 输出时生效 true
pronunciation_dict object 可选 自定义发音替换规则 {"tone":["处理/(chu3)(li3)"]}
timbre_weights object[] 可选(旧字段) 混合最多 4 个音色;每项同时提供 voice_idweight [{"voice_id":"female-chengshu","weight":30}]
language_boost string 可选,默认 null 增强指定语言或方言;语言未知时可传 auto "Chinese,Yue"
- voice_modify object 可选 变声参数和单个音效。仅支持非流式 mp3/wav/flac,或流式 mp3 {"pitch":10,"sound_effects":"spacious_echo"}
pitch integer 可选 音高范围 [-100, 100];负值更低沉,正值更明亮 10
intensity integer 可选 强度范围 [-100, 100];负值更有力量,正值更柔和 -10
timbre integer 可选 音色范围 [-100, 100];负值更浑厚,正值更清脆 5
sound_effects string 可选 单次仅选一个:spacious_echoauditorium_echolofi_telephonerobotic "spacious_echo"
subtitle_enable boolean 可选,默认 false 是否生成字幕下载链接;2.8、2.6、02、01 系列均支持 true
subtitle_type string 可选,默认 sentence 字幕粒度:sentencewordword_streaming;后者仅 stream: true 时有效 "word_streaming"
output_format string 可选,默认 hex hexurl。仅非流式支持 url(有效期 24 小时);流式固定 hex "url"

发音与混合音色:

参数 类型 必填 说明 示例
pronunciation_dict.tone string[] 可选 格式 原文/替换内容,支持拼音(带声调数字)、IPA、日语假名/罗马音;多条规则同时生效 ["resume/(rɪˈzjuːm)","20日/はつか"]
timbre_weights[].voice_id string 混合项必填 参与混合的音色 ID "female-chengshu"
timbre_weights[].weight integer 混合项必填 范围 [1, 100],值越高越接近该音色;最多混合 4 个 70

混合音色示例

json{
  "voice_setting": {
    "voice_id": ""
  },
  "timbre_weights": [
    {"voice_id": "female-chengshu", "weight": 30},
    {"voice_id": "female-tianmei", "weight": 70}
  ]
}

请求示例

非流式 Hex 输出

bashcurl -sS "https://ai.yunxinapi.com/hub/minimax/v1/t2a_v2" \
  -H "Authorization: Bearer <AIHUB_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "speech-2.8-hd",
    "text": "今天是不是很开心呀(laughs),当然了!",
    "stream": false,
    "output_format": "hex",
    "language_boost": "Chinese",
    "voice_setting": {
      "voice_id": "Chinese (Mandarin)_Lyrical_Voice",
      "speed": 1,
      "vol": 1,
      "pitch": 0,
      "emotion": "happy"
    },
    "pronunciation_dict": {
      "tone": ["处理/(chu3)(li3)"]
    },
    "audio_setting": {
      "sample_rate": 32000,
      "bitrate": 128000,
      "format": "mp3",
      "channel": 1
    }
  }'

响应中的 data.audio 是十六进制字符串,每两个 Hex 字符表示一个字节。写文件前 必须先解码不要 将字符串本身当作 MP3 文本直接保存。

非流式 URL 输出

json{
  "stream": false,
  "output_format": "url"
}

MiniMax 返回的 URL 有效期为 24 小时。调用方应及时下载并转存到自有受控存储,不要 依赖该 URL 作为长期资源地址。

SSE 流式输出

bashcurl --no-buffer -sS \
  "https://ai.yunxinapi.com/hub/minimax/v1/t2a_v2" \
  -H "Authorization: Bearer <AIHUB_API_KEY>" \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -d '{
    "model": "speech-2.8-turbo",
    "text": "流式语音合成测试。第一段生成后即可开始播放。",
    "stream": true,
    "stream_options": {
      "exclude_aggregated_audio": true
    },
    "output_format": "hex",
    "voice_setting": {
      "voice_id": "English_expressive_narrator",
      "speed": 1,
      "vol": 1,
      "pitch": 0
    },
    "audio_setting": {
      "sample_rate": 32000,
      "bitrate": 128000,
      "format": "mp3",
      "channel": 1,
      "force_cbr": true
    }
  }'

非流式响应

响应参数

参数 类型 说明
data object/null 合成结果。官网明确提示可能为 null,访问子字段前 必须判空
data.audio string Hex 编码音频;output_format: "url" 时为 URL 字符串
data.subtitle_file string 字幕后返回的 JSON 字幕下载链接,时间戳单位为毫秒;句级字幕单句不超过 50 字
data.status integer 1 合成中,2 合成结束;非流式成功通常为 2
extra_info.audio_length integer 音频时长(毫秒)
extra_info.audio_sample_rate integer 实际采样率
extra_info.audio_size integer 音频大小(字节)
extra_info.bitrate integer 实际比特率
extra_info.word_count integer 已发音字符统计(含汉字、数字、字母,不含标点)
extra_info.invisible_character_ratio number 非法字符占比;≤10% 时生成音频,>10% 时失败
extra_info.usage_characters integer 本次计费字符数。AIHub 优先使用该值;缺失时按 text 估算并标记 usage_source: estimated
extra_info.audio_format string 音频格式(mp3pcmflac
extra_info.audio_channel integer 1 单声道,2 双声道
trace_id string MiniMax 会话 ID,用于上游排障
base_resp.status_code integer MiniMax 业务状态码,0 表示成功
base_resp.status_msg string MiniMax 业务状态说明

成功响应示例

json{
  "data": {
    "audio": "<HEX_ENCODED_AUDIO>",
    "status": 2
  },
  "extra_info": {
    "audio_length": 11124,
    "audio_sample_rate": 32000,
    "audio_size": 179926,
    "bitrate": 128000,
    "word_count": 163,
    "invisible_character_ratio": 0,
    "usage_characters": 163,
    "audio_format": "mp3",
    "audio_channel": 1
  },
  "trace_id": "01b8bf9bb7433cc75c18eee6cfa8fe21",
  "base_resp": {
    "status_code": 0,
    "status_msg": "success"
  }
}

SSE 流式响应

stream: true 时响应 Content-Typetext/event-stream。每个 data: 行后为 MiniMax 原生 JSON 对象( OpenAI Chat Completions Chunk, event: 事件名要求)。

textdata: {"data":{"audio":"<HEX_CHUNK_1>","status":1},"trace_id":"trace_example","base_resp":{"status_code":0,"status_msg":""}}

data: {"data":{"audio":"<HEX_CHUNK_2>","status":1},"trace_id":"trace_example","base_resp":{"status_code":0,"status_msg":""}}

data: {"data":{"audio":"","status":2},"extra_info":{"audio_length":5863,"usage_characters":45,"audio_format":"mp3"},"trace_id":"trace_example","base_resp":{"status_code":0,"status_msg":"success"}}

客户端处理规则

规则 说明
解析方式 按 SSE 行解析 data:不要 假设一次网络读取恰好对应一个完整事件
增量音频(status: 1 data.audio 做 Hex 解码并按顺序写入音频流
终止 Chunk(status: 2 携带 extra_info.usage_characters 和最终 base_resp。处理完后 立即结束不要 等待 [DONE] 或连接 EOF
exclude_aggregated_audio: true 以前序 Chunk 拼接结果为完整音频;最终 Chunk 的 data.audio 可为空
exclude_aggregated_audio: false(默认) 最终 Chunk 可能再次携带完整聚合音频;应在“使用最终完整音频”和“拼接前序增量音频”之间 二选一
异常处理 收到 base_resp.status_code != 0、连接异常或未收到终止 Chunk 时,不要 视为完整成功

文本控制

换行、停顿和行内发音

控制方式 说明 示例
换行符 段落切换 第一段\n第二段
停顿标记 <#x#>x 范围 [0.01, 99.99] 秒,最多两位小数。必须位于两个可发音文本片段之间,不能 连续使用 请稍等<#0.8#>马上开始。
IPA/拼音 半角括号中写 IPA,或使用 1-5 表示普通话声调、1-6 表示粤语声调 (lɪv)(he2)平(sung3)

示例

text请稍等<#0.8#>马上开始。
This word is pronounced (lɪv), not (laɪv).
这是(he2)平,不是(huo4)面。
去街市買啲(sung3)。

Speech 2.8 语气词标签

Speech 2.8 HD/Turbo 支持以下文本内标签:

(laughs)(chuckle)(coughs)(clear-throat)(groans)(breath)(pant)(inhale)(exhale)(gasps)(sniffs)(sighs)(snorts)(burps)(lip-smacking)(humming)(hissing)(emm)(sneezes)

这些标签是 文本内容的一部分不要 放入 voice_setting.emotion

language_boost 可选值

ChineseChinese,YueEnglishArabicRussianSpanishFrenchPortugueseGermanTurkishDutchUkrainianVietnameseIndonesianJapaneseItalianKoreanThaiPolishRomanianGreekCzechFinnishHindiBulgarianDanishHebrewMalayPersianSlovakSwedishCroatianFilipinoHungarianNorwegianSlovenianCatalanNynorskTamilAfrikaansauto

语言未知时使用 auto。Speech 01/02 暂不支持 PersianFilipinoTamil

AIHub 行为与限制

行为 说明
Provider-native 路径 /minimax/v1/t2a_v2 为 MiniMax 原生路径。AIHub 保留请求字段和成功响应结构, 转换为 OpenAI Audio API
模型改写 请求中的 model 用于授权和路由,出站时可改写为 Channel 配置的上游模型
业务成功判断 HTTP 200 不等于 业务成功。base_resp.status_code: 0 才表示 MiniMax 业务成功
常见业务错误码 1000 未知错误、1001 超时、1002 限流、1004 鉴权失败、1039 TPM 限流、1042 非法字符 >10%、2013 参数错误
响应处理 AIHub 处理 MiniMax 上游 Gzip 响应,调用方无需 设置 Accept-Encoding
请求体限制 JSON 请求体默认 32 MiB,普通 TTS 请求通常远低于此
SSE 行限制 每个 data: 行上限 10 MiB。长音频应设置 stream_options.exclude_aggregated_audio: true,避免最终 Chunk 超限
日志安全 data.audio Hex 内容、临时 URL、字幕 URL 和待合成文本均可能包含敏感信息。只记录 Request ID、trace_id、状态码和脱敏资源 ID

错误处理要点

  • 非流式错误:使用 AIHub 统一错误响应。
  • 流式错误:一旦开始发送,后续失败可能仅表现为 SSE 中断或 MiniMax 原生失败 Frame。客户端 必须同时处理 HTTP 状态、base_resp 和流是否完整结束。
此文档是否对你有帮助?
有帮助
去反馈
  • 请求说明
  • 请求参数
  • Header 参数
  • Body 参数
  • 请求示例
  • 非流式 Hex 输出
  • 非流式 URL 输出
  • SSE 流式输出
  • 非流式响应
  • 响应参数
  • 成功响应示例
  • SSE 流式响应
  • 客户端处理规则
  • 文本控制
  • 换行、停顿和行内发音
  • Speech 2.8 语气词标签
  • language_boost 可选值
  • AIHub 行为与限制
  • 错误处理要点