小程序开放平台

文档中心
智能体API
对话 LLM
(Beta)TTS语音合成
generateSpeech
streamSpeech
消费侧(小组件)API

streamSpeech

应用开发
>
API和SDK
>
智能体API
>
(Beta)TTS语音合成
>
streamSpeech
>
更新时间:2026-03-20 15:08:54

方法概述

streamSpeech
用于流式语音合成,边合成边返回音频分片,适合长文本、实时播报等场景。

基本信息

内容
函数签名
streamSpeech(options: TTSRequestOptions): Promise<DoStreamSpeechOutput>
返回类型
Promise<DoStreamSpeechOutput>
AsyncIterable<TTSStreamChunk>
调用方式通过
this.createModel("<tts-model>")
获取模型实例后调用
适用场景长文本合成、低延迟首包、实时语音输出

功能说明

  • 流式输出:按句子事件持续返回音频分片;
  • 事件驱动:支持句子开始/合成中/结束三个阶段事件;
  • 可增量消费:
    for await ... of
    逐块处理;
  • generateSpeech
    共用入参结构,差异主要在输出形式。

参数说明

streamSpeech
入参与
generateSpeech
一致,使用
TTSRequestOptions

返回值说明

TTSStreamChunk(流式分片结构)

字段
类型
描述
audio
Buffer
音频分片(
sentence-begin
/
sentence-end
事件可为空)
event
"sentence-begin" | "sentence-synthesis" | "sentence-end"
当前句子事件类型
sentence.index
number
句子序号
sentence.originalText
string
原始句子文本(部分事件返回)

event 状态说明

  • sentence-begin
    :句子开始合成;
  • sentence-synthesis
    :句子合成中(含音频数据);
  • sentence-end
    :句子合成结束。

使用示例

基础流式示例

const ttsModel = this.createModel("cosyvoice-v3-flash");
const stream = await ttsModel.streamSpeech({
  text: "这是一段较长内容,用于演示流式语音合成。",
  voice: "longanyang",
  format: "mp3",
});

for await (const chunk of stream) {
  if (chunk.event === "sentence-synthesis" && chunk.audio.length > 0) {
    // 处理音频分片
  }
}

重试建议示例(伪代码)

try {
  const stream = await ttsModel.streamSpeech(options);
  for await (const chunk of stream) {
    // consume chunks
  }
} catch (err) {
  // 处理网络抖动/任务失败并按策略重试
}

注意事项

  • 长文本建议流式调用,避免一次性等待;
  • 处理分片时建议区分
    event
    类型,不要把空音频块当错误;
  • 建议在异常链路中增加重试与超时控制;
  • 当前业务侧不支持直连下游 API,由 SDK 内部处理协议调用。