安安~
關於昨天的VAD,來用例子補充說明一下:
在64子頻的Gammatone這個例子中,訊號中64個濾波器的中心頻率在對數上均勻分布,公式如下:
其中,i是子頻的序號fs是採樣頻率,sf是對數域上的頻率間隔,由下式舉出:
其中,N是子頻的個數fmin是最低頻率,對語音訊號而言,最低頻率可取50,由於濾波器是在頻域上計算,且只計算幅度譜而捨棄相位,因此我們可以用下面的近似公式來計算每個子頻的幅頻回應:
其中,c為常數;n是濾波器的階數;b是衰減係數,它直接決定了濾波器的等效矩形頻寬(Equivalent Rectangle Bandwidth,ERB),所謂等效矩形頻寬是指等效矩形濾波器的頻寬。
在完成特徵提取後,需要對特徵進行歸一化操作。為了使演算法能夠追蹤和適應不同的場景,以及變化的訊號增益,可以在執行過程中根據提取的特徵即時更新歸一化參數。
接下來,音訊訊號的64維特徵被輸入神經網路模型。結合歷史資訊,模型會對當前訊號幀進行預測,輸出訊號幀中含有語音的機率。根據實際需求,該推理可以每一幀或者多幀進行一次。該模型包括一個一維卷積層,兩個LSTM 層,以及一個帶Softmax啟動函數的全連接層。首先一維卷積層對輸入的頻譜進行頻域方向上的卷積,提取頻域能量蘊含的特徵。接下來兩個LSTM層對輸入特徵在時域上的變化情況進行建模。在每次推理時,LSTM層都需要接收該層上一次推理時輸出的隱狀態,並且輸出當前推理結束後的隱狀態,供下一次推理使用。因為有隱狀態的前後傳遞,所以每次的輸入視窗可以很短(可以短至一幀),以降低整個VAD演算法的延遲。LSTM 層的輸出狀態透過全連接層和Softmax函數進行二分類,輸出當前幀含有語音的機率。輸出的機率透過一些後處理步驟(如中值濾波器等)進行平滑,濾除過短的突波訊號,並輸出最終的判決值,即決定該訊號幀是否包含語音。
參考書籍:Hey Siri及Ok Google原理:AI語音辨識專案真應用開發
參考網站:今日無
學習對象:ChatGPT