語音信號處理是挺有意思的,尤其是在人工智能橫行的今天。不過就我看來,現在整個社會上明顯對人工智能的作用過於誇大了,大多數寫報道和搞炒作宣傳的人基本不懂人工智能。塵世若此,其實又何止是在人工智能上呢!
當然本文和人工智能沒有半毛錢的關係,是基於Matlab設計了一個男女聲在線識別系統,挺簡單的,不過最後達到的效果還是比較理想的,源代碼【點擊這裏下載】。
男女聲識別原理
衆所周知,一般女聲的音調比男聲的音調高,這種不同主要是反應在基音頻率(pitch frequency)上。所以本文識別男女聲主要利用男女聲基音頻率(pitch frequency)的高低。
一般女聲的基音頻率高於男聲,常見的男女聲基音頻率大致分佈範圍如下圖所示。提取基音頻率比較常用的方法就是倒譜(cepstrum),它是常見的信號處理方法,這裏不再過多贅述。
系統結構
聲音信號具有短時平穩性,我們認爲在10~50ms的數據長度上聲音信號是平穩信號,所以可以分幀然後用平穩信號的處理方法進行處理。首先就是分幀操作(這裏取40ms幀長,20ms幀移),加窗後求倒譜,根據倒譜便可以求解出基音頻率。整個系統流程圖如下:
運行結果
實驗測試結果如下,GUI顯示判定的性別結果“Man”或者“Woman”(注意:只有濁音纔會有基音頻率,清音(如:p、pa等)沒有。所以測試時,請發濁音),實測準確率可以達到90%以上。如果想達到更高的準確率,可以再去研究機器學習相關的方法。
最後再附源代碼【點擊這裏下載】
enjoy!是以爲記!