即時語音辨識(Qwen-ASR-Realtime)
即時語音辨識(Qwen-ASR-Realtime)用戶端事件
本文檔介紹在與 Qwen-ASR Realtime API 的 WebSocket 會話中,用戶端向服務端發送的事件。
使用者指南:模型介紹、功能特性和完整範例程式碼請參見即時語音辨識-通義千問
session.update
用於更新會話配置,建議在 WebSocket 串連建立後首先發送該事件。建議在WebSocket串連建立成功後,立即發送此事件作為互動的第一步。如果未發送,系統將使用預設配置。
服務端成功處理此事件後,會發送服務端事件事件作為確認。
參數 | 類型 | 是否必須 | 說明 |
|---|
type | string | 是 | 事件類型。固定為session.update。 | event_id | string | 是 | 事件ID。 | session | object | 是 | 包含會話配置的對象。 | session.input_audio_format | string | 否 | | session.sample_rate | integer | 否 | 音頻採樣率(Hz)。支援16000和8000。 預設值:16000。 設定為 8000 時,服務端會先升採樣到16000Hz再進行識別,可能引入微小延遲。建議僅在源音頻為8000Hz(如電話線路)時使用。 | session.input_audio_transcription | object | 否 | 語音辨識相關配置。 | session.input_audio_transcription.language | string | 否 | 音頻源語言。 zh:中文(普通話、四川話、閩南語、吳語) yue:粵語 en:英文 ja:日語 de:德語 ko:韓語 ru:俄語 fr:法語 pt:葡萄牙語 ar:阿拉伯語 it:意大利語 es:西班牙語 hi:印地語 id:印尼語 th:泰語 tr:土耳其語 uk:烏克蘭語 vi:越南語 cs:捷克語 da:丹麥語 fil:菲律賓語 fi:芬蘭語 is:冰島語 ms:馬來語 no:挪威語 pl:波蘭語 sv:瑞典語
| session.turn_detection | object | 否 | VAD(Voice Activity Detection,語音活動檢測)配置。 它是啟用/關閉VAD模式的開關:若將它設為null,則將關閉VAD 模式,啟用Manual 模式;反之則相反。 | session.turn_detection.type | string | 否,turn_dection存在時必須 | 固定為 server_vad。 | session.turn_detection.threshold | float | 否 | VAD檢測閾值。推薦將該值設為0.0。 預設值:0.2。 取值範圍:[-1, 1]。 較低的閾值會提高 VAD 的靈敏度,可能將背景雜音誤判為語音。較高的閾值則降低靈敏度,有助於在嘈雜環境中減少誤觸發。 | session.turn_detection.silence_duration_ms | integer | 否 | VAD斷句檢測閾值(ms)。靜音持續時間長度超過該閾值將被認為是語句結束。推薦將該值設為400。 預設值:800。 取值範圍:[200, 6000]。 較低的值(如 300ms)可使模型更快響應,但可能導致在自然停頓處發生不合理的斷句。較高的值(如 1200ms)可更好地處理長句內的停頓,但會增加整體響應延遲。 |
| {
"event_id": "event_123",
"type": "session.update",
"session": {
"input_audio_format": "pcm",
"sample_rate": 16000,
"input_audio_transcription": {
"language": "zh"
},
"turn_detection": {
"type": "server_vad",
"threshold": 0.0,
"silence_duration_ms": 400
}
}
}
|
用於將音頻資料區塊追加到服務端的輸入緩衝區。這是流式發送音訊核心事件。
不同情境下的區別:
- VAD 模式:音頻緩衝區用於語音活動檢測,服務端會自動決定何時提交音頻進行識別。
- 非VAD模式:用戶端可以控制每個事件中的音頻資料量,單個
input_audio_buffer.append 事件中的 audio 欄位內容最大為 15 MiB。建議流式發送較小的音頻塊以獲得更快的響應。
重要提示:服務端不會對input_audio_buffer.append事件發送任何確認響應。
參數 | 類型 | 是否必須 | 說明 |
|---|
type | string | 是 | 事件類型。固定為input_audio_buffer.append。 | event_id | string | 是 | 事件ID。 | audio | string | 是 | Base64編碼的音頻資料。 |
| {
"event_id": "event_2728",
"type": "input_audio_buffer.append",
"audio": "<audio> by base64"
}
|
非VAD模式下,用於手動觸發識別。此事件通知服務端,用戶端已發送完一段完整的語音,將當前緩衝區內的所有音頻資料作為一個整體進行識別。
禁用情境:VAD模式。
服務端成功處理後,會發送input_audio_buffer.committed事件作為確認響應。
參數 | 類型 | 是否必須 | 說明 |
|---|
type | string | 是 | 事件類型。固定為input_audio_buffer.commit。 | event_id | string | 是 | 事件ID。 |
| {
"event_id": "event_789",
"type": "input_audio_buffer.commit"
}
|
session.finish
用於結束當前會話。
服務端響應流程:
- 已檢測到語音:服務端完成最後的語音辨識後,發送包含識別結果的
conversation.item.input_audio_transcription.completed事件,隨後發送session.finished事件作為會話結束標識。
- 未檢測到語音:服務端直接發送
session.finished事件。
用戶端監聽到session.finished事件後,需主動中斷連線。
參數 | 類型 | 是否必須 | 說明 |
|---|
type | string | 是 | 事件類型。固定為session.finish。 | event_id | string | 是 | 事件ID。 |
| {
"event_id": "event_341",
"type": "session.finish",
}
|