VAD打断方案
什么是打斷
打斷,就是機器人說話的時候,用戶沒等機器人說完,就開始說話。一般做法是檢測到用戶聲音持續100-200ms就停止機器人說話,這樣存在一個弊端,就是如果噪音很大的環境(本公司2022年開發的噪音人聲識別算法直接集成VAD已經徹底解決噪音打斷問題),或者用戶身邊有人說話,會導致錯誤的打斷,本文主要介紹幾個方法,來避免這個問題。
防干擾等級(只start_vad支持)
start_vad函數有一個參數 filter_level 防止干擾等級。0-1.0之間,建議 0.3。 這個參數的原理是可以通過計算用戶歷史說話音量,如果當前音量大于歷史說話音量*filter_level,才認為是有效聲音。因為周圍的人說話傳入話筒的音量比較小,這個方法可以有效解決身邊人說話導致打斷。
使用噪音人聲識別算法可以很好的解決噪音打斷 0.6:一句話結束判斷聲音是否是噪音,通過asrprogress事件的noise標識。 0.7: 噪音的時候不掉用ASR。 0.8:VAD算法集成噪音和人聲識別。
動態最小聲音時間(只vad支持)
vad函數有這樣一個參數?min_speak_ms [數字] 可選參數 默認100ms 最小的聲音時間 單位毫秒,默認值 100ms。
這個參數的含義是,設置一個最小的聲音時間,只有聲音持續時間超過這個值才認為是有效聲音,觸發打斷和提交到ASR服務器識別。
為什么我選擇了這個100ms作為這個默認值呢,因為電話接通后,很多人習慣說一聲”喂”,或者”您好”, “喂”的持續時間一般是100-200s,”您好”的持續時間是 200-300ms.
開發業務流程的時候,可以動態設置這個值,來避免無效聲音打斷,比如電話接通后的第一個聲音,設置100ms,后續聲音設置,200-300ms。就可以非常有效避免錯誤打斷。
關鍵詞打斷
2.1版本已經實現,用戶停頓一下就提交ASR識別,把識別結果發送給業務程序,就是讓業務程序控制是否需要打斷。
自動打斷
VAD模塊檢測到用戶聲音后,暫停播放機器人說話聲,同時開始提交聲音流到ASR服務器識別,如果ASR服務器返回的不是有效語句, 恢復機器人說話。
總結
- 上一篇: Bootstrap4知识(1)
- 下一篇: 计算机及其应用专业自考停考,自考专业名称