智能語音機器人中VAD語音端點檢測算法優化實踐


導讀

語音機器人是58同城TEG技術工程平臺群AI Lab自主研發的具有自動電話撥打、多輪語音交互、智能意向判斷等多種功能的智能對話機器人。可應用於自動電話銷售、產品服務推廣、信息審核、語音通知等多種業務場景。語音機器人中的語音端點檢測模塊(voice detection activity,簡稱VAD),用於檢測人聲的起始點與終止點。


背景介紹

語音端點檢測模塊是人機語音交互流程中一個極其重要的模塊,它是從含有靜音、噪音等的語音信號中找到人聲的起點,開始進行語音識別,當檢測到人聲的終點時,結束語音識別,從而獲取到語音識別的結果輸入到對話管理器來完成多輪語音交互。語音端點檢測性能的好壞直接影響語音交互對話的流暢性與用戶體驗。


智能語音機器人中VAD語音端點檢測算法優化實踐


在VAD的優化歷程中,我們先後使用了三種不同的VAD方法:雙門限端點檢測、WebRTC VAD以及基於深度學習的VAD方法VADNet,經過多次迭代後VAD的人聲幀識別的F1值從最初的52.28%提升至83.51%,下面將詳細介紹三種VAD的方法原理及使用效果。


基於雙門限端點檢測的VAD方法

VAD可以看作一個語音分類任務,在進行VAD時,我們對原始的語音切分成小段(分幀),例如20ms或者25ms,計算語音特徵後,將語音特徵作為模型的輸入,而模型的輸出則是一個二分類的結果:當前幀為人聲(speech)或非人聲(noise)。

在本文中,我們將人聲視為正類,非人聲視為負類。在語音機器人的任務中,我們主要關注的是切分的句子是否完整包含了所有的人聲,從而不會影響到後續機器人的意圖判斷等操作。另一方面,我們也希望VAD截取的句子的前後儘量少地包含非人聲,從而能夠及時根據用戶的停頓來判斷句子的結束,及時地響應用戶的話語。因此,我們重點關注的VAD模型效果是正向的準確率與召回率。

語音學中,發音時聲帶振動的音稱為濁音,聲帶不振動的音稱為清音。我們需要找的人聲段包括清音與濁音,語音特徵中的短時能量更適合檢測濁音,而短時過零率更適合檢測清音。我們最開始的VAD方法採用的是雙門限端點檢測法,它利用短時過零率與短時能量作為判斷指標:

(1)短時過零率:

短時平均過零率是語音信號時域分析中的一種特徵參數。它是指一幀語音時域信號穿過橫軸(零電平)次數,計算公式如下所示:

智能語音機器人中VAD語音端點檢測算法優化實踐

式中sgn為符號函數,

智能語音機器人中VAD語音端點檢測算法優化實踐

(2)短時能量:

短時能量即一幀語音信號能量,人聲段部分能量通常比非人聲段部分的能量小,清音部分的能量比濁音部分的能量小,對於信號

智能語音機器人中VAD語音端點檢測算法優化實踐

,短時能量的定義如下:

智能語音機器人中VAD語音端點檢測算法優化實踐

下圖為語音波形圖與相應的短時能量,紅色豎線與綠色豎線分別標識出人聲段的開始與結束,可以看到人聲段部分的短時能量明顯比非人聲段的要小。

智能語音機器人中VAD語音端點檢測算法優化實踐


計算了短時能量與短時過零率後,使用各自的上限與下限閾值判定人聲段的開始與結束(下文稱短時能量的上限閾值為energy_high,下限閾值為energy_low,對於短時過零率zcr,其上限閾值為zcr_high,下限閾值為zcr_low):

當短時過零率與短時能量均超過各自的上限閾值時,則找到人聲幀開始;當短時過零率或短時能量中有一個低於各自的下限閾值時,則找到人聲幀的結束,流程圖如下所示:

智能語音機器人中VAD語音端點檢測算法優化實踐

雙門限端點檢測法的效果如下所示:


可以看到,使用雙門限VAD的正向召回率較高,而正向準確率較低,這說明這種VAD方法切分的句子中可能會包含較多冗餘的非人聲,例如空白音或背景噪聲。雙門限端點檢測法計算簡單,只需要通過簡單的指標計算以及條件判斷即可判別當前語音幀是否屬於人聲。

對於一些突發性的隨機噪聲或背景噪聲往往會引起短時能量或短時過零率數值很高,造成雙門限VAD誤判的情況。為了進一步提升VAD模塊的效果,我們嘗試了WebRTC VAD。


基於WebRTC VAD的VAD方法

WebRTC是一個由Google發起的實時通訊解決方案,其中包含視頻音頻採集,編解碼,數據傳輸,音視頻展示等功能,開發者可以利用WebRTC快速地構建出一個音視頻通訊應用,而WebRTC VAD是其中的語音端點檢測模塊。

WebRTC VAD基於GMM對人聲與非人聲進行建模,其判別耗時非常短,每幀判別耗時僅需不到1ms,其中GMM的初始化參數以及似然比閾值均為預先設定的初值,因此其不需要經過訓練即可使用,它目前支持10/20/30ms三種可選的語音輸入,並且包含4檔激進模式,用於控制判定當前幀為語音幀的傾向性。激進模式使用數字0~3做區分,激進程度與數字大小正相關,數字越大,越傾向於判定當前語音幀為人聲幀。

WebRTC VAD包括判別過程與自適應參數更新兩個步驟。

在判別過程中,它按照語音的頻率分佈,將語音分成六個子頻帶,對於每個子頻帶對應兩個高斯混合模型(GMM模型),這兩個GMM分別表示語音模型和噪聲模型,用於計算同一頻帶上人聲概率相對非人聲的對數似然比,與此同時,也計算所有子頻帶的加權對數似然比,整體步驟如下所示:

智能語音機器人中VAD語音端點檢測算法優化實踐

當六個子頻帶的對數似然比中,有一個超過閾值時,或者加權對數似然比超過閾值時,則將當前語音幀判定為人聲。

完成判別過程後,會進入到自適應參數更新過程,在這一步更新噪聲模型與語音模型的的均值與方差,根據輸入數據對模型參數進行更新,從而根據輸入數據的實際分佈來調整參數,以獲取更好的效果。注意這裡的參數更新過程,使用的是同一VAD對象的輸入數據,在語音機器人中,在撥打每一通電話的最初會初始化一個VAD對象,它會根據當前通話的語音幀進行自適應的參數更新,具體步驟如下所示:

參數更新過程依賴於當前頻帶的預測結果,當前幀被預測為噪聲時,在參數更新階段會更新六個頻帶中噪聲模型的均值與方差,而語音模型的均值與方差則不被更新;當前幀被預測為人聲時同理。具體更新過程如下所示:

智能語音機器人中VAD語音端點檢測算法優化實踐


智能語音機器人中VAD語音端點檢測算法優化實踐

可以從下表中看到,相對於雙門限端點檢測法,WebRTC VAD的正向準確率與正向召回率均優於雙門限端點檢測,其F1值相對雙門限端點檢測絕對提升約20%。


WebRTC VAD的正向召回率保持在一個較高的水平,而正向準確率還有待改進的空間。因此,本文嘗試將深度學習模型VADNet應用到VAD任務。


VADNet的初步探索

VADNet是一個可應用在VAD任務上的深度學習模型,它所使用的模型結構為CRNN結構,其輸入為聲音波形或聲學特徵,模型輸出為當前語音幀為人聲或非人聲的判別結果,具體結構如下圖所示。

智能語音機器人中VAD語音端點檢測算法優化實踐

初期實驗時, 我們嘗試了不同的輸入與模型結構,以探索語音特徵或CNN作為特徵提取器對語音分類效果的影響:

(1)使用聲音波形作為輸入,使用CNN+RNN結構;

(2)使用語音特徵FBank特徵作為輸入,使用RNN結構。


可以看到,對於MFCC、FBank、聲音波形三種不同的模型輸入,當模型輸入為聲音波形時,正向F1最高,因此後續的實驗使用聲學波形作為模型輸入。

在線上應用語音端點檢測時,我們還需要考慮兩個因素:

a.模型輸入語音的時長:輸入的語音幀長度越大,粒度越大,越不精確。

b.在線預測耗時: 考慮到語音機器人的實時性,需要保證在線預測耗時儘可能短。

因此我們嘗試了了不同的語音輸入時長以及不同的模型結構,對比其模型效果以及預測耗時的變化。具體效果如下所示:


上表中的conv3表示三層的卷積與池化,而conv4是在conv3的基礎上再加了一層卷積與池化層,其目的是令輸入到RNN的步長減半,從而縮短在線預測時間。可以看到,對於相同的模型結構,當語音時長從500ms減小到200ms時,正向準確率與召回率都略微降低。輸入到RNN的步長減半時,在線預測耗時也有所下降。考慮到在線預測耗時與模型預測效果兩個因素,目前線上使用的是語音幀長度為200ms,模型結構為conv4與1層RNN的組合。在實際調用時,使用滑動窗口的形式獲取語音幀,窗口大小200ms,移動步長100ms。

下表為VADNet與WebRTC VAD、雙門限VAD的效果對比,可以看到VADNet的最大的正向F1值要比WebRTC VAD高出約15%(86.01% VS 71.59%)。由於VADNet是基於深度學習的VAD方法,其計算複雜度相對雙門限端點檢測與WebRTC VAD要高,每幀的判別耗時也相對更高。當VADNet的輸入語音幀長度為200ms時,調用WPAI的平均在線預測耗時為26ms,後續VADNet的在線預測耗時方面還可以做進一步的優化。


總結

本文重點介紹了語音機器人的語音端點檢測模塊的迭代優化歷程,分別介紹了雙門限端點檢測、WebRTC VAD、VADNet三種不同的語音端點檢測方法在語音端點檢測模塊上的應用。

目前語音端點檢測模塊為語音機器人穩定提供支持,語音端點檢測模塊還有一定的提升空間,後續會繼續嘗試輸入不同的語音特徵或使用不同的斷句方法,優化預測耗時以及正向F1值,為語音機器人提供更快捷以及更精準的語音端點檢測。


部門簡介:

58同城TEG技術工程平臺群AI Lab,旨在推動AI技術在58同城的落地,打造AI中臺能力,以提高前臺業務人效和用戶體驗。AI Lab目前負責的產品包括:智能客服、語音機器人、智能寫稿、智能語音分析平臺、智能營銷系統、AI算法平臺、語音識別等,未來將持續加速創新,拓展AI應用。
部門詳細介紹可點擊:ailab.58.com


分享到:


相關文章: