語(yǔ)音VAD(Voice Activity Detection)聲音活動(dòng)檢測(cè)解析

一、什么是VAD?
簡(jiǎn)單說(shuō),VAD 就是一種能判斷聲音里有沒(méi)有人說(shuō)話的技術(shù)。它就像
“聲音過(guò)濾器”,能從雜亂的聲音(比如夾雜著風(fēng)聲、電視聲、電流聲的混合音)里,準(zhǔn)確挑出有人說(shuō)話的部分和噪音部分。
二、VAD在我們生活當(dāng)中的用處有哪些?
1.打電話時(shí):我們打網(wǎng)絡(luò)電話(比如微信電話)時(shí),VAD 能把沒(méi)說(shuō)話時(shí)的雜音去掉,讓對(duì)方聽(tīng)得更清楚,還能少傳點(diǎn)沒(méi)用的數(shù)據(jù),省流量。
2.語(yǔ)音轉(zhuǎn)文字時(shí):比如用手機(jī)把說(shuō)話轉(zhuǎn)成文字,VAD 會(huì)先把沒(méi)人說(shuō)話的部分去掉,這樣轉(zhuǎn)文字又快又準(zhǔn)。
3.智能音箱:像小愛(ài)同學(xué)、天貓精靈,VAD 能幫它們判斷你是不是在叫它。只有當(dāng)它 “聽(tīng)” 到喚醒詞時(shí)才會(huì)回應(yīng),不會(huì)隨便被別的聲音觸發(fā)。
4.錄音整理:錄會(huì)議、講座時(shí),VAD 能自動(dòng)刪掉中間的空白停頓,讓錄音文件變小,聽(tīng)起來(lái)也更緊湊。
5.安全監(jiān)控:有些監(jiān)控設(shè)備配上 VAD,當(dāng) “聽(tīng)” 到有人尖叫、呼救時(shí),會(huì)自動(dòng)報(bào)警提醒。
三、VAD它是怎么判斷的
VAD 判斷有沒(méi)有人說(shuō)話,主要看聲音的幾個(gè)特點(diǎn):
1.聲音大小:一般來(lái)說(shuō),人說(shuō)話的聲音比背景噪音大。就像你說(shuō)話時(shí),聲音能量比旁邊的空調(diào)聲足,VAD 會(huì)通過(guò)比較這個(gè) “能量” 來(lái)判斷。
2.聲音頻率:人說(shuō)話的聲音頻率大概在 300-3400Hz 之間,就像唱歌有特定的音域,VAD 會(huì)認(rèn)準(zhǔn)這個(gè)范圍的聲音。
3.過(guò)零率:可以理解成聲音在一秒內(nèi)穿過(guò) “零電平” 的次數(shù)。比如白噪音(像收音機(jī)沒(méi)信號(hào)時(shí)的 “沙沙” 聲)過(guò)零率高,而說(shuō)話聲過(guò)零率低,VAD
靠這個(gè)也能區(qū)分。
4.聲音的 “指紋”:還有個(gè)叫 “梅爾倒譜系數(shù)” 的東西,能提取出語(yǔ)音獨(dú)特的 “頻譜特征”,就像每個(gè)人的指紋不一樣,VAD
靠這個(gè)能更精準(zhǔn)識(shí)別。
判斷方法主要有三種:
定標(biāo)準(zhǔn):手動(dòng)設(shè)定一個(gè)閾值,比如聲音能量超過(guò)多少就算說(shuō)話聲。這種方法簡(jiǎn)單,但在噪音大的地方容易出錯(cuò)。
機(jī)器學(xué)經(jīng)驗(yàn):用隱馬爾可夫模型、支持向量機(jī)這些方法,讓機(jī)器從大量聲音數(shù)據(jù)里學(xué)經(jīng)驗(yàn),知道什么樣的是說(shuō)話聲,比定標(biāo)準(zhǔn)的方法準(zhǔn)。
深度學(xué)習(xí):用類似人腦神經(jīng)網(wǎng)絡(luò)的模型(比如循環(huán)神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)),能自動(dòng)找出復(fù)雜的聲音規(guī)律,在噪音大的環(huán)境下也能表現(xiàn)很好。
四、怎么看它好不好用
準(zhǔn)不準(zhǔn):判斷對(duì)的次數(shù)占總次數(shù)的比例,比例越高越好。
會(huì)不會(huì)瞎報(bào):把不是說(shuō)話聲的當(dāng)成說(shuō)話聲(比如把咳嗽聲當(dāng)成說(shuō)話),這種情況越少越好,不然會(huì)做很多無(wú)用功。
會(huì)不會(huì)漏報(bào):把說(shuō)話聲當(dāng)成了非說(shuō)話聲(比如沒(méi)聽(tīng)出小聲說(shuō)話),這種情況也越少越好,不然會(huì)漏掉重要內(nèi)容。
反應(yīng)快不快:從聽(tīng)到聲音到判斷出結(jié)果的時(shí)間,像打電話時(shí),反應(yīng)必須快,不然會(huì)有延遲。
五、常用的VAD工具
WebRTC VAD:谷歌出的一個(gè)輕量級(jí)工具,適合實(shí)時(shí)通話時(shí)用,支持不同的聲音采樣率,很穩(wěn)定。
librosa:用 Python 編程時(shí)可以用的音頻處理工具,能提取聲音的各種特點(diǎn),方便自己做 VAD。
Kaldi:專門做語(yǔ)音識(shí)別的工具包,里面有好幾種 VAD 的實(shí)現(xiàn)方法,適合專業(yè)研究和工業(yè)上用。
SpeechRecognition:Python 的一個(gè)庫(kù),有些功能里自帶了 VAD,新手也能很快用起來(lái)。
TensorFlow/PyTorch:用來(lái)做深度學(xué)習(xí)的工具,可以自己搭建 VAD 模型,適應(yīng)不同的使用場(chǎng)景。
六、遇到的難題和以后的發(fā)展
現(xiàn)在 VAD 還有些麻煩事:
噪音太復(fù)雜:比如在吵鬧的菜市場(chǎng)、多人同時(shí)說(shuō)話時(shí),說(shuō)話聲和噪音混在一起,VAD 容易判斷錯(cuò)。
聲音太小或噪音太大:當(dāng)說(shuō)話聲和噪音差不多大,甚至比噪音還小時(shí),普通方法就不太靈了。
每個(gè)人說(shuō)話不一樣:有人說(shuō)話快、有人慢,有人音調(diào)高、有人低,還有方言差異,這些都會(huì)影響 VAD 的判斷。
以后 VAD 可能會(huì)這樣發(fā)展:
結(jié)合視頻一起判斷,比如不光聽(tīng)聲音,還看嘴唇動(dòng)不動(dòng),讓判斷更準(zhǔn)。
把模型做小,適合裝在手機(jī)、智能手表這些小設(shè)備上。
用新的學(xué)習(xí)方法,不用太多標(biāo)注好的數(shù)據(jù),自己就能學(xué)怎么判斷,更省事。