API 平台

流式语音生成

使用 TTS 1.5 Flash 进行低延迟流式语音生成。该能力与单人语音生成使用相同 Endpoint,通过 version=flash-20260626stream=true 启用。

POST
/v1/audio/speech

请求体为 JSON。stream_format=sse 返回 SSE;省略 stream_format 或传 audio 时返回原始 PCM 字节流。

认证

在请求头中加入 Authorization: Bearer <API_KEY> 完成鉴权,密钥可在控制台「API 密钥」页生成。

示例
curl https://api.mosi.cn/v1/audio/speech \
  -H "Authorization: Bearer $MOSS_API_KEY"

支持模型

字段允许值
model

moss-tts

version

flash-20260626

启用条件与约束

  • 必须精确传入小写 model=moss-tts,大小写不会被归一化。
  • version 必填,必须传 flash-20260626
  • stream 必填,必须为 true
  • response_format 必填,当前仅支持 pcm
  • stream_format=sse 返回 SSE,每帧为 data: JSON Event
  • 省略 stream_format 或传 audio 时返回原始 PCM 字节流。
  • sample_rate 不是公开请求参数,传入非零值会在创建任务前返回参数错误。
  • stream=true 不支持和 async=true 同时使用,非空 webhook_url 也不支持流式调用。
  • voice_urlvoice_datafile_id 不支持流式调用,只能使用 voice_id 指定音色 ID。
  • delivery_methodaigc_metadata 当前在流式路径中不会生效,请勿传入。

请求字段

字段类型必填说明
modelstring

必须为精确小写值 moss-tts

versionstring

必须传 flash-20260626;不传该版本无法启用 TTS 1.5 Flash 流式语音生成。

inputstring

待合成文本。

voice_idstring

音色 ID;可通过 查询音色列表 获取;也可前往 Mossland 音色库,在音色卡片上点击复制图标获取。TTS 只接受音色 ID,不支持 voice_url / voice_data,也不接受内联音频或参考音频。

languagestring

语言提示,去除首尾空白后传给模型。

speednumber

语速,默认 1,范围 0.25-4;超出范围返回参数错误。

expected_duration_secnumber

期望音频时长,单位秒;传入时必须大于 0

streamboolean

设为 true 启用 TTS 1.5 Flash 流式语音生成。

response_formatstring

流式请求当前仅支持 pcm

stream_formatstring

audiosse;默认 audio,返回原始 PCM 字节;sse 返回 data: JSON Event。

请求示例

curl --no-buffer -X POST "https://api.mosi.cn/v1/audio/speech" \
  -H "Authorization: Bearer $MOSS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "moss-tts",
    "version": "flash-20260626",
    "input": "欢迎使用 Mossland API。",
    "voice_id": "<voice_id>",
    "language": "zh",
    "speed": 1,
    "expected_duration_sec": 3,
    "stream": true,
    "response_format": "pcm",
    "stream_format": "sse"
  }'

流式响应

stream_format=sse 返回 SSE,每一帧的 data: 后都是一个 JSON Event。type 是事件判别字段,客户端应根据 type 选择对应字段结构。省略 stream_format 或传 audio 时返回原始 PCM 字节流。

部分接入链路会先返回 task.created,部分会直接从 speech.created 开始。客户端必须以每帧的 type 为准,不要依赖固定的首个事件。

SSE Event Types

Event Type说明终态
task.created流式任务创建成功后可能返回;并非所有接入链路都会发送
speech.created声明后续 PCM 音频分片的格式参数
speech.audio.deltaBase64 编码的 PCM 音频分片,可能返回零个或多个
speech.audio.doneTTS 正常流的终态事件,收到后可结束 SSE 读取
error流已经开始后发生失败时返回,收到后停止读取

task.created

字段类型必返说明
typestring

固定为 task.created

task_idstring

AGW 创建的流式任务 ID。

objectstring

固定为 audio.speech

statusstring

创建时通常为 PROCESSING

modelstring

客户端请求使用的公开模型名。

speech.created

字段类型必返说明
typestring

固定为 speech.created

formatstring

当前必须为 pcm;其他值会使流失败。

sample_rateinteger

采样率,单位 Hz;必须为正数并满足 WAV 参数范围,以下游事件为准。

channelsinteger

声道数;必须为正数并满足 WAV 参数范围,以下游事件为准。

bit_depthinteger

位深;必须为正数、能被 8 整除并满足 WAV 参数范围,以下游事件为准。

speech.audio.delta

字段类型必返说明
typestring

固定为 speech.audio.delta

audiostring正常应有

非空时为 Base64 编码的 PCM 字节分片;当前实现允许空字符串,客户端应忽略空分片。

speech.audio.done

字段类型必返说明
typestring

固定为 speech.audio.done

error

字段类型必返说明
typestring

固定为 error

errorobject正常应有

错误详情。

error.codestring

机器可读错误码。

error.messagestring

错误说明。

原始 PCM 响应头

字段类型出现条件说明
Content-TypeHTTP header必有固定为 audio/pcm
X-Sample-RateHTTP header必有原始 PCM 采样率,客户端必须按该值解释音频。
X-ChannelsHTTP header必有原始 PCM 声道数。
X-Bit-DepthHTTP header必有原始 PCM 位深。

响应示例

SSE 与原始 PCM
# SSE 响应示例:请求中传 stream_format=sse
Content-Type: text/event-stream; charset=utf-8

# 部分接入链路会省略 task.created,直接从 speech.created 开始
data: {"type":"task.created","task_id":"task-123","object":"audio.speech","status":"PROCESSING","model":"moss-tts"}

data: {"type":"speech.created","format":"pcm","sample_rate":48000,"channels":1,"bit_depth":16}

data: {"type":"speech.audio.delta","audio":"BASE64_PCM_CHUNK"}

data: {"type":"speech.audio.done"}

# 原始 PCM 响应示例:省略 stream_format 或传 stream_format=audio
Content-Type: audio/pcm
X-Sample-Rate: 48000
X-Channels: 1
X-Bit-Depth: 16

<raw pcm bytes>

错误与断连语义

  • missing_required_fieldinput 缺失或去除首尾空白后为空。
  • unsupported_response_format / response_format:流式请求未显式使用 pcm,或传入其他音频格式。
  • unsupported_stream / streamstream_formataudio/sse,或解析出的模型不支持流式调用。
  • unsupported_for_stream / sample_rate:流式请求传入非零 sample_rate
  • invalid_range / speedspeed 不在 0.25-4 范围内。
  • unsupported_with_async / streamstream=trueasync=true 同时传入。
  • unsupported_with_webhook / stream:流式请求传入非空 webhook_url
  • 请求校验、模型解析、流式能力检查和任务创建错误发生在响应开始前,返回标准 JSON 错误。
  • SSE 在 speech.audio.done 前失败时发送 error 数据帧并结束连接。
  • 原始 PCM 在响应头或音频已写入后失败时只能结束连接,已返回的 PCM 可能不完整。
  • 客户端断开会终止当前 HTTP 流;不同接入链路可能取消上游请求,也可能只取消当前订阅。客户端不要假定生成任务一定继续或一定被取消。
  • 原始 PCM 场景不能只凭 EOF 判断音频是否完整。

下一步