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