文章目錄
方法一:MFCC特徵提取
step 1:A/D轉換(採樣)
通過採樣將連續的模擬信號轉換爲離散的數字信號,便於後續的數字化處理
step 2:預加重
正常的音頻一般低頻成分比高頻成分多,通過預加重提升語音信號的高頻部分,使頻譜光滑
1.目的:增加高頻成分,使頻譜光滑
2.方法:
3.效果圖:
step 3:加窗分幀
數字化的語音信號是一個不平穩的時變信號,具有短時平穩性。因此在對語音信號進行分析前,
需要對其進行分幀,通常將每幀的長度設爲20ms,相鄰兩幀之間有10ms的幀移
1.目的:利用音頻信號的短時平穩性,分幀後的信號更便於後續處理
2.方法:幀長20ms,幀移10ms進行幀
3.效果圖:
step 4:DFT+取平方
離散傅里葉變換的目的就是將音頻信號從時域轉換到頻域
1.目的:將音頻信號從時域轉到頻域
2.方法:
step 5:Mel濾波
將線性頻率轉換成人類聽覺敏感的Mel頻率,同時對頻譜進行平滑(消除諧波的影響,突出原始
語音的共振峯)和降低信息量
1.目的:將之前得到的線性頻率轉換爲符合人耳頻率的Mel頻率
2.轉換公式:
3.Mel濾波器:
step 6:取對數
採用log壓縮動態範圍,人類對信號能量的感知是對數的
step 7:IDFT
得到倒譜系數,平滑對數功率譜
step 8:動態特徵
描述倒譜系數隨時間的變化。一階差分是計算當前時刻的後一時刻與前一時刻的差值,二階差分是
將一階差分結果作爲當前序列,計算當前時刻的後一時刻與前一時刻的差值
方法二:深度學習特徵提取
step 1:採樣
對於語音識別,16KHz的採樣率就足以覆蓋人類語音的頻率範圍了。16KHz即每秒採樣16000個樣本點,
下圖給出的是前100個採樣點的截圖,其中每個點的值表示聲波在1/16000處的振幅。
step 2:分幀
直接把這16000個數字輸入到神經網絡中分析採樣來進行語音識別仍然很困難。所以可以通過對音頻數據進行一些預處理來使問題變得更容易。比如首先將採樣音頻分成每份20ms長的音頻塊,下圖給出的第一 個20ms的音頻(即前320個採樣點):
step 3:傅里葉變換
通過傅里葉變換將複雜的聲波分解爲一系列簡單聲波的疊加。有了這些單獨的聲波後就可以將每一份頻段所包含的能量加在一起,最終得到的結果就是從低音到高音,每個頻率範圍的重要程度。以50Hz爲一個頻段的話,20ms的音頻所含有的能量從低頻到高頻就可以表示爲下圖,其中每個數字表示50Hz的頻段所含的能量:
對每20ms的音頻塊重複這個過程,最終得到一個頻譜圖(每一列從左到右都是一個20ms的塊):
step 4:識別字符
有了格式易於處理的音頻,再將它輸入到神經網絡中去。神經網絡的輸入便是這些20ms的音頻塊,對於每個小的音頻切片,神經網絡都將嘗試找出當前正在說的聲音所對應的字母。
step 5:獲取映射圖
通過神經網絡跑完整個音頻剪輯(一次一塊)之後,將最終得到一份映射(mapping),其中標明瞭每個音頻塊和其最有可能對應的字母。