Skip to main content
ASR 服务使用完全运行在 Qualcomm NPU 上的设备端模型将音频转写为文本。它同时支持基于 文件的批量转写以及通过 WebSocket 的实时流式转写。

前置条件

请先部署并运行 Audio Analytics 容器。设置说明参见 运行 Audio Analytics 容器。

音频格式要求

可用模型

查询 models 端点以获取可用 ASR 模型列表:
响应:
在转写请求中使用该响应中的 name 值。

端点

文件转写

上传一个 WAV 文件,并在单次响应中接收完整的转写结果:
响应:
将 language 设置为模型支持的语言代码,或省略以进行自动检测。

文件转写并流式返回结果

上传完整的 WAV 文件,在文件处理过程中通过 WebSocket 实时接收转写结果:
服务器确认上传后开始处理。连接到 WebSocket 以接收结果。 WebSocket 结果:

实时音频流

实时流式发送原始音频块,并在说话过程中接收转写结果。

第 1 步 —— 创建会话

如果您的音频不是 16 kHz 单声道 PCM,请通过 parameters 声明音频格式:
响应:
vad 参数设置在判定语音结束之前的静音等待毫秒数。省略该参数将禁用 VAD,并需要通过 /transcriptions/flush 或 /transcriptions/close 手动管理话语结束。

第 2 步 —— 连接 WebSocket 并发送音频

连接到 ws://localhost:8085/stream。服务器会在任何转写消息到达之前先发送一条 connection_established 消息:
通过 WebSocket 以 8192 字节的分块发送音频:

第 3 步 —— 接收结果

服务器针对每段话语按以下顺序发送消息:
在 transcript.text.done 之后,引擎会重置并监听下一段话语。会话会一直保持,直到您 调用 /transcriptions/close。

第 4 步 —— 关闭会话

响应:
同一时间只能有一个活动的 ASR 会话。在已有会话活跃时启动第二个会话会返回 HTTP 409 Conflict。请先关闭现有会话。

语音活动检测 (VAD)

VAD 控制服务器在流式会话期间如何检测话语结束。当检测到的静音达到配置的时长时,服务器 会针对当前话语发送 speech_end,然后是 transcript.text.done。会话本身保持打开状态 并为下一段话语重置 —— VAD 不会关闭会话。
如果在容器配置中由 SESSION_TIMEOUT_S 设定的时长内(默认:30 秒)没有收到任何音频,会话会自动关闭,与 VAD 状态无关。

刷新已缓冲的音频

在不关闭会话的情况下,立即转写已缓冲的音频:

Python 示例

故障排查

转写质量差: 请使用 16 kHz 单声道 WAV 文件,并确保音频清晰、背景噪声尽量少。

下一步

文本到语音

在设备端从文本合成语音

语言翻译

在设备端在不同语言之间进行文本翻译