WebSocket 服务端事件参考
Qwen-Omni-Realtime API 的服务端事件。
服务端错误消息。
连接后收到的第一个事件,包含默认会话配置。
成功处理
VAD 模式下,当音频缓冲区中检测到语音开始时发送。
VAD 模式下,当音频缓冲区中语音结束时发送。服务端同时会发送
输入音频缓冲区提交时发送。
客户端发送
创建对话项时发送。
开启输入音频转录后,此事件会在用户说话过程中高频发送,用于展示实时识别的中间结果。您可以通过拼接
在任何时刻,要获取当前最完整的句子预览,都需要将这两个字段拼接起来:实时预览句子 =
音频缓冲并转录完成后发送。转录使用独立模型(
输入音频转录失败时发送(需已启用转录功能)。与
模型开始生成响应时发送。
响应生成完成后发送。
输出模态为纯文本时,模型生成文本片段时发送。
纯文本输出生成完成时发送。
输出模态包含音频时,模型生成音频片段时发送。
音频输出生成完成时发送。
输出模态包含音频时,模型生成转录文本片段时发送。
音频转录文本生成完成时发送。
响应生成过程中创建新输出项时发送。
输出项完成时发送。
响应生成过程中,向助手消息添加新内容部分时发送。
助手消息中的内容部分流式传输完成时发送。
参考:实时多模态。
error
服务端错误消息。
Example
string
body
事件唯一标识。
string
body
固定为
error。object
body
错误详情。
session.created
连接后收到的第一个事件,包含默认会话配置。
Example
string
body
事件唯一标识。
string
body
固定为
session.created。object
body
会话配置。
session.updated
成功处理 session.update 请求后发送。如果出错,服务端会发送 error 事件。
Example
string
body
事件唯一标识。
string
body
固定为
session.updated。object
body
会话配置。
input_audio_buffer.speech_started
VAD 模式下,当音频缓冲区中检测到语音开始时发送。
在检测到语音之前,每次向缓冲区添加音频时也可能触发此事件。
Example
string
body
事件唯一标识。
string
body
固定为
input_audio_buffer.speech_started。integer
body
从音频输入开始到首次检测到语音的毫秒数。
string
body
用户消息项 ID,在语音结束时创建。该消息项将用户输入追加到对话历史中用于推理。
input_audio_buffer.speech_stopped
VAD 模式下,当音频缓冲区中语音结束时发送。服务端同时会发送 conversation.item.created 来创建用户消息项。
Example
string
body
事件唯一标识。
string
body
固定为
input_audio_buffer.speech_stopped。integer
body
从会话开始到语音结束的毫秒数。
string
body
用户消息项 ID(将被创建)。
input_audio_buffer.committed
输入音频缓冲区提交时发送。
- VAD 模式下,用户说话结束后缓冲区自动提交。
-
手动模式下,在客户端发送
input_audio_buffer.commit后触发。
Example
string
body
事件唯一标识。
string
body
固定为
input_audio_buffer.committed。string
body
用户消息项 ID(将被创建)。
input_audio_buffer.cleared
客户端发送 input_audio_buffer.clear 后触发。
Example
string
body
事件唯一标识。
string
body
固定为
input_audio_buffer.cleared。conversation.item.created
创建对话项时发送。
Example
string
body
事件唯一标识。
string
body
固定为
conversation.item.created。object
body
对话项。
conversation.item.input_audio_transcription.delta
开启输入音频转录后,此事件会在用户说话过程中高频发送,用于展示实时识别的中间结果。您可以通过拼接 text + stash 获取当前最完整的句子预览。
Example
text + stash。
点击查看示例
点击查看示例
假设用户正在说:"今天天气不错,阳光明媚。"以下是您可能会收到的事件流以及如何解读它们:
| 时间点 | 用户说话进度 | API 响应 (text 和 stash) | 客户端 UI 应显示 (text + stash) |
|---|---|---|---|
| T1 | "今天……" | text: "" / stash: "今天" | 今天 |
| T2 | "……天气……" | text: "" / stash: "今天天气" | 今天天气 |
| T3 | "……不错" | text: "今天" / stash: "天气不错" | 今天天气不错("今天"已被确认并移入 text) |
| T4 | (短暂停顿) | text: "今天天气不错," / stash: "" | 今天天气不错,(前半句完全确认) |
| T5 | "……阳光……" | text: "今天天气不错," / stash: "阳光" | 今天天气不错,阳光 |
| T6 | "……明媚。" | text: "今天天气不错," / stash: "阳光明媚。" | 今天天气不错,阳光明媚。 |
| T7 | (结束说话) | - | 使用 conversation.item.input_audio_transcription.completed 的 transcript 内容作为最终结果。 |
string
body
本次事件唯一标识符。
string
body
事件类型,固定为
conversation.item.input_audio_transcription.delta。string
body
关联的对话项 ID。
integer
body
包含音频的内容部分的索引。
string
body
已确认的文本前缀。这是当前句子中,模型已确认不会再变更的部分。
string
body
预识别的文本后缀。这是紧跟在已确认部分之后,模型仍在处理、可能会被修正的临时草稿。
string
body
当前识别到的语言代码(如
zh、en)。string
body
当前检测到的用户情绪(如
neutral、happy)。conversation.item.input_audio_transcription.completed
音频缓冲并转录完成后发送。转录使用独立模型(gummy-realtime-v1)。
转录文本可能与 Qwen-Omni-Realtime 处理的文本有所不同,仅供参考。
Example
string
body
事件唯一标识。
string
body
固定为
conversation.item.input_audio_transcription.completed。string
body
用户消息项 ID。
integer
body
固定为 0。
string
body
转录文本。
conversation.item.input_audio_transcription.failed
输入音频转录失败时发送(需已启用转录功能)。与 error 事件相互独立。
Example
string
body
事件唯一标识。
string
body
固定为
conversation.item.input_audio_transcription.failed。string
body
用户消息项 ID。
integer
body
固定为 0。
object
body
错误详情。
response.created
模型开始生成响应时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.created。object
body
响应对象。
response.done
响应生成完成后发送。response 对象包含所有输出项,但不含原始音频数据。
Example
string
body
事件唯一标识。
string
body
固定为
response.done。object
body
响应对象。
response.text.delta
输出模态为纯文本时,模型生成文本片段时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.text.delta。string
body
增量文本片段。
string
body
响应 ID。
string
body
消息项 ID,用于关联同一消息的各项内容。
integer
body
输出项索引,固定为 0。
integer
body
内容部分索引,固定为 0。
response.text.done
纯文本输出生成完成时发送。
响应被中断、未完成或取消时也会发送此事件。
Example
string
body
事件唯一标识。
string
body
固定为
response.text.done。string
body
响应 ID。
string
body
消息项 ID。
integer
body
输出项索引。
integer
body
内容部分索引。
string
body
完整文本输出。
response.audio.delta
输出模态包含音频时,模型生成音频片段时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.audio.delta。string
body
响应 ID。
string
body
消息项 ID。
integer
body
输出项索引。
integer
body
内容部分索引。
string
body
Base64 编码的音频片段。
response.audio.done
音频输出生成完成时发送。
响应被中断、未完成或取消时也会发送此事件。
Example
string
body
事件唯一标识。
string
body
固定为
response.audio.done。string
body
响应 ID。
string
body
消息项 ID。
integer
body
输出项索引。
integer
body
内容部分索引。
response.audio_transcript.delta
输出模态包含音频时,模型生成转录文本片段时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.audio_transcript.delta。string
body
响应 ID。
string
body
消息项 ID。
integer
body
输出项索引。
integer
body
内容部分索引。
string
body
增量转录文本。
response.audio_transcript.done
音频转录文本生成完成时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.audio_transcript.done。string
body
响应 ID。
string
body
消息项 ID。
integer
body
输出项索引。
integer
body
内容部分索引。
string
body
完整转录文本。
response.output_item.added
响应生成过程中创建新输出项时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.output_item.added。string
body
响应 ID。
integer
body
输出项索引。
object
body
输出项。
response.output_item.done
输出项完成时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.output_item.done。string
body
响应 ID。
integer
body
输出项索引。
object
body
输出项。
response.content_part.added
响应生成过程中,向助手消息添加新内容部分时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.content_part.added。string
body
响应 ID。
string
body
消息项 ID。
integer
body
输出项索引,固定为 0。
integer
body
内容部分索引,固定为 0。
object
body
内容部分。
response.content_part.done
助手消息中的内容部分流式传输完成时发送。
Example
string
body
事件唯一标识。
string
body
固定为
response.content_part.done。string
body
响应 ID。
string
body
消息项 ID。
integer
body
输出项索引,固定为 0。
integer
body
内容部分索引,固定为 0。
object
body
内容部分。

