Skip to main content

火山引擎流式语音识别

通过 WebSocket 接口 /v1/stream_asr 持续发送 PCM 音频,并实时接收识别结果。

可用模型

音频要求

发送的音频必须满足以下要求: 如果源文件不是该格式,可先使用 FFmpeg 转换:

Python 示例

安装 WebSocket 客户端:
以下示例读取 input.pcm,按 100 毫秒分片发送,并在音频末尾补充静音以触发完整识别结果:
将 MODEL 改为 volcengine_bigmodel 即可调用大模型流式识别。

请求格式

ASR 使用 WebSocket 协议,因此建连请求没有 HTTP JSON Body。连接成功后,客户端通过 WebSocket 文本消息发送 JSON Body。 建连地址:
建连 Header:
WebSocket 连接建立后,可以直接发送音频 Body:
如果需要设置识别语言,可以先发送会话配置 Body:
发送了 session.config 时,请等待平台返回 session.ready,然后再发送音频 Body。不需要设置会话参数时,无需发送 session.config,也无需等待 session.ready。 音频 Body:

连接参数

客户端事件

session.config

配置当前识别会话。该事件不是必需步骤;只有需要设置会话参数时才发送。发送后应等待平台返回 session.ready,再开始发送音频。
volcengine_normal 只读取 language;enable_itn、enable_punc 和 enable_ddc 不会传递给该模型。 不发送 session.config 时,WebSocket 建连成功后可以直接发送第一条 input_audio_buffer.append,平台将使用模型默认配置。

input_audio_buffer.append

发送一段 Base64 编码的 PCM 音频。建议按固定时长连续发送,不要一次发送完整的长音频。

input_audio_buffer.commit(仅 volcengine_normal)

最后一包音频发送完毕后,发送该事件,明确结束当前语音段,无需再补静音。平台会向火山发送协议尾包,并等待最终识别结果。
event_id 必填,长度为 1~128 字节,每一轮使用新的 ID。平台会忽略近期已经接受的同 ID commit 重发。 发送后请等待 conversation.item.input_audio_transcription.completed,再开始发送下一轮音频;对外 WebSocket 连接可以继续复用。等待期间发送下一轮音频、提交另一个 commit,或对空音频缓冲区提交 commit,会收到 invalid_request_error,其中 error.event_id 指向触发错误的客户端事件。 完成事件仍使用现有的 input_audio_buffer.speech_stopped 和 conversation.item.input_audio_transcription.completed,不额外发送 commit 确认事件。只有静音的音频也可能返回空的最终文本。等待最终结果超过 5 秒,或上游断连、重连失败时,会返回服务端错误并结束连接。 volcengine_bigmodel 不支持该事件,会返回 invalid_request_error。不发送 commit 的调用方式继续使用原来的 VAD 自动判停。

服务端事件

最终结果事件示例:
火山引擎模型能力说明可参考火山引擎语音识别产品文档。