WebRTC端点检测使用中遇到的部分问题汇总
WebRTC端點(diǎn)檢測(cè)使用中遇到的部分問(wèn)題匯總
背景
端點(diǎn)檢測(cè)技術(shù)作為語(yǔ)音識(shí)別等技術(shù)預(yù)處理截?cái)嗟囊豁?xiàng)非常重要的技術(shù)一直以來(lái)是業(yè)界研究的重點(diǎn),也可以說(shuō)語(yǔ)音信號(hào)的端點(diǎn)檢測(cè)精度直接影響后面進(jìn)行的語(yǔ)音識(shí)別精度,而目前的端點(diǎn)檢測(cè)算法主要受到以下幾個(gè)因素的制約:
就目前端點(diǎn)檢測(cè)算法來(lái)說(shuō)主要有基于能量閾值的檢測(cè)方法(能量方法又包括多中能量)、基于能量與過(guò)零率的檢測(cè)方法、基于譜熵的檢測(cè)方法、基于倒譜的檢測(cè)方法等,這些方法在實(shí)際應(yīng)用中對(duì)于環(huán)境的泛化能力較弱,算法的魯棒性較低,主要受噪聲、音量、遠(yuǎn)近場(chǎng)的不同等因素影響。
正文
幾個(gè)月前公司的一個(gè)項(xiàng)目中需要做一個(gè)魯棒性較好的端點(diǎn)檢測(cè)算法來(lái)更換公司在用的基于能量與過(guò)零率實(shí)現(xiàn)的端點(diǎn)檢測(cè)算法,經(jīng)過(guò)一段時(shí)間的折騰(為什么說(shuō)折騰呢?因?yàn)楣疽矝](méi)告訴我用什么算法,所以全靠我自己摸索了),最后我決定用Google的開(kāi)源項(xiàng)目WebRTC試試(無(wú)奈,我只是個(gè)來(lái)實(shí)習(xí)生啊,苦)經(jīng)過(guò)一個(gè)月的探索終于有點(diǎn)眉目了,我通過(guò)修改了WebRTC底層算法的部分邏輯實(shí)現(xiàn)又經(jīng)過(guò)無(wú)數(shù)次實(shí)際環(huán)境中的測(cè)試終于有一天項(xiàng)目經(jīng)理說(shuō)合格了(激動(dòng)的心,顫抖的手啊)。下面我將使用WebRTC的過(guò)程中遇到的部分問(wèn)題分享出來(lái)供大家參考:
首先WebRTC的VAD模塊返回的是每一幀音頻數(shù)據(jù)是否為語(yǔ)音信號(hào)的標(biāo)志位,也就是直接使用的話(huà)接收到的是一幀一幀拼接的語(yǔ)音數(shù)據(jù),在實(shí)際項(xiàng)目中使用時(shí)不能滿(mǎn)足實(shí)際需要,聽(tīng)到的聲音斷斷續(xù)續(xù)的,所以這時(shí)就需要在WebRTC中VAD算法的基礎(chǔ)上再進(jìn)行一次封裝,這次封裝主要解決的為題是按照實(shí)際應(yīng)用中的那樣將每幀音頻按照語(yǔ)音,非語(yǔ)音分成完整的段。
由于我們的使用環(huán)境噪聲較大,信噪比較低,實(shí)際測(cè)試中端點(diǎn)檢測(cè)時(shí)出現(xiàn)了將大量噪聲判別為語(yǔ)音的情況,所以此時(shí)我通過(guò)修改WebRTC底層判別語(yǔ)音信號(hào)的能量閾值(vad_core.h)KMinEnergy,這樣就可以過(guò)濾掉大部分低能量的噪聲對(duì)端點(diǎn)檢測(cè)算法的影響。
其次在WebRTC的VAD中判別語(yǔ)音還是非語(yǔ)音的高斯模型中在計(jì)算六個(gè)頻段的似然比之后與設(shè)定的閾值比較時(shí),分為兩種情況:
原始的算法當(dāng)滿(mǎn)足這兩者之一時(shí)就可以認(rèn)為此幀為語(yǔ)音幀,通過(guò)實(shí)驗(yàn)這樣做的方式得到的效果并不好,所以我通過(guò)屏蔽局部邏輯判斷進(jìn)行了測(cè)試,實(shí)驗(yàn)表明這樣做效果更好,端點(diǎn)檢測(cè)精度更高。
最后在修改上述地方后我通過(guò)開(kāi)放似然比閾值接口實(shí)現(xiàn)了再多種環(huán)境下的端點(diǎn)檢測(cè)模式的設(shè)定。
今天就先記錄到這里,后期我再詳細(xì)的描述WebRTC算法的工作流程和低信噪比環(huán)境下的優(yōu)化。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的WebRTC端点检测使用中遇到的部分问题汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MATLAB算法(函数)编译为C++动态
- 下一篇: Harbor2.2.1配置(trivy扫