2016-4-6 18:43 上傳
點擊文件名下載附件
下面是論文預覽(無圖版):
Northeastern University
獨創性聲明
本人聲明,所呈交的學位論文是在導師的指導下完成的。論文中取得 的研究成果除加以標注和致謝的地方外,不包含其他人己經發表或撰寫過 的研究成果,也不包括本人為獲得其他學位而使用過的材料。與我一同工 作的同志對本研究所做的任何貢獻均己在論文中作了明確的說明并表示謝意。
學位論文作者簽名: 日期:
學位論文版權使用授權書
本學位論文作者和指導教師完全了解東北大學有關保留、使用學位論 文的規定:即學校有權保留并向國家有關部門或機構送交論文的復印件和 磁盤,允許論文被查閱和借閱。本人同意東北大學可以將學位論文的全部 或部分內容編入有關數據庫進行檢索、交流。
作者和導師同意網上交流的時間為作者獲得學位后: 半年□一年□ 一年半□ 兩年□
學位論文作者簽名:導師簽名: 簽字日期:簽字日期:
東北大學碩士學位論文摘要
基于 CFCC 的語音識別系統設計及在物聯網上的應用
摘要
語音特征參數提取是影響語音識別系統的關鍵技術之一,近年來結合聽覺特性的語 音特征參數提取是語音識別領域的研究熱點。而隨著物聯網技術的廣泛推廣,設計并實 現面向應用的語音識別系統引起越來越多科研人員的關注。
本文在綜述了語音識別技術中語音特征參數提取的研究發展及其在物聯網應用的 基礎上,實現了一種基于聽覺模型的特征參數:耳蝸基底膜倒譜系數(CFCC),并將其應 用于物聯網重要分支智能家居系統中,以實現非特定人、語音交互的智能家居系統。本 文的主要工作如下:
首先,研究基于聽覺模型的 CFCC,介紹其數學定義、實現方法,并在 MATLAB 環境下進行仿真研究。仿真實驗中還提取了 MFCC 和GFCC,和 CFCC 進行對比試驗, 實驗室安靜環境下錄制的音頻測試文件信噪比高,所有特征參數的識別率都可以達到 90% 以上,對該音頻文件添加白噪聲,令信噪比為 6dB 時,MFCC 的識別率下降為 67.5%, GFCC 和 CFCC 的稍有下降,分別為 86.8%和 90.4%。當信噪比為0dB 時,MFCC 的識 別率下降到 20%以下,GFCC 和 CFCC 的亦有下降趨勢,分別為 45.0%和 65.2%,但 CFCC 的表現要優于 。實驗說明 具有更好的抗噪性。
然后,將 CFCC 整合到 Sphinx 語音識別系統中,以替換其默認的特征參數 MFCC, 實現基于 CFCC 的語音識別系統,并將該系統移植到嵌入式開發平臺。其中,嵌入式開 發平臺以 OMAP3530 為核心處理控制芯片,搭載嵌入式 Linux 操作系統,并添加了 QT 圖形界面庫、ALSA 音頻庫、NRF24L01 無線模塊及驅動等支持,有效保證語音識別系 統實現。
最后將實現的基于 CFCC 的語音識別系統,應用到物聯網分支智能家居系統中。該 系統將用戶從傳統的利用手和眼的交互方式解放出來,可以在不固定的地點,不中斷用 戶當前行為的情況下利用語音信號以非接觸方式完成對智能家居系統的操作。
關鍵詞:物聯網;智能家居;CFCC;Sphinx;linux;OMAP3530
Design of speech recognitionsystem based on CFCC and application in the Internet ofThings
Abstract
Feature extraction is one of the key technology in Automatic Speech Recognition(ASR). In recent years, feature extraction combined with auditorycharacteristics is a hotspot. With the extensive popularization of the Internet of Things (IoT), the design and realization of ASR for IoT is attracting more and moreattention from researchers.
This paper summarizes the research and development of feature extraction and its appli- cation on IoT. And a feature based on auditory model called CochleaFeature Cepstral Coeff- ieients(CFCC) is implemented. The CFCC is applied to the speaker-independent and voice interactive smart home system which isone of the important branch of IoT. The main work are as follow:First, the mathematical definition and realization method of CFCC is introduced in this paper, and the simulation study in MATLAB is implemented. MFCCand GFCC are also extracted to compared with CFCC under different level of Signal to Noise Ratio(SNR). The clean testing condition recorded under a quietenvironment in the laboratory has a high SNR, the accuracy of all features are more than 90%. After adding white noise, the SNR of the testing conditiondrops to 6dB, the performance of MFCC drops to 67.5%, GFCC is 86.8%, and CFCC is 90.4%. If the SNR is 0dB, the MFCC accuracy is less than 20%,GFCC is
45.0%, and CFCC is 65.2%, but it is still higher than the other two. The experiments shows that CFCC has better noise immunity.
Second, design an ASR based on CFCC which is integrating CFCC into the Sphinx to replace its default feature MFCC. Then ported it to embedded platform. The embedded plat- form based on OMAP3530 and installed Linux. What’s more, the QT graphical library, ALSA library, NRF24L01 wireless moduleand its driver are added which can guarantee the imple- mentation of ASR effectively.
Finally, applied the ASR based on CFCC into smart home system. This system liberate users from the traditional way of hands and eyes interaction. Userscould operate the smart home system in non-contact way without fixd place and interrupting their current behavior
Keywords:Internet of Things; smart home; CFCC; Sphinx; linux; OMAP3530
目錄
獨創性聲明............................................................................................................................ I
摘 要 ...................................................................................................................................... II Abstract............................................................................................................................... III 第1章 緒論........................................................................................................................ 1
1.1 課題的提出.................................................................................................................. 1
1.1.1 語音識別系統發展............................................................................................ 1
1.1.2 語音識別關鍵技術............................................................................................ 2
1.1.3 語音識別在物聯網上應用................................................................................ 2
1.2 研究內容...................................................................................................................... 3
1.3 論文安排...................................................................................................................... 4
第 2 章 語音識別基礎 .................................................................................................... 5
2.1 典型語音識別系統構成.............................................................................................. 5
2.1.1 預處理................................................................................................................ 5
2.1.2 特征提取............................................................................................................ 7
2.1.3 模式匹配.......................................................................................................... 14
2.2 Sphinx 語音識別系統 ................................................................................................ 20
2.2.1 聲學模型及其訓練.......................................................................................... 21
2.2.2 語言模型及其訓練.......................................................................................... 23
2.3 小結............................................................................................................................ 25
第3章 CFCC 提取及應用研究 ............................................................................... 27
3.1 CFCC 的數學定義...................................................................................................... 27
3.1.1 聽覺變換.......................................................................................................... 27
3.1.2 毛細胞窗口...................................................................................................... 29
3.1.3 非線性響度變換和離散余弦變換.................................................................. 29
3.2 CFCC 的仿真實現...................................................................................................... 30
3.2.1 耳蝸濾波器系數的實現.................................................................................. 30
3.2.2 聽覺變換系數提取的實現.............................................................................. 35
3.2.3 毛細胞窗口實現.............................................................................................. 39
3.2.4 非線性響度變換和 DCT 變換實現................................................................ 39
3.3 實驗結果與分析........................................................................................................ 41
3.3.1 實驗數據準備.................................................................................................. 41
3.3.2 基準系統.......................................................................................................... 41
3.3.3 實驗結果.......................................................................................................... 41
3.4 CFCC 在 sphinx 系統的應用實現............................................................................. 43
3.4.1 SphinxTrain 中 CFCC 特征參數提取.............................................................. 43
3.4.2 Pocketsphinx 中 CFCC 特征參數提取............................................................ 45
3.5 小結............................................................................................................................ 47
第 4 章 系統實現平臺建立 ........................................................................................ 49
4.1 系統硬件平臺介紹.................................................................................................... 49
4.1.1 主控平臺硬件構成.......................................................................................... 49
4.1.2 設備節點硬件設計.......................................................................................... 51
4.2 系統軟件開發平臺建立............................................................................................ 52
4.2.1 主控平臺軟件開發環境及工具...................................................................... 52
4.2.2 設備節點軟件開發環境.................................................................................. 54
4.3 小結............................................................................................................................ 56
第5章 基于 CFCC 的語音識別系統在物聯網的應用實現....................... 57
5.1 主控平臺設備驅動構建............................................................................................ 57
5.1.1 NRF24L01 無線模塊驅動 ............................................................................... 58
5.1.2 ALSA 音頻驅動庫的編譯安裝 ....................................................................... 59
5.2 語音交互的智能家居系統實現................................................................................ 62
5.2.1 智能家居系統和 Pocketsphinx 間通信實現 .................................................. 62
5.2.2 語音交互的智能家居系統實現....................................................................... 63
5.3 小結............................................................................................................................ 65
第 6 章 總結與展望 ....................................................................................................... 67
6.1 本文總結.................................................................................................................... 67
6.2 展望............................................................................................................................ 67 參考文獻.............................................................................................................................. 69 致 謝..................................................................................................................................... 73 攻讀學位期間的研究成果........................................................................................... 75
第 1 章緒論
1.1 課題的提出
1.1.1 語音識別系統發展
語音識別的研究工作起步于上個世紀 50 年代。90 年代開始,語音識別技術逐漸從 實驗室走向應用。根據其實用化的需要,人耳聽覺模型的研究逐漸為學者所重視,出現 了不同類型的基于聽覺模型的參數:感知加權線性預測參數(Perceptual Linear Predictive, PLP)、梅爾頻率倒譜系數(Mel Frequency Cepstrun Coefficient,MFCC)、Gammatone 濾 波器參數、Gammachirp 濾波器參數[1][2]。同時出現了一批比較成功的語音識別軟件:IBM 的 ViaVioce,Microsoft 的 SpeechSDK,Google 的 Google Speech API,Nuance 的 Naturally Speaking 以及開源語音識別系統HTK,Sphinx[3]和 Julius。
進入 21 世紀后隨著電子產品的普及,嵌入式語音處理技術迅速發展。語音識別技 術也順勢進入該領域,其表現形式為出現獨立的語音識別芯片如 Sensory 公司的 Rsc 系 列語音識別芯片、 公司的 Unispeech 和 Unilite 語音芯片等;或者為語音識別軟 件出現嵌入式版本分支,例如 SpeechSDK,Google Speech API,Sphinx 等先后實現對嵌 入式設備的支持。我國語音識別研究工作一直緊跟國際水平,國內的語音識別始于七十 年代,國家也很重視,并把大詞匯量語音識別的研究列入“863”計劃,由中科院聲學 所、自動化所及清華大學等單位研究開發[4]。經過四十余年的發展,漢語語音識別領域 取得了豐碩的成果。在實用方面,也涌現出不少以語音識別技術為核心的公司,例如語 音識別芯片提供商 ICRoute,語音識別引擎提供商科大訊飛。
語音識別技術以其極具誘惑力的發展潛力,吸引了國內外一批又一批學者投入其中, 并且取得了很大的成就,部分技術已經走出實驗室進入實用化階段,很大的鼓舞了研究 人員的熱情,然而其發展并非一帆風順,現在還有許多困難需要解決:
1.噪聲環境:由于環境復雜、噪聲源較多,使得在實驗室環境下可以輕松識別的 系統應用在實際環境中識別率明顯下降[5];
2.連續語音:漢語連續語音的連續程度高,協同發音現象嚴重,表現為孤立詞匯 識別率很高,而在連續語音條件下識別率下降[6];
3.非特定人:系統對用戶具有“選擇性”,目前商業化的軟件大多需要進行繁瑣的
“訓練”,使語音識別系統可以針對性的對用戶語音進行識別,一旦更換系統或用戶, 則需要重新“訓練”,為用戶使用帶來諸多不便[7]。
1.1.2 語音識別關鍵技術
目前大多數語音識別技術是基于統計模式的。從語音產生機理來看,語音識別可以 分為語音層和語言層兩部分,基于這種模式的語音識別系統包括四個部分:特征提取, 聲學模型訓練,語言模型訓練和搜索算法[7]。嘗試解決當前語音識別技術所面臨的的困 難,可以從以下幾個方面入手:
(1) 語音特征:聲學模型是語音識別最底層的模型,代表著語音學信息,是系統中 的關鍵部分。聲學模型建模時訓練單元的區分能力,直接取決于特征提取方法的優劣。 特征提取要求提取的特征不但能夠有效的降低數字語音信號的數據量,還要保證包含原 始語音的全部有效信息。另外,特征提取最好還能夠具有抗噪性,這樣就可以從源頭上 保證語音識別系統的魯棒性[7]。
(2) 說話人適應性:每個人的語音中不但包含語言信息,還包含個人特征信息,目 前的語音識別系統無法將兩者有效區分。對于特定人的語音識別系統,它采集特定人的 語音,進行訓練、識別,其識別率一般可以達到 以上。然而對于非特定人識別,由 于語音中個人特征的影響,造成訓練語音庫和測試語音庫總會存在差異,訓練語音庫不
能全面覆蓋和反映測試語音庫的語音[5]。通常通過下面的方法解決此類問題:其一,深 入研究語音發音機理,從中找出與說話人無關的反映語音—文本對應關系的參數序列, 本質上是尋找一種語音特征參數,可以包含原始語音的全部語音學信息,而剔除說話人 的個性信息[4][8]。其二,增大訓練集的規模,使之涵蓋盡可能多的發音人的聲學特征, 從而減小個性信息的影響,由于這需要很大的語料庫而且訓練時間太長,影響實用性, 故這種方式不予推薦[7]。
(3) 語法知識的利用。選擇合適的語法知識可以明顯的糾正音素序列的錯誤判別, 降低最終語句的錯誤識別數。實際上,連續語音識別系統或多或少結合了某種語法知識。 語法知識定義越清楚、應用越充分,系統的識別率就會越高。目前典型的用于描述語法 規則結構的方法是使用狀態樹轉移結構的統計模式[6][9]。
1.1.3 語音識別在物聯網上應用
1999 年美國麻省理工學院的 Auto-ID 實驗室首次提出物聯網(Internet of Things,IoT)
的概念。在物聯網的發展過程中其內涵幾經變化,目前認為物聯網指將所有物體通過信 息傳感設備如射頻識別、全球定位系統、紅外感應器等與互聯網相結合,形成一個智能 化識別和管理的網絡。其目的是讓所有的物品都與網絡連接在一起,方便識別和管理。 物聯網的核心是實現物體(包含人)之間的互連,從而能夠實現物體與物體之間的信息交 換和通信。物體信息通過網絡傳輸到信息處理中心后可實現各種信息服務和應用。物聯 網被預言為繼互聯網之后全球信息產業的又一次科技與經濟浪潮,受到各國政府、企業 和學術界的重視[10][11]。
物聯網的應用領域主要包括物流監控、污染監控、遠程醫療、智能交通和智能家居 等。其中,智能家居是以住宅為平臺,兼備建筑、網絡通信、信息家電、設備自動化, 集系統、結構、服務、管理為一體的高效、舒適、安全、便利、環保的居住環境。智能 家居因其應用前景廣闊、潛在市場需求巨大且發展迅猛而受到廠商的廣泛關注[12]。
目前,大多數智能家居系統的人機交互是通過鍵盤、觸摸屏和 LCD 來完成[13][14]。 對用戶的操作地點、交互方式有很大的限制。本文中,嘗試將語音識別系統應用到智能 家居系統中,使用戶可以通過語音來完成和智能家居系統的交互,即構建人機語音交互 的智能家居系統。該系統將用戶從傳統的利用手和眼的交互方式中解放出來,可以在不 固定的地點,不中斷用戶當前行為的情況下利用語音信號以非接觸式完成對系統的操作。
1.2 研究內容
本文主要內容集中在三個方面,如圖 1.1 所示:
Fig. 1.1 The main research content in this article
第一:目前基于 MFCC 和 GFCC(Gammatone Frequency Cepstrum Coefficient)的語音 識別系統噪聲魯棒性較差。本文將深入學習基于聽覺模型的耳蝸倒譜系數(Cochlea Feature Cepstral Coeffieients,CFCC)的定義及各個環節的意義,在 MATLAB 環境下對該 參數進行仿真研究,分步論述 CFCC 的提取方法及實現過程。然后在不同信噪比條件下, 與 MFCC 和 GFCC 進行對比,觀察其抗噪性是否優于他們。
第二:語音識別系統是一個完整的語音到文本的處理過程,不但包含特征提取環節, 還包含預處理、模式匹配等環節,實現語音識別系統每個環節都必不可少。Sphinx 是一 個開源的、完整的語音識別系統,并且擁有完善的工具。本文中,首先學習 Sphinx 的 使用,掌握聲學模型和語言模型的訓練方法,掌握 Sphinx 語音識別系統的構建方法。 然后深入閱讀 Sphinx 源代碼,了解其組織架構,找出其中默認參數MFCC 的提取部分, 并修改為提取 CFCC 參數,實現基于 CFCC 的 Sphinx 語音識別系統。
第三:本文以物聯網的典型應用——智能家居系統為應用環境,學習 Linux 操作系 統知識,掌握基本的操作方法及程序開發流程,在以OMAP3530 為核心的嵌入式開發 平臺上構建嵌入式 Linux 操作系統,并添加 QT 圖形界面庫、ALSA(Advanced Linux Sound Architecture)音頻驅動庫、NRF24L01 無線模塊及驅動等必要支持。然后將基于 CFCC 的 Sphinx 語音識別系統移植到該開發平臺,并以此為核心,構建語音交互的智能家居系統。
1.3 論文安排
本文的結構安排如下: 第一章:介紹語音識別技術的現狀,語音識別的關鍵技術,并概括了本文的主要研
究內容。 第二章:詳細介紹典型語音識別系統的各個組成部分,對理解語音識別各個環節如
何工作有很大的指導作用。介紹了目前幾種主流的基于人耳聽覺模型的特征參數提取方 法以及隱馬爾科夫模型應用于語音識別領域的基本原理和方法。另外,還介紹了 Sphinx 的原理及使用方法。
第三章:首先闡述 CFCC 的數學定義,然后詳細介紹其在 MATLAB 環境下的提取 方法及仿真實現,并將此特征參數與傳統特征參數進行比較,實驗表明該參數在噪聲環 境下魯棒性更好。最后,介紹如何將該參數整合到 Sphinx 系統中。
第四章:首先介紹系統硬件平臺,然后介紹軟件開發平臺建立過程。這為后續應用 系統開發做好必要準備。
第五章:主要介紹基于 CFCC 的語音識別系統在物聯網的應用實現,包括設備驅動 實現及應用系統實現兩部分。最終實現語音交互的智能家居系統。
第六章:總結本論文所做工作,針對系統中不完善的地方提出可能的改善方案,對 后續研究做簡明交待。
第 2 章語音識別基礎
2.1 典型語音識別系統構成
典型語音識別系統主要由三部分構成,系統示意圖如下:
2.1.1 預處理
人類的語音信號是由肺部的收縮,壓迫氣流由支氣管經過聲門和聲道引起音頻振蕩 而產生的一種聲波。通常認為語音信號的信息主要集中在40-4kHz的范圍內[15]。
聲波是機械波,數字電路系統對語音進行處理,首先需要將其轉換為數字信號,并 確定有效語音數據段,該過程即預處理,一般包括預濾波(抗混疊濾波)、量化、預加重 和端點檢測。
(一) 預濾波 根據奈奎斯特采樣定律可知,采樣頻率應為輸入帶限信號最高頻率的二倍以上?
慮到在噪音環境中寬帶隨機噪聲疊加的結果,使得語音信號可能包含4kHz以上頻率成分, 為了防止頻譜混疊,必須在采樣前進行一次預濾波去掉有效信號之外的高頻噪音。預濾 波還有一個目的是避免50Hz的工頻干擾,因此預濾波是一個帶通濾波器,其下截止頻率
fL=50Hz,上截止頻率 fH則根據需要定義。本中采樣頻率為16kHz,上截止頻率為fH=4k
Hz。
(二) 采樣及量化 采樣是將連續時間的語音信號轉換成離散時間信號,采樣之后的語音數據是離散時
間的模擬數據,利用計算機進行存儲和處理則要經過量化,即AD轉換。原信號和量化 后的信號的差值稱為量化誤差。量化時,采用較大的量化級數來記錄采樣點的幅度,則 量化誤差越小,但相應的就會增加存儲容量和處理時的計算量,因此要根據需求選擇合 理的量化級數[15]。本文中量化級數為16,即每個采樣點為16bit。
(三) 預加重
由于語音信號的平均功率譜受聲門激勵和嘴唇輻射的影響,高頻端在 800Hz 以上按
6dB 倍頻程跌落。預加重的目的是提升高頻部分,使信號的頻譜變得平坦,保證可以在 低頻到高頻的整個頻帶中用同樣的信噪比求頻譜,以便進行頻譜分析或聲道參數分析[15]。 預加重可以使用一階數字濾波器來實現:
系數μ常在0.9至0.95之間。該范圍所確定的加重曲線與人中耳的靈敏度相適應,本
文選取μ=0.9375。 (四) 端點檢測 語音信號的端點檢測是語音處理中常常涉及的問題。實驗表明,準確地檢測出語音
信號的端點不但可以減少后續處理的計算量,而且一定程度上影響整個系統的性能。目 前常用的端點檢測方法是基于短時能量和短時平均過零率的檢測方法(也稱作雙門限比 較法)。
2.1.2 特征提取
在完成對語音信號的預處理后,就得到了有效語音信號的時域采樣信號了。如果以 時域采樣信號直接進行匹配運算,無論從計算量還是計算效果來看都是不理想的。特征 提取則是將這些采樣信號轉換為能更好地表述該語音信號特性并且數據量較小的特征 幀。
人的聽覺系統在聽音辨物方面有獨特的優越性,且具有優良的抗噪聲性能,它能在 極低的信噪比下有效提取目標語音特征,因此基于人耳聽覺模型的語音特征提取方法日 益受到重視[2]。其中MFCC、Gammatone濾波器特征參數、Gammachirp濾波器特征參數 都是典型的基于聽覺模型的特征參數[16]。下面簡要介紹一下他們的提取方法。
2.1.2.1 MFCC
物理上的頻率以 Hz 為單位,Mel 頻率根據人耳聽覺特性,將頻譜轉化為非線性頻 譜。它們之間的具體關系為:
Mel( f ) 2595log(1 f / 700)
(2.6)
其中,f 為線性頻率,單位 Hz, Mel( f ) 為 Mel 頻率。
根據 Mel 頻率與 Hz 的對應關系,可以將語音頻率劃分為一系列三角形濾波器序列, 稱為 Mel 頻率濾波器組。該濾波器組中心頻率在以 Mel 為單位的頻率軸上是等距的,在
Hz 單位的頻率軸上是不等距的[1],如圖 2.2 所示。
(1) 對頻譜進行平滑作用,消除諧波的影響并凸顯語音的共振峰。因此一段語音的
音調或音高,不會呈現在 MFCC 參數內,換句話說,以 MFCC 為特征的語音識別系統,
并不會受到輸入語音的音調或音高的影響。
(2) 降低信息量。
MFCC 特征參數提取示意圖如圖 2.3 所示:
圖 2.3 MFCC 特征參數提取示意圖
Fig. 2.3 MFCC feature extraction diagram
MFCC 特征參數的提取過程如下:
(1) 預處理:預處理包括預加重、分幀、加窗。 預加重:計算公式為式(2.1)。
分幀:先將 N 個采樣點集合成一個觀測單位,稱為一幀。為了避免相鄰兩幀的變化 過大,所以兩個相鄰幀之間有一段重疊區域(幀移),此重疊區域包含 L 個采樣點,L 的 值約是 N 的一半。
加窗:采用漢明窗,窗函數定義為式(2.3)。
(2) FFT 變換,公式如下:
由于信號在時域上的變化很難看出信號的特性,所以通常將它轉換成頻域上的能量
分布來觀察。所以信號經漢明窗后,每幀語音信息再經過 FFT 變換得到頻譜上的能量分 布。
(3) Mel 濾波器組及對數能量:
將能量譜乘上一組三角帶通濾波器(共計 24 個,即 M=24)。這 24 個三角帶通濾波 器在 Mel 頻率上是平均分布的,如圖 2.2 所示。而 Mel 頻率和一般頻率的關系如式(2.6) 所示 [1]。
將線性譜 X(k)轉換到對數頻譜 S(m)的傳遞函數是:
(4) 離散余弦變換(Discrete cosine Transform,DCT)
將對數譜 S(m)做 DCT 變換,運算公式如式(2.11):
東北大學
求取倒譜系數過程中將聲門激勵和聲道響應分離開來,適當選擇倒譜維數就可以提
取產生語音信號的語音信息,把它作為語音識別特征參數,其各維參數之間相關性就很 小。此外,在求取倒譜系數中舍棄了對語音識別不重要的相位信息,起到進一步壓縮特 征作用。經過上述步驟得到 MFCC 特征參數。
2.1.2.2 Gammatone 濾波器參數
在聽覺特性的研究中,耳蝸基底膜行波和它的沖激響應非常重要。模擬耳蝸基底 膜行波的 Gamatone 濾波器就是一個非常成功的例子,作為一個耳蝸模型將語音時域信 號分解成一系列頻帶信息。
Gamatone 濾波器最早應用于表征生理學數據,后被應用于耳蝸聽覺模型用來模擬 人耳聽覺頻率響應。單頻率聲音的發聲近似描述可由下面的幅度調制波形表示[17][18]:
其中 A 是振幅系數,m(t)是調制器,ω 是角頻率, 是相位,其中調制器 m(t)可以
表示成:
其中 β 是時間寬度,γ 是波形因數,歸一化常數
伽馬函數的積分形式。
Gammatone 濾波器是一個標準的耳蝸聽覺濾波器,該濾波器組沖激響應的定義為:
其中,A 為濾波器增益,n 為濾波器階數, fi 是中心頻率,i 是相位,其對功率譜
影響可以忽略,簡化模型中一般取 i 0 , ERB( fi ) 是等效矩形帶寬 (Equivalent Reetangular Bandwidth,ERB),它決定了脈沖響應的衰減速度,與濾波器中心頻率有關, 而每個濾波器帶寬與人耳聽覺臨界頻帶有關,聽覺心理學中, ERB( fi ) 可以由式(2.15)
得到:
每個濾波器的帶寬由上式決定,其中,中心頻率 fi 與帶寬都是呈對數比例的,即具
有非線性的頻率特性,符合人耳聽覺特性。中心頻率 fi 可由式(2.16)得出:
其中, f 為濾波器的截止頻率, 是濾波器重疊因子,用來指定相鄰濾波器之間
重疊百分比。每個濾波器的中心頻率確定后,相應的帶寬就由公式(2.15)得出來了。
Gammatone濾波器組的沖激響應和頻率響應如圖2.4所示。
(b)
圖 2.4 Gammatone 濾波器的沖激響應和頻率響應
Fig. 2.4 Gammatone filter’s impulse response and frequency respo nse
實踐表明:(1)Gammatone 濾波器只需要 3 個主要參數就能夠很好地模擬聽覺實驗
中的生理數據;(2)需要的階次較低,階數為 4 的 Gammatone 濾波器就能很好地模擬耳 蝸的聽覺濾波特性;(3)具有簡單的沖激響應函數,能夠由此推導出 Gammatone 函數的 傳遞函數,進行各種濾波器性能分析,同時沖激響應函數有利于聽覺系統模擬電路的實 現[16]。
2.1.2.3 Gammachirp 濾波器參數
Gammachirp濾波器最早由Irino于1997年提出,同Gammatone濾波器一樣,它也是由 沖激響應函數定義的,Gammachirp濾波器的沖激響應函數為[20][21]:
與Gammatone函數相比,Gammachirp函數只是多了cInt這一項,這里的c是一個額外
的頻率調制參數,同時用非對稱的fr代替Gammatone函數中對稱的中心頻率f0,這里的fr 會隨著c值的改變而改變,并且某種程度上依賴參數b和階次n。對于參數b的定義,還是 采用與Gammatone函數相似的公式[21]。Irino和Patterson在用Gammachirp濾波器去擬合人 耳掩蔽實驗數據的時候,發現在參數c隨刺激聲強度 PS (單位為dBSPL)成線性關系為
c 3.38 0.107 PS ,當 PS 大于30dBSPL時,c變成負數。取Gammachirp濾波器參數c=1.0,
得到不同fr下Gammachirp濾波器的沖激響應和幅頻響應曲線分別如圖2.5所示。與Gamm- atone函數的對應曲線比較:Gammachirp函數的沖激響應波形差別不大,但是頻率響應 曲線卻呈現了明顯的非對稱性,這是兩者最明顯的差別[23]。此外,相比Gammatone濾波 器,圖中Gammachirp濾波器的中心頻率由于clnt這一項影響而略向高頻移動。
Fig. 2.5 Gammachirp filter’s impulse response and frequency respo nse
由以上討論可知,由于Gammachirp濾波器增加了額外的強度相關的參數c,并引入
了非對稱項clnt,克服了Gammatone函數不能模擬基底膜濾波器非對稱、強度依賴特性
的缺點[24]。在對實驗數據進行擬合時,由于實驗曲線是非對稱的,而Gammatone濾波器 曲線是對稱的,因而不論如何改變Gammatone濾波器的參數n、b和 ,都不能使Gamma- tone曲線和實驗曲線之間的平方誤差顯著減小。而通過調整參數,Gammachirp濾波器可 以達到比Gammatone濾波器更好的擬合效果。同時人們發現,最初被Gammatone函數擬 合的實驗數據,也能被Gammachirp函數更精確地擬合。因此Gammachirp濾波器大大改 進了Gammatone濾波器的性能[23][24]。
2.1.3 模式匹配
語音識別的最后一個階段是建立參考模板并進行模式匹配。實現模式匹配可以采用 不同的分類模型,語音識別技術中經典且有效的分類模型當屬隱馬爾科夫模型(Hidden Markov Models,HMM)[25],本節對該模型做簡要介紹。
2.1.3.1 HMM 應用于語音識別的基本思想
(一) 馬爾科夫(Markov)鏈
,且它在 n+k 時刻所處
Markov 鏈是 Markov 隨機過程的特殊情況,是狀態和時間都離散的 Markov 過程,
是 HMM 的基礎。在數學上給出定義如下:
當 k=1 時, pij (1) 稱為一步轉移概率,簡稱轉移概率,記為 aij。由于 k 步轉移概率
pij(k)可以由轉移概率 aij 得到,因此描述馬爾可夫鏈的最重要的參數就是轉移概率矩陣 A。
但 A 矩陣還決定不了初始分布,即由 A 求不出 q1 si 的概率,為了完全描述馬爾可夫鏈,
除 A 矩陣之外,還必須引入初始概率 1 , 2 ,, n ,這樣 Markov 鏈的特性可以由 狀態轉移概率矩陣 A 和初始概率矢量 π 來描述。
(二) HMM 模型
HMM 是在 Markov 鏈的基礎上發展起來的。由于實際問題比 Markov 鏈模型所描述 的更為復雜,觀測到的觀察值并不是與狀態一一對應,而是通過一組概率分布相聯系的, 這樣的模型就稱為 HMM。它是一個雙重隨機過程,其一是 Markov 鏈,這是基本隨機 過程,它描述狀態的轉移,另一個隨機過程描述狀態和觀察值之間的統計對應關系,這 樣,作為一個觀察者只能看到狀態關系,不像 Markov 鏈模型中的觀察值與狀態一一對 應,對于狀態,是通過一個隨機過程去感知狀態的存在及其特性的[1]。
在語音識別中,所謂的觀測序列就是通過特征提取得到的一幀幀的語音參數,而狀 態是在訓練階段事先規定好的不同的語音單元。對于漢語來說,語音單元可以是一個完
整的音節,也可以是聲母或韻母,還可以是更為精細的音素。
圖 2.6 單詞“識別”的 HMM 表示及其與特征參數的關系
Fig. 2.6 The HMM represent of word “shibie” and the relationship with features
如圖 2.6 所示,一個 HMM 模型由若干個狀態組成,隨著時間的變化,各個狀態之 間可以發生轉移,也可以在一個狀態內駐留。每個觀測向量對不同的狀態都有相應的輸
2.1.3.2 HMM 的三個基本問題
隱馬爾可夫模型應用于語音識別系統必須解決三個基本問題:
(1) 評估問題:給定觀察序列O o1 , o2 ,, oT 和 HMM 模型 ( , A, C, ,U ) ,如 何有效計算在給定模型 λ 條件下產生觀測序列 O 的概率 P(O|λ)。即已知模型和一個觀測
序列,如何計算由該模型產生出該觀測序列的概率。評估問題的求解能夠選擇出與給定 觀測序列最匹配的模型,常用算法是前向—后向算法。
(2) 最佳狀態鏈的確定:在給定觀察序列O o1 , o2 ,, oT 和 HMM 模型
( , A, C, ,U ) 后,如何選擇在某種意義上最佳的狀態序列Q q1 , q2 ,, qT ,以最好
地解釋觀測序列 O。常用算法是 Viterbi 算法。
(3) 模型參數優化問題:如何調整模型參數 ( , A, C, ,U ) ,以使條件概率 P(O|λ) 最大。即如何調整模型參數,以使模型能最好地描述一個給定觀測序列,最好地說明這 個觀測序列就是最優模型產生出來的。常用算法是 Baum-welch 算法(或稱 EM 算法)。
(一) 評估問題
在語音識別中,可以通過計算、比較 P(O|λ),從多個模型參數中選擇出與觀察序列 匹配得最高的那個模型。
給定觀察序列O o1 , o2 ,, oT 和 HMM 模型 ( , A, C, ,U ) ,如果己知狀態序列
Q q1 , q2 ,, qT ,則 HMM 模型 λ 以狀態 Q 輸出觀察序列 O 的概率為:
(二) 最佳狀態鏈的確定
第二個問題是給定一個 HMM 模型 λ 和觀察序列O o1 , o2 ,, oT ,如何有效地確 定與之對應的最佳的狀態序列Q q1 , q2 ,, qT ,這可以用 Viterbi 算法來解決。Viterbi 算法不僅可以找到一條足夠好的狀態轉移路徑,還可以得到該路徑所對應的輸出概率。
而且該算法比全概率公式的計算量小的多。定義 δt(i)為時刻 t 時沿一條路徑 q1 , q2 , , qT 產 生出 o , o ,, o 的最大概率,并且滿足 qt=si。求最佳狀態序列的過程為:
這里,δt(j)為 t 時刻第 j 狀態的累積輸出概率,ψt(j)為 t 時刻第 j 狀態的前向狀態號,
用來跟蹤記錄 δt(j)在推導過程中的最佳路徑。qt*為最優狀態序列中 t 時刻所處的狀態,
P*為最終的輸出概率。
在 Viterbi 算法中需要計算前向變量 αt(i),它是通過遞歸運算求得的,即由連續相乘 的概率值組成,比如計算前向變量所用的遞推公式為:
(三) 參數優化
HMM 的參數優化問題也就是通常所說的模型訓練問題,即如何調整模型參數 λ, 使觀察序列在給定模型條件下輸出概率最大,這可以用參數重估公式解決。
為了給出重估公式,先定義t (i, j) 為給定觀察序列 O 和模型 λ 時,在時刻 t 模型處 于狀態 si,在時刻 t+1 處于狀態 sj 的概率,即:
上述討論了 EM 算法都是針對單個序列訓練的,在很多時候單序列訓練會使參數訓
練不夠充分,而使識別率不高。因此在實際應用中,都是有大量觀察序列參與訓練的, 也就是對每個 HMM 模型,都會收集大量的語音數據,分別計算出各自的特征參數序列, 再用來對該 HMM 的參數進行重估。
2.2 Sphinx 語音識別系統
Sphinx 是一個自動語音識別引擎,它是由卡耐基梅隆大學 (Carnegie Mellon University,CMU)的 Sphinx 研究組,Sun 微系統實驗室,Mitsubishi 電子研究實驗室和 Hewlett Packard 共同合作建立的,并得到了美國加州大學,麻省理工大學的資助[26]。 Sphinx 是開放源代碼的語音識別軟件包,多數版本可支持 Linux,Unix、Windows XP 和 Andriod 多種操作系統。Sphinx 系統具有悠久的歷史,先后開發了四個重要版本: Sphinx1、Sphinx2、Sphinx3 和 Sphinx4[27]。其中被廣泛使用的是 Sphinx2,同時還有廣 泛應用于嵌入式系統的 PocketSphinx[27][28]。
Pocketsphinx 是從 sphinx2 發展而來的嵌入式語音識別引擎,代碼針對嵌入式平臺
進行了優化,實時性更好。后來,Pocketsphinx 的功能逐漸完善,并整合 Sphinx3 部分
功能。由于近年來嵌入式領域發展迅速,Pocketsphinx 獲得了 CMU 的重點支持,不斷 有新版本推出。目前最新版本是 Pocketsphinx-0.8,也是本文中使用的版本[29][30]。
圖 2.8 Pocketsphinx 組織結構示意圖
Fig. 2.8 Pocketsphinx structure diagram
該語音識別引擎主要有四部分組成:前端(FrontEnd,包括預處理,分幀、加窗、特 征提取等)、聲學字典(Pronuncation Dictionary)、語言模型(Language Model)和解碼器 (Decoder)。
使用的語音特征參數是 ,解碼器即解決 中最佳狀態鏈確定的問 題,前者在 2.1.2.1 節中介紹,后者在 2.1.3.2 節介紹,下面本文對聲學模型和語言模型 做簡要介紹。
2.2.1 聲學模型及其訓練
聲學模型是語音識別系統最基本的組成單元和核心部分。聲學模型可以刻畫不同的 聲學特性,它表征了系統中出現的每個基本語音單元。若聲學模型精度不好,那么具有 再好的語言模型和解碼器也無法有好的識別率[7]。
在進行漢語聲學模型建模時,建模單元一般選用音素、音節或者詞。對于小詞匯量 的語音識別系統可以直接采用音節進行建模。而對于詞匯量偏大的識別系統,一般選取 音素進行建模。識別規模越大識別單元選取的越小。
言語在實際中是一個連續的過程,語音會持續的受到臨近音的影響,這種同時或者 重合的發音,就被稱為協同發音。協同發音的存在會降低語音識別系統的性能。而上下
文相關音素模型的建立可以捕捉協同發音,從而提高系統的性能。綜合考慮模型精度和
運算速度,可是使用上下文相關三元音素模型(triphone)。SphinxTrain 是 CMU 提供的聲 學模型訓練工具,可以為 Sphinx 各個版本生成所需格式的聲學模型。本文采用聲母、 韻母為基本訓練單元,上下文相關的三元音素方式進行聲學模型的訓練。以下以訓練包 含:前進、后退、左轉、右轉和停止五條命令的語音識別系統聲學模型為例,講解訓練 聲學模型的具體步驟[29][6]。
(1) 字典文件:在訓練之前,要指明將每一個單詞發音如何拆解成聲學模型。本文 采用的識別單元為聲韻母,故每個漢字發音可拆解成兩部分。字典文件的內容為:
前進 Q IAN J IN
后退 H OU T UI
左轉 Z UO ZH UAN 右轉 Y OU ZH UAN 停止 T ING ZH IB
如果上述發音中存在多音字,則多音字的所有可能發音必須全部列出,否則系統將 不能識別未列出的發音。除此文件外還需要建立一個過濾字典來表示語音中的停頓,當 解碼器識別出該文件中的識別單元時,將直接忽略,一般用于表示靜音(或停頓)。
(2) 音素文件:音素文件中保存著 HMM 的最小訓練單元,可以從字典文件中提取。 本例的音素文件中包括 16 個單元:H、IAN、IB、IN、ING、J、OU、Q、SIL、T、UAN、 UI、UO、Y、Z、ZH。其中 SIL 表示句子的停頓或靜音,或者是錄音環境的背景噪聲。
(3) 控制文件:詳細列出語音文件的存放路徑,包括訓練用和測試用語音。
my_db/wav/speaker1/qianjin_1 my_db/wav/speaker1/houtui_1 my_db/wav/speaker1/zuozhuan_1 my_db/wav/speaker1/youzhuan_1 my_db/wav/speaker1/tingzhi_1
my_db 文件夾表示訓練聲學模型的臨時數據文件夾,wav 文件夾下存放所有語音文
件,speaker1 文件夾下保存某說話人的全部錄音,qianjin_1 即語音文件。
(4) 腳本文件:存放每個控制文件的路徑,并順序執行聲學模型訓練的各個環節。 根據以上步驟最終得到四個聲學模型參數文件:均值文件,方差文件,狀態轉移矩
陣和混合權重文件。
2.2.2 語言模型及其訓練
語言建模能夠有效的結合漢語語法和語義的知識,描述詞之間的內在關系,從而提 高識別率,減少搜索范圍。語言模型分為三個層次:字典知識,語法知識,句法知識。 語言建模方法主要有基于規則模型和基于統計模型兩種方法。目前常用的是基于統計語 言模型,即采用 N-gram 進行語言建模[4][28]。
統計語言模型從概率的角度來描述詞與詞之間的關系。從統計的角度來看,給定一
個詞序列 W=w1w2…wn,它的概率可以這樣表示:
表示詞 wi 跟其之前的 i-1 個詞相關,即表示了在前面 i-1 個詞出現的條件下 wi 出現
的概率。這個想法的假設條件為馬爾可夫假設。滿足這個假設的模型成為 i-1 階馬爾可 夫模型;而在語言模型里,稱之為 i 元模型,即為常用的 N-gram 模型。N 表示了在這 句中出現的詞的個數。當 i 太大時,參數空間變得非常巨大,需要的訓練數據也相當大, 所以一般假設當前的這個詞只依賴于前面有限幾個詞,n 通常取值 1、2、3 分別對應一 元文法: p(wi ) ,二元文法: p(wi | wi 1 ) 和三元文法: p(wi | wi 1 , wi 2 ) 。其中三元文法是 非常有用的,幾乎所有的詞都跟前兩個詞有很大程度的依賴性,并且這個概率可以通過
一個大小可以接受的語料庫中估計得到[7]。
Cmuclmtk(Carnegie Mellon University Statistical Language Modeling toolkit)是 CMU 提供的語言模型訓練工具,可以為 Sphinx 各個版本訓練生成所需格式的語言模型,它 可以通過統計大量文本數據得到以單個詞建立的 N-gram 模型。由于 N 較大時,需要的 存儲空間和運算時間也會相應的變大,所以本文主要采用 2-gram 和 3-gram 模型,即某 個詞出現的概率僅依賴于前兩個或者前三個詞。
圖 2.9 使用 CMUCLMTK 訓練語言模型過程
Fig. 2.9 Use CMUCLMTK training language model process
本文以智能家居系統中的語音識別系統為例,介紹其語言模型訓練過程。所使用的 命令在圖 2.9 中利用方框表示,需要準備的文件或者工具生成的文件利用橢圓表示。訓 練集和測試集文本是 text 格式,文件中列出訓練和測試音頻數據所對應的文本文件即
內容示例為:
東北大學
test.txt。語言模型訓練流程如下:
(1) text2wfreq:統計文本文件中每個詞出現的次數,得到一個后綴為 wfreq 的文件,
打開 84 關閉 84 熱水器 21 前門電燈 21
…
</s> 118
即表示詞打開、關閉、熱水器、前門電燈和</s>在訓練文本中出現的次數依次為 84、
84、21、21 和 118。
(2) wfreq2vocab:統計文本文件中含有多少個詞,即有哪些詞。系統應用中中包含
21 個詞和兩個靜音,故共有 23 個詞,依次是:打開、關閉、提高、降低、切換頻道、 返回主菜單、熱水器、排風扇、空調、電燈、臥室、前門、智能家電、智能控制、可視 對講、小區信息、安防監控、音頻播放、系統狀態、系統設置、設置溫度、</s>、<s>。 (3) text2idngram:列舉文本中出現的每一個 n 元語法。產生一個二進制文件,該文
件為含有 n 元數組的數值排序列表,對應于與詞有關的 N-Gram。超出文本范圍的詞匯 映射值為 0。
(4) idngram2lm:輸入文件包括一個 idngram 文件,一個 vocab 文件和一個 ccs 文件, 輸出是一個后綴為 binlm 的語言模型文件。其中 ccs 文件指句首和句尾的靜音<s>和</s>。
(5) binlm2arpa:是將 binlm 文件轉換為 arpa 格式語言模型文件。
(6) lm3g2dmp:將文件轉換為 DMP 轉儲文件。此文件為解碼器端所需要的文件格 式。這樣,就得到兩個語言模型文件:smart_home.arpa 和 smart_home.arpa.DMP。
2.3 小結
典型語音識別系統從語音輸入到結果輸出要經過復雜的處理過程,包括:預處理、 特征提取、模式匹配三個主要環節。本章對各個環節做了簡要介紹,并對本文中所用到 的經典特征參數 MFCC、Gammatone 濾波器參數、Gammachirp 濾波器參數和 HMM 分 類模型做了詳細介紹,最后還介紹了 sphinx 語音識別系統原理、構成及使用方法。
東北大學
第 3 章CFCC 提取及應用研究
3.1 CFCC 的數學定義
3.1.1 聽覺變換
(一) 聽覺正變換 聲波從外耳傳入中耳轉化成機械能,當中耳的最后一個聽小骨——鐙骨移動時,耳
蝸中的液體流動在基底膜產生行波。耳蝸基底膜上的沖激響應利用函數 (t ) 表示,
(t ) L2 ( R) ,函數還要滿足下面的條件[31]:
(1) 響應積分為零:
(3.4)
(4) 形如聲學實驗中在基底膜上觀察到的那樣,沖激函數兩端歸零。
(5) 沖激函數頻率響應應該為類似三角形的帶通濾波器。
f (t ) 可以是任意一個均方可積函數。對 f (t ) 進行關于基底膜上的沖激響應 (t ) 的變 換,聽覺正變換定義如下:
反變換的需求來源于對分解后的信號進行重構,比如音樂合成或者去噪等。另外如 果反變換能夠恢復原始信號則證明正變換處理信號時沒有損失信息,這是傅里葉變換或 者聽覺變換實用性的一個重要原因。
如果滿足(3.3)式,則反變換存在:
(三) 離散時間算法
在實際應用中,語音信號是以離散方式存儲的,故提供聽覺正變換和反變換的離散 時間計算方法是必須的,式(3.5)和式(3.10)的離散時間變換公式如下。
離散時間聽覺正變換:
其中, ai fL / fci 是第 i 個頻帶中心的尺度因子,N 是語音信號 f [n] 的長度。尺度
因子 a 可以是線性或非線性尺度。對于離散時間變換,a 還可以是 ERB 尺度,Bark,log
i i
或其他非線性尺度。
離散時間聽覺反變換:
內耳毛細胞作用是將機械能轉變為神經脈沖信號;啄さ恼駝右鹆嘶啄ず投 蝸覆膜之間的剪切運動,使得基底膜和耳蝸覆膜之間的毛細胞上的絨毛發生彎曲。當絨 毛向一個方向彎曲時,會引起毛細胞的去極化,即開啟離子通道,產生向內的離子流, 從而加強傳入神經的作用;當絨毛向一個方向彎曲時,便不會有刺激或者神經元輸出[31]。
用式(3.13)運算即模擬毛細胞作用:
這里的T (a, b) 為濾波器輸出。外耳,中耳主要起到一個擴音、傳導能量的作用,在
人耳聽覺系統中是不可或缺的,但是在計算機實現中此處可以忽略,所以可以將這兩部 分功能同內耳基底膜響應一起概括在聽覺濾波器響應中。
下一步,每個毛細胞輸出 S(i, j) 就成為當前濾波器中心頻率響應相關神經穗的代表, 用式(3.14)表示:
圖 3.1 CFCC 特征參數提取示意圖
Fig. 3.1 CFCC feature extract diagram
圖 3.1 為 CFCC 特征提取主要流程,提取過程主要依照了人耳聽覺過程模型:耳蝸 濾波器組(Cochiear FilterBank)用來仿真耳蝸基底膜的作用,濾波器的變換作用模擬了外 耳,中耳及內耳的總體過程;毛細胞窗(Hair cell)是一個可變長度的窗函數,非線性響度 變換(Loudness Noulinearity)將能量信息轉換為感知響度,DCT 變換去除信號間的相關性。 語音經過上述過程得出的聽覺特征叫做耳蝸倒譜系數。下面本文介紹在 MATLAB 環境
下 CFCC 提取的詳細步驟[31][32]。
3.2.1 耳蝸濾波東器系數的實北現大學
語音信號通過耳蝸濾波器的過程用正聽覺變換表示,此變換包含了聲音能量從外
耳傳導到基底膜的全部過程,模擬出了不同頻率信號在基底膜上的頻率響應[36]。
圖 3.2 耳蝸濾波器組沖激響應系數提取流程圖
Fig. 3.2 Cochlear filter banks’ impulse response coefficient extraction flow
(一) α,β 及 θ 的取值
通常情況下取值為 , 的值根據實際應用選擇。圖給出, 分別取值
和 0.06 時耳蝸濾波器組的頻率響應圖。比較圖形發現,當 β=0.2 時更接近人耳聽覺頻率
響應曲線。圖中五個通道的中心頻率分別為:188.7Hz,487.5Hz,1000.0Hz,1879.2Hz,
3387.3Hz。
圖 3.3 耳蝸濾波器的頻率響應 (a) α=3,β=0.2; (b
α=3,β=0.03 5
Fig. 3.3 Cochlear filter frequency response (a) α=3,β=0.2; (b) α=3,β= 0.035
β 的值根據不同的應用取值不同,在降噪方面 β=0.2 比較合適,而用于特征提取時,
它的值一般偏小[35]。由上圖根據 β 的不同值計算出的耳蝸濾波器頻率響應曲線可以看出,
β=0.2 更符合人耳特性,故在本文實驗中使用 β=0.2 來進行特征提取。
θ 的值由式(3.1)決定,初始相位使沖激響應函數積分為 0。經計算得出其值大約為
-14°。由于在實驗過程中,θ 取值為 0°或-14°對結果沒有影響,所以最終 θ 取 0°。 圖 3.4 給出耳蝸濾波器響應在不同中心頻率下的沖激響應波形。
圖 3.4
當 α=3,β=0.2, θ=0 時,耳蝸濾波器的沖激響應
Fig. 3.4 Cochlear filter bank impulse response when α=3,β=0.2,θ =0
(二) a,b 的取值
a 的值是由最低濾波器中心頻率 fL 和當前所要實現濾波器中心頻率 fc 決定的,定 義如下:
a 就如同小波變換的尺度因子,中心頻率越大,a 值越小,反之越大。a 值決定著耳
蝸濾波器函數的伸縮特性。a 值不同的取值,將原語音信號按頻率信息在不同通道進行 分析。
耳蝸濾波器的中心頻率分布可以用 ERB,Mel,Bark 尺度。ERB,Mel 頻率下中 心頻率選取已在第 2.1.3.1 節和 2.1.3.2 節介紹,Bark 尺度下頻率劃分如表 3.1 所示,由
于語音信息主要集中在 4kHz 頻率以下,故高于 4kHz 的部分本文未列出[37]。
表 3.1 Bark 尺度濾波器中心頻率劃分
Table 3.1 filter’s center frequency distribution by Bark scale
根據以上劃東分,則可以計北算出各濾波器大的尺度因子 a學。在計算耳蝸濾波器系數時,
本文設置 b 的值始終為零,濾波器系數的平移通過其他方式實現,將在 3.2.2 節詳細介
紹。
根據以上參數,獲得 18 通道的耳蝸濾波器頻率響應波形如圖 3.5 所示:
聽覺變換東系數提取的北實現大學
在 a,b = 0 (t) 中,b 稱為時移因子,b 的不同取值關系到耳蝸濾波器函數在原語音信號
的不同位置進行內積。每平移一個單位,進行一次耳蝸基底膜濾波器函數與原信號的內 積。然而,根據不同的 b,重復計算 a, b (t) 會耗費大量的時間,嚴重影響程序執行效率。 從式(3.27)可以看出,積分范圍是(-,+),但是由 a,b = 0 (t) 的定義可以看出,當 t<0 時
a,b=0 (t)=0 ,而當 t 趨于 時 a,b=0 (t)=0 ,所以在進行計算時,只需要計算 a,b = 0 (t) 的非零
部分即可。因此在計算過程中,令 b 始終為 0,即第 3.2.1 節計算出的 m 通道濾波器系 數始終不變,而對原始信號進行平移,這樣就可以以較高的效率完成對語音的分解計算, 獲得聽覺變換系數[38]。程序流程圖如圖 3.6 所示:
圖 3.6 聽覺變換系數提取流程圖
Fig. 3.6 Auditory transform coefficient extraction flow
假設原始語音為 x(n) ,0 n N ,則經過聽覺變換后,將獲得 m 個通道 N 點的聽 覺變換系數T (a,b) ,1 a m ,1 b N ,其中 a 表示不同的通道,對應著不同的中心 頻率,b 表示不同的位置,對應著語音信號不同時間的處理結果。
本文首先以 487.5Hz 正弦信號分別通過中心頻率為 188.7Hz,487.5Hz,1000.0Hz
的耳蝸濾波器,觀察其輸出是否可以達到預期目標。
圖 3.7 487.5Hz 正弦信號在耳蝸濾波器不同中心頻率下的響應
Fig. 3.7 The cochlear filter response of 487.5Hz sinusoidal signal u der different center frequency
由圖 3.7 可以看出,當信號頻率和耳蝸濾波器中心頻率相等時,信號可以通過濾波 器且其輸出幅度最大,當信號頻率和耳蝸濾波器中心頻率不等時,輸出信號會很快衰減 為零,且中心頻率不同其衰減速率不一樣。因此,本文實現的耳蝸濾波器及聽覺變換算 法可以滿足需求。
下圖是發音‘a’的經過五通道耳蝸濾波器后的聽覺變換結果如圖 3.8 所示:
(b)
發音’a’的 AT 變換系數
a) 5 個通道的對比結果 b) 單一通道細節波形
Fig. 3.8 AT transform coefficients of 'a'
a) Comparative results in 5 channels b) Details of a single chann el waveform
3.2.3 毛細胞窗口實現
對原始語音進行聽覺變換后,要使用式(3.13)對數據進行處理,來模擬人耳毛細胞 的去極化作用,由于處理方法簡單,本文不再給出仿真流程圖。
去極化后通過加窗,轉換為當前濾波器中心頻率響應相關神經穗的代表,從式(3.14) 可以看出,對于不同頻率的濾波器輸出,可以采用不用不同長度的時間窗,較高頻率的 輸出,可以使用較短的時間窗,以保留更多的瞬時信息,對于較低頻率的輸出,可以使
用較長的時間窗,以最大限度的觀察信號的概況,其仿真實現流程圖如圖 3.9 所示:
Fig. 3.9 Achieve hair cell window flow chart
經毛細胞窗口處理后,音頻數據得到壓縮,壓縮比率為 1/τ,有效減的小了數據長 度。
3.2.4 非線性響度變換和 DCT 變換實現
非線性的立方根響度函數,將毛細胞的輸出由能量值變為感知響度,計算方法根據 式(3.15)完成。
最后一步是將經過非線性響度變換的輸出進行 DCT 變換,可以有效去除通道間的
相關性,DCT 實現公式為式(3.16)。
完成以上計算,即實現了 CFCC 參數提取的整個過程,圖 3.10 為發音‘a’和‘o’ 的經上述計算后的 CFCC 參數結果。
(b)
圖 3.10 原始語音提取的 CFCC 參數
(a)‘a’的 CFCC 參數;(b)‘o’的 CFCC 參數 Fig. 3.10 CFCC feature extracted from original voice (a) CFCC feature of ‘a’; (b) CFCC feature of ‘o’
3.3 實驗結果與分析
3.3.1 實驗數據準備
本文實驗所需的語音數據采集自 10 個人(6 個男性,4 個女性),語音內容為本文中 用到的語音命令(共計 24 個),字數從 4-6 不等,每條語句發音 5 次,保存為 5 個單獨的 語音文件。語音文件是在實驗室安靜條件下采用 wavCN 軟件錄制的單聲道、16 位、16kHz 采樣率的 wav 格式文件。
實驗中從每個人的 5 次發音中隨機抽取 3 次,作為訓練數據庫。為測試特征參數的 抗噪能力,對剩余兩次發音進行加燥處理,并將它們作為測試數據庫。加燥方法是將原 始語音和白噪聲線性相加,獲得信噪比為-12dB,-6dB,0dB,6dB 的加燥語音。這樣, 包括原始語音在內共 5 個信噪比等級的測試數據庫。實驗中,將首先利用訓練數據庫訓 練聲學模型,然后利用不同信噪比等級的測試數據庫分別計算其識別率[34]。
3.3.2 基準系統
本文采用 SphinxTrain 對所有特征參數進行聲學模型的訓練和測試,SphinxTrain 是 CMU 提供的基于 HMM 的參數訓練工具,HMM 原理在第 2.1.3 節已有詳細介紹。訓練 及測試方法在第 2.2.1 節中已有詳細介紹。
本文按照 2.1.2.1 節中介紹的方法提取 MFCC 作為基準特征參數,MFCC 濾波器個 數選取 13 個,合并一階、二階差分參數,每幀獲得 39 個特征點,幀長為 N=1024 點, 幀移為 L=512 點,窗函數采用漢明窗。
CFCC 參數的提取方式如第 3.2 節所述,頻域劃分準則為 Bark 尺度,濾波器個數首 選為 18,參數 3 , 0.2 , 0 。
為了比較 CFCC 中耳蝸濾波器和 Gammatone 濾波器的區別,本文還提取了 GFCC 參數,GFCC 的提取方法是使用 Gammatone 濾波器代替 CFCC 中的耳蝸濾波器,之后 的處理方式不變。同樣,頻域劃分準則為 Bark 尺度,濾波器個數首選為 18 個。
3.3.3 實驗結果
(一) 聽覺正變換與反變換 本文中,首先對語音進行聽覺正變換和反變換實驗,并對聽覺正變換后的不同濾波
器輸出選擇性組合后進行反變換處理,然后和原始語音對比。實驗中,根據 Bark 尺度
頻域劃分準則計算所得 18 通道濾波器中心頻率為表 3.1 所示。
在對每個濾波器輸出單獨進行聽覺反變換時發現,第 1、2 濾波器反變換結果只能 聽到很大的“嗡嗡”的聲音而無法辨別信息內容,故他們的輸出對語音識別任務不會有
幫助。將第 3-18
濾波器輸出進行反變換后,除了聲音強度略有降低,可以重現原始語
音。因此在后續實驗中,提取 CFCC 特征參數采用頻率中心為 3-18 的 16 通道方式提取。
(二) 加燥實驗
在加燥實驗中發現,當 SNR 低于-6dB 時,所有特征參數的識別率都不理想,討論
其差別已無意義,故本文中將注意力主要集中在
0dB、6d
和原始語音的實驗結果上。
將對比結果以直觀的圖形呈現,如圖 3.11
所示。原始語音條件下,CFCC
參數和
MFCC、GFCC 參數的都可獲得 90%上的識別率。當信噪比下降時,CFCC 參數的表現 明顯優于 MFCC 和 GFCC 參數。例如:當信噪比為 6dB 時,MFCC 的識別率下降到 67.5%, 同等條件下,GFCC 的識別率為 86.8%,CFCC 的識別率為 90.4%。當信噪比降到 0dB 時,MFCC 的識別率將為 15.2%,GFCC 的識別率也將為 45.0%,而 CFCC 還能保持 65.2%
的識別率。
圖 3.11 不同信噪比下,CFCC、MFCC、GFCC 參數對比結果
Fig. 3.11 Comparing results of CFCC,MFCC,GFCC in different S NR
可見,GFCC 的識別率在各個噪聲水平下都要優于 MFCC,這是由于 Gammatone
濾波器平滑的類三角形頻率響應特性較 MFCC 的三角濾波器更接近人耳聽覺模型的真 實頻率響應。而 CFCC 的識別率優于 GFCC,則可以說明,基于耳蝸濾波器的聽覺變換 比基于 Gammatone 濾波器的變換方式在抗噪性方面更勝一籌。
3.4 CFCC 在 sphinx 系統的應用實現
將 CFCC 參數整合到 Pocketsphinx 中需要做兩件事情:其一,訓練該參數的聲學模 型,主要工作和 SphinxTrain 相關;其二,在 Pocketsphinx 中添加 CFCC 提取算法并將 提取的 CFCC 參數作為解碼器的輸入,主要工作和 Sphinxbase 相關[30]。
3.4.1 SphinxTrain 中 CFCC 特征參數提取
SphinxTrain 進行聲學模型訓練,首先利用 wave2feat 對音頻文件進行特征參數提取, 默認情況下得到后綴為 mfc 的 MFCC 特征參數文件,將之作為聲學模型訓練的輸入。
特征參數格式如表 3.3 所示。
表 3.3 MFCC 特征參數文件格式
Table 3.3 file format of MFCC feature
項目格式
文件頭int32 length 第一幀特征參數13 floats 或者 13*4 bytes 第二幀特征參數 13 floats 或者 13*4 bytes
…13 floats 或者 13*4 bytes
第 N 幀特征參數13 floats 或者 13*4 bytes
對于 MFCC 參數,在訓練和解碼過程中,不但用到了靜態 Mel 參數,還用到了一 階、二階差分參數。但在文件中,僅保存了 Mel 靜態參數,動態參數將在程序運行時計 算。計算方式可以通過-feat 配置,例如:-feat 1s_c_d_dd 表示讀取向量,并計算一階、 二階參數然后將它們合并為 1 維特征向量。
對于 CFCC 參數的提取,按照以上格式保存為后綴為 cfcc 的文件即可。本文為了方 便后期實驗,本文編寫了一個批量提取 CFCC 特征參數的工具:general_CFCC。準備好 單通道、采樣率為 16kHz 的 wav 格式音頻數據,并在 txt 文件中將其文件名一一列出, 就可以批量提取特征參數,生成相應的 cfcc 文件。工具界面如圖 3.12 所示。
圖 3.12 General_CFCC 工具界面
Fig. 3.12 Interface of General_CFCC tool
需要注意的是,MFCC 每幀特征由 13 個 Mel 濾波器輸出和一階、二階差分參數構 成 39 維特征向量,而 CFCC 參數則是由 16 個濾波器輸出構成的 16 維特征向量。在保 存特征文件時,文件中并不包含每幀長度信息,需要在訓練過程中通過參數控制本文中。
使用 SphinxTrain 可以生成默認的訓練參數配置文件 sphinx_train.cfg 和特征參數格 式配置文件 feat.param,根據 CFCC 和 MFCC 參數的不同,做以下修改:
在 sphinx_train.cfg 文件中,將:
$CFG_VECTOR_LENGTH = 13;
$CFG_FEATFILE_EXTENSION = 'mfc';
$DEC_CFG_FEATFILE_EXTENSION = '.mfc'; 改為:
$CFG_FEATFILE_EXTENSION = 'cfcc';
$CFG_VECTOR_LENGTH = 16;
$DEC_CFG_FEATFILE_EXTENSION = '.cfcc'; 表示特征參數文件擴展名為‘cfcc’,特征參數維度為 16,計算識別率時解碼器使用
的特征參數文件擴展名為‘cfcc’。 在 feat.param 文件中,添加:
-ncep 16
-ceplen 16
-feat 1s_c
表示本文提取的是每幀 16 通道的 CFCC 特征參數,僅讀取或者使用原始向量數據, 不使用差分參數。
由 General_CFCC 獲得 CFCC 特征參數文件,并根據上面提示正確配置好參數格式
后,就可以參照第 2.2.1 節說明,完成 CFCC 參數的聲學模型訓練。
3.4.2 Pocketsphinx 中 CFCC 特征參數提取
Pocketsphinx 包含兩個源碼包,分別是 Pocketsphinx 和 Sphinxbase,Sphinxbase 中包 含語音識別算法需要的基本 API 函數,例如:語音信號的 I/O 接口操作、語音信號的前 端處理程序、MFCC 參數計算函數和字典搜索算法等;Pocketsphinx 則提供語音識別程 序的主函數和一些支撐函數的具體實現方法。利用 CFCC 參數替換 MFCC,主要工作在 Sphinxbase 中完成。
在 Pocketsphinx 中,包含數個可以獨立運行的程序,用以完成不同的工作。例如: Pocketsphinx_batch 用于從文件讀取語音數據,并進行特征提取和語音識別;Pocketsphin- x_continuous 用于直接從麥克風獲取音頻數據,并進行語音識別。本文采用實時語音識
別程序 Pocketsphinx_continuous。其偽代碼結構示意圖如圖 3.13 所示。
continuous.c ->ad_open_dev();
->cont_ad_read();
->ps_process_raw();
Pocketsphinx
->ps_get_hyp();
acmod.c ->acmod_process_raw();
->acmod_process_feat();
fe_interface.c ->fe_process_frames();
Sphinxbas e
fe_sigproc.c ->fe_read_frame();
->fe_write_frame();
->fe_mel_spec();
->fe_mel_cep();
圖 3.13 Pocketsphinx_continuous 偽代碼示意圖
Fig. 3.13 Pocketsphinx_continuous pseudocode diagram
Pocketsphinx_continuous 程序可以實時從麥克風獲取音頻數據、提取特征并進行解 碼。本文根據圖 3.13 對代碼進行分層講解。
第一:continuous.c 中包含四個主要函數,分別完成打開音頻設備、讀取音頻數據、 特征參數提取、模式匹配功能。即語音特征參數提取主要由函數 ps_process_raw()完成。 第二:acmod.c 中包含兩個主要函數,將被 ps_process_raw()調用。第一個函數主要 用于確定獲取的語音中是否為有效語音,并將實時讀取的語音片段拼接成完整的語音數 據。第二個函數則進行特征參數提取工作,它還將進一步調用完成不同環節工作的子函
數。
第三:進行特征提取時,acmod.c 將調用 SphinxBase 軟件包中提供的基本 API 函數, 例如 acmod_process_feat()將調用 fe_interface.c 中的 fe_process_frames()函數。
第四:fe_sigproc.c 文件則是 Pocketsphinx 的默認特征 MFCC 提取的具體代碼實現。 要完成參數替換,不但要了解程序的組織結構還要了解程序的數據傳遞過程。在 Sphinx 中封裝了大量的結構體,以便于對不同類型、不同功能的數據進行管理。本文中 的 fe_process_frames()函數將提取的語音特征參數保存到 acmod_s 結構體中,并最終被
ps_process_raw()函數作為計算結果返回。acmod_s 結構體的定義為:
struct acmod_s {
/* Global objects, not retained. */
cmd_ln_t *config;/**< Configuration. */
logmath_t *lmath;/**< Log-math computation. */
glist_t strings;/**< Temporary acoustic model filenames. */
/* Feature computation: */
fe_t *fe;/**< Acoustic feature computation. */
feat_t *東fcb;
北/**<大Dynamic feat學ure computation. */
/* Utterance processing: */
mfcc_t **mfc_buf;/**< Temporary buffer of acoustic features. */
mfcc_t ***feat_buf;/**< Temporary buffer of dynamic
matlab程序:
- %文件說明:計算CFCC參數
- %功能說明:由原始語音計算CFCC參數,包括預處理,AT變換,后期計算等。
- %輸出參數:Fys ->M個通道濾波器的FFT變換參數輸出,長度為N(不包括對稱部分長度)
- %輸入參數:fL ->濾波器組的最低頻率濾波器的中心頻率
- % fc ->當前濾波器的中心頻率
- % N ->計算點數(不包括對稱部分長度)
- % alf ->參看CFCC論文
- % bera ->參看CFCC論文
- % thyta ->相位
- %編寫作者:阿呆-東北大學-talon56@1163.com
- %編寫時間:2013-4-3
- %其他說明:版權所有,原創作品,分享大家,請尊重他人勞動成果,參考標明參考文獻,謝謝
- function Y = adai_CFCC(sig,fL,N,alf,beta,thyta)
- sig_preemphasis = filter([1-0.9375],1,sig); %預加重
- %sig_preemphasis = sig;
- coeff = adai_AT(sig_preemphasis,fL,N,alf,beta,thyta); %提取AT變換后的參數
- cms = 0; %倒譜均值減,本文只做實驗對比使用
- if cms == 1
- w=200;
- n_length = size(coeff,2);
- if n_length > w
- c_frame=coeff(:,1:w);
- c_average=mean(c_frame,2);
- for i=1:(w/2)
- coeff(:,i)=coeff(:,i)-c_average;
- end
- for i=(w/2+1):(n_length-w/2)
- c_frame=c_frame(:,2:w);
- c_frame=[c_frame,coeff(:,i+w/2)];
- c_average=mean(c_frame,2);
- coeff(:,i)=coeff(:,i)-c_average;
- end
- for i=(n_length-w/2+1):n_length
- coeff(:,i)=coeff(:,i)-c_average;
- end
- end
- end
- h = abs(coeff).^ 2;
-
- for i = 1:size(h,1) %模仿毛細胞窗口,本文為固定窗長
- for j = 1: (floor(size(h,2)/320)-1)
- s(i,j) = (1/320)*sum(h(i,(320*(j-1)+1):320*j+1));
- end
- end
- y = s .^ (1/3); %取立方根
- select = 1; %余弦變換,為什么可選則忘了怎么回事了
- if select==1
- n_channel=size(y,1);
- cfcc = [];
- x=(0:n_channel-1);
- for i = 1: size(y,2)
- for u = 0:(n_channel-1)
- cos_n = [];
- cos_n = [cos_n,cos(2*(x+1)*pi*u/(2*n_channel))];
- cfcc(i,u+1) = sqrt(2/size(y,1))*sum(y(:,i).*cos_n');
- end
- end
- elseif select ==2
- ii=(0:size(y,1)-1);
- cfcc = [];
- %cfcc_one_filter = [];
- for i = 1: size(y,2)
- for n = 1:17
- cos_n = [];
- cos_n = [cos_n,cos(pi*(n-1)*(ii-0.5)/size(y,1))];
- cfcc(i,n) = sqrt(2/size(y,1))*sum(y(:,i).*cos_n');
- end
- % cfcc = [cfcc;cfcc_one_filter];
- end
- end
- sin_up = 1; %升半正弦提升,可選,為0時略過此步,本文只做實驗對比使用
- if sin_up == 1
- w = [];
- w = [w,0.5+0.5*sin(pi*(x)/n_channel)];
- for i = 1:size(cfcc,1)
- cfcc(i,:) = cfcc(i,:).*w;
- end
- end
- Y = cfcc;
- debug = 1;
- if debug == 1
- figure;
- mesh(s);
- title('根據計算毛細窗口后的數據繪制所得');
- figure;
- mesh(y);
- title('根據進行非線性響度變換后的數據繪制所得');
- figure;
- mesh(cfcc);
- title('根據最終獲得的CFCC參數繪制所得');
- end
復制代碼- %文件說明:構建AT變換濾波器
- %功能說明:用于構建一個濾波器
- %輸出參數:phy ->單通道濾波器的FFT變換參數輸出,長度為N(包括對稱部分長度)
- %輸入參數:fL ->濾波器組的最低頻率濾波器的中心頻率
- % fc ->當前濾波器的中心頻率
- % N ->計算點數(包括對稱部分長度)
- % alf ->參看CFCC論文
- % bera ->參看CFCC論文
- % thyta ->相位
- %編寫作者:阿呆-東北大學-talon56@163.com
- %編寫時間:2013-4-3
- %其他說明:版權所有,原創作品,分享大家,請尊重他人勞動成果,參考標明參考文獻,謝謝
- function phy = adai_AT_one_filter(fL,fc,N,alf,beta,thyta)
- a = fL/fc;
- b = 0;
- filter=[];
- for i = 1:N;
- t = i/16000;
- if t>=0
- u=1;
- else
- u=0;
- end
- fy1 = 1/sqrt(abs(a));
- fy2 = ((t-b)/a)^alf;
- fy3 = exp(-2*pi*fL*beta*((t-b)/a));
- fy4 = cos(2*pi*fL*((t-b)/a)+thyta);
- fy = fy1*fy2*fy3*fy4*u;
- filter(i,:) = fy*100;
- end
- debug = 0;
- if debug == 1
- figure;
- plot(filter); %輸出濾波器的沖激響應波形
- axis([1 N min(filter) max(filter)]);
- elseif debug == 2
- figure;
- plot(20*log10(abs(fft(filter)))); %輸出濾波器的頻率響應波形
- axis([1 N min(20*log10(abs(fft(filter)))) max(20*log10(abs(fft(filter))))]);
- end;
- phy = filter;
復制代碼- %文件說明:構建AT變換濾波器組
- %功能說明:用于構建濾波器組
- %輸出參數:Fys ->M個通道濾波器的FFT變換參數輸出,長度為N(不包括對稱部分長度)
- %輸入參數:fL ->濾波器組的最低頻率濾波器的中心頻率
- % fc ->當前濾波器的中心頻率
- % N ->計算點數(不包括對稱部分長度)
- % alf ->參看CFCC論文
- % bera ->參看CFCC論文
- % thyta ->相位
- %編寫作者:阿呆-東北大學-talon56@163.com
- %編寫時間:2013-4-3
- %其他說明:版權所有,原創作品,分享大家,請尊重他人勞動成果,參考標明參考文獻,謝謝
- function Fys = adai_AT_filterbank(fL,N,alf,beta,thyta)
- %fL = 200;
- %fc = 200;
- %N = 1024;
- %alf = 3;
- %beta = 0.2;
- %thyta = 0;
- %200 250
- %fc = [350 450 570 700 840 1000 1170 1370 1600 1850 2150 2500 2900 3400 4000];
- fc=[250 350 450 570 700 840 1000 1170 1370 1600 1850 2150 2500 2900 3400 4000];
- Fys = []; %保存濾波器組的時域波形
- Fys_fft = []; %保存濾波器組的頻域波形
- for i = 1:length(fc)
- Fy = adai_AT_one_filter(fL,fc(i),N,alf,beta,thyta);
- Fys = [Fys;Fy'];
- Fy_fft = fft(Fy);
- %Fy_fft = Fy_fft/max(abs(Fy_fft)); %歸一化
- Fys_fft = [Fys_fft;Fy_fft'];
- end
- figure;
- plot(Fys(1,:));
- title('第一通道濾波器的沖激響應');
- debug = 1;
- if debug ==1
- figure;
- disp_Fys_fft = 20*log10(abs(Fys_fft'));
- plot(disp_Fys_fft);
- title('濾波器組的頻率響應');
- axis([1 N/2 -120 -60]);
- %axis([1 N/2 min(disp_Fys_fft(:)) max(disp_Fys_fft(:))]);
- end
復制代碼- %文件說明:對輸入信號進行AT變換
- %功能說明:計算各個濾波器的輸出系數
- %輸出參數:coeff ->M個通道濾波器的輸出系數(總長度為sig長度減去N)
- %輸入參數:sig ->變換前的數據(一般認為已經過預處理)
- % fL ->濾波器組的最低頻率濾波器的中心頻率
- % N ->計算點數
- % alf ->參看CFCC論文
- % bera ->參看CFCC論文
- % thyta ->相位
- %編寫作者:阿呆-東北大學-talon56@163.com
- %編寫時間:2013-4-30
- %其他說明:版權所有,原創作品,分享大家,請尊重他人勞動成果,參考標明參考文獻,謝謝
- function coeff = adai_AT(sig,fL,N,alf,beta,thyta)
- phy = adai_AT_filterbank(fL,N,alf,beta,thyta); %構建聽覺變換濾波器組
- n_channel = size(phy,1);
- filters_output = []; %本文根據卷積定義進行小波變換運算,運算量較大,在利用C重寫時,可進行優化
- for j = 1 : n_channel
- one_filter_output = [];
- for i = 1 : length(sig)-N
- frame = sig(i:i+N-1);
- bb = sum(frame'.*phy(j,:));
- one_filter_output(i,:) = bb;
- end
- filters_output = [filters_output;one_filter_output'];
- end
- coeff = filters_output;
復制代碼