# 流式语音识别（WebSocket，火山原生协议透传）

**WebSocket 端点，非普通 HTTP**：`wss://api.xrtoken.net/v1/audio/transcriptions/stream?model=doubao-asr-stream`。

建连后走火山豆包流式语音识别 sauc 二进制协议（`bigmodel_async` 双向流式优化版）：客户端发送
full client request（config）→ 持续发送 audio only request（16k/单声道/16bit PCM，建议 200ms 分片）→
接收 full server response 增量识别结果。协议帧格式、字段与 Demo 详见对接文档与火山官方文档。

**鉴权**：服务端用 `Authorization: Bearer <tr-key>`；浏览器无法带 header，用
`Sec-WebSocket-Protocol: ["xrtoken.bearer", "<tr-key>"]` 携带。不走 URL query。

**计费**：按识别音频时长（秒）计费，结算以服务端返回的 `audio_info.duration` 为准。
注意：静音同样计入音频时长——客户端应在静音时停止推流或用端上 VAD 截断，避免为静音付费。

**并发**：单 key 最多 10 路并发流。

## GET /v1/audio/transcriptions/stream

> 流式语音识别（WebSocket，火山原生协议透传）

**WebSocket 端点，非普通 HTTP**：`wss://api.xrtoken.net/v1/audio/transcriptions/stream?model=doubao-asr-stream`。

建连后走火山豆包流式语音识别 sauc 二进制协议（`bigmodel_async` 双向流式优化版）：客户端发送
full client request（config）→ 持续发送 audio only request（16k/单声道/16bit PCM，建议 200ms 分片）→
接收 full server response 增量识别结果。协议帧格式、字段与 Demo 详见对接文档与火山官方文档。

**鉴权**：服务端用 `Authorization: Bearer <tr-key>`；浏览器无法带 header，用
`Sec-WebSocket-Protocol: ["xrtoken.bearer", "<tr-key>"]` 携带。不走 URL query。

**计费**：按识别音频时长（秒）计费，结算以服务端返回的 `audio_info.duration` 为准。
注意：静音同样计入音频时长——客户端应在静音时停止推流或用端上 VAD 截断，避免为静音付费。

**并发**：单 key 最多 10 路并发流。

### Authentication

`Authorization: Bearer tr-xxx`

### Error Codes

- `101`: WebSocket 协议升级成功，后续为 sauc 二进制帧
- `401`: 
- `402`: 
- `429`: 并发流数量超过单 key 上限
- `502`:
