手册手册
  • Nuwa ASR 实时语音识别协议

Nuwa ASR 实时语音识别协议

1. 简介

Nuwa ASR 通过 WebSocket 提供实时语音识别服务,适用于需要将语音流转换为文本的场景。 该协议用于客户端将音频流发送到后端 ASR 服务,并接收实时识别结果。

2. 接入前须知

  • 该接口一般由 Nuwa 平台后台服务对外提供。客户端需要先获取对应服务的访问地址。
  • 音频数据通常为 16k 采样率、单通道 PCM 原始音频。
  • 业务侧可以通过 stype 指定识别引擎:doubao 或 diy。

3. 连接地址

WebSocket 连接

wss://wsapi.nuwaai.com/websk/humanAgent/realasr
wss://wsapi.nuwaai.com/websk/humanAgent/realasr/{stype}

参数说明

参数名称类型是否必填说明
stypeString否识别服务类型,支持 doubao(默认)和 diy

提示

若不指定 stype,服务端默认使用 doubao 识别引擎。

4. 连接示例

示例
const host = 'wss://your-asr-server.example.com';
const stype = 'doubao';
const ws = new WebSocket(`${host}/realasr/${stype}`);

ws.onopen = () => {
  console.log('ASR WebSocket 已连接');
};

ws.onmessage = (event) => {
  const message = JSON.parse(event.data);
  console.log('收到 ASR 消息:', message);
};

ws.onclose = () => {
  console.log('ASR WebSocket 已关闭');
};

ws.onerror = (err) => {
  console.error('ASR WebSocket 错误:', err);
};
import websocket
import json

host = 'wss://your-asr-server.example.com'
stype = 'doubao'
url = f'{host}/realasr/{stype}'


def on_open(ws):
    print('ASR WebSocket 已连接')


def on_message(ws, message):
    print('收到 ASR 消息:', json.loads(message))


def on_close(ws, close_status_code, close_msg):
    print('ASR WebSocket 已关闭')


def on_error(ws, error):
    print('ASR WebSocket 错误:', error)

ws = websocket.WebSocketApp(
    url,
    on_open=on_open,
    on_message=on_message,
    on_close=on_close,
    on_error=on_error
)

ws.run_forever()

5. 客户端发送消息

5.1 文本控制消息

客户端可以发送 JSON 文本消息来控制识别热词。当前协议支持设置热词:

{
  "type": "setHotWords",
  "data": {
    "hotWords": ["咱们", "休息一下", "你好呀"]
  }
}
参数名称类型是否必填说明
typeString是消息类型:setHotWords
dataObject是消息体
data.hotWordsArray否热词列表,支持多个字符串

提示

后端会将热词发送给 ASR 引擎以提升识别效果。

5.2 音频二进制消息

客户端通过 WebSocket 的二进制消息发送音频数据:

  • 使用 bytes 类型消息发送原始音频字节。
  • 通常为 16k 采样率、单通道 PCM 音频。
// 发送音频数据块
ws.send(audioArrayBuffer);

6. 服务端返回消息

服务端会将 ASR 结果以 JSON 消息推送给客户端。常见消息类型包括:

type说明
asr-text实时识别文本结果(增量或全量)
asr-commit识别结果已提交,通常为最终识别文本
checkToEnd识别阶段检查是否结束
first第一帧识别结果或首段结果
asr-errorASR 识别错误

示例:识别结果

{
  "type": "asr-text",
  "data": {
    "content": "今天天气很好"
  }
}

示例:最终提交结果

{
  "type": "asr-commit",
  "data": {
    "content": "今天天气很好"
  }
}

示例:错误通知

{
  "type": "asr-error",
  "data": {
    "message": "识别失败",
    "code": 500
  }
}

7. 识别服务类型说明

stype说明
doubao默认识别引擎,使用 Doubao ASR 服务
diy自定义识别引擎,使用 Diy ASR 服务

8. 推荐接入流程

  1. 建立 WebSocket 连接:/realasr 或 /realasr/{stype}。
  2. (可选)发送 setHotWords 设置热词。
  3. 发送音频二进制数据。
  4. 持续接收 asr-text 和 asr-commit 消息。
  5. 识别完成后关闭 WebSocket 连接。
sequenceDiagram
    participant C as 客户端
    participant S as ASR 服务

    C->>S: 1. 建立 WebSocket 连接
    S-->>C: 2. 连接建立确认
    C->>S: 3. 发送 setHotWords (可选)
    S-->>S: 4. 更新热词配置

    loop 音频流识别
        C->>S: 5. 发送音频二进制数据
        S-->>C: 6. 返回 asr-text 实时识别结果
        C->>S: 7. 持续发送音频数据
        S-->>C: 8. 返回 asr-commit 最终识别结果
    end
    
    C->>S: 9. 关闭 WebSocket 连接
最近更新:: 2026/6/23 12:18
Contributors: 邹丹晔