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