時間:2023-03-07 14:56:53
序論:好文章的創作是一個不斷探索和完善的過程,我們為您推薦十篇語音識別系統范例,希望它們能助您一臂之力,提升您的閱讀品質,帶來更深刻的閱讀感受。
一、引言
根據語音識別系統所使用的環境和平臺不同,語音識別技術朝著兩個方向發展:一個方向是大詞匯量的連續語音識別,該方向所處理的語音較為復雜;另一個方向就是向著中小詞匯量的孤立詞匯語音識別,該方向所處理的語音相對較為簡單,應用范圍也有一定的限制,如玩具、語音導航等。雖然簡單語音識別系統對于能識別的詞匯量沒有太高的要求,但是目前的一些簡單語音識別系統的識別速度慢、識別率較低,導致用戶體驗較差。
二、語音識別系統原理
語音識別在本質上屬于模式識別的范疇,其系統結構與模式識別具有相似之處:根據相關的識別算法對語音信號進行特征參數的提取,然后先進行學習后再對語音信號進行識別。在學習階段,通過給出的訓練數據建立起參考模板庫;在識別階段,將待識別語音信號的特征參數與參考模板庫中的參數進行對比,得到與待識別語音信號最接近的模板,輸出該模板作為語音識別的結果。
三、簡單語音識別系統的改進與實現
DTW在簡單語音識別中已經可以達到較高的識別率,因此本文選擇DTW作為語音識別的模式匹配算法,并對端點檢測進行一定的改進來實現語音識別系統的設計。
3.1端點檢測的改進
在進行端點檢測前,為短時平均能量和短時過零率設定兩個門限值。在靜音段,當短時平均能量或短時過零率大于低門限值,則開始準備標記語音起點,由此進入過渡段。但是在過渡段中并不能確定是否真正進入語音段,當短時平均能量和短時過零率都小于低門限值時認為是噪音,并不記錄語音起點,恢復為靜音段;當短時平均能量或短時過零率大于高門限值,則認為是真正的語音片段,將狀態進入語音段。進入語音段后還要記錄語音段持續時間,若該段時間較短則認為是噪聲,繼續檢測后面的語音,如果滿足一定的時間長度則標記語音起點并將其記錄為一段語音。
3.2DTW的改進
DTW的核心思想是進行動態規劃,從而解決了語音識別中的發音長度不一致的匹配問題。在進行DTW時,通過動態匹配找到一個最佳路徑,把語音信號的特征參數通過這條最佳路徑映射到參考模板庫中,這條最佳路徑要求語音信號和參考模板之間的累積距離最小。
經典的DTW算法規定待識別語音信號和模板中信號的首尾必須完全一致,但是端點檢測確定的首尾與實際存在一定的誤差,造成識別率有所下降。為此,可以對DTW的端點的限制適當放寬。即允許起點在(0,0)、(0,m)或者(n,0)上,終點在(N,M)、(N,J)或者(I,M)上。端點要求放寬后對端點檢測精度的要求就降低了,提高了識別的速度和精度。
雖然語音的速度不同,但是語序是確定不變的,因此路徑中每一點的斜率必然大于0。而為了防止過度搜素浪費資源,可以對搜索路徑的斜率加以限制,由于語音信號的擴壓是有限的,因此可以舍去那些向X軸或者Y軸過度傾斜的路徑。具體做法是:將搜索路徑中每個點的最大斜率設為2,最小斜率設為0.5,這樣就可以大大降低搜索范圍,減少了計算量,提高了識別速度。
另外,還可以在進行相似度匹配時設定一個合理的閾值,如果計算出的某一部分的相似度與該閾值相差太遠,則立即認為待識別語音與當前模板不匹配,轉而進入與下一個模板的相似度計算,這樣就可以減少大量的計算量,從而提高簡單語音識別的速度。
3.3實驗及數據
在實驗室較安靜的環境下對男女聲識別進行了測試。發音內容為0~9的數字,采樣率為24KHz,幀長20ms,幀移10ms,識別正確率達到了95%以上,原DTW算法的孤立字識別時間是6~7s,而采用本文改進算法的識別時間減少到2~5s。因此,本文方法可以實現快速準確的簡單語音識別。
四、結束語
采用本文方法可以有效提高端點檢測的精度、語音識別的正確率和識別速度,該方法完全滿足簡單語音識別系統的應用。
參考文獻
1 引言
語音識別按不同的角度有以下幾種分類方法:從所要識別的單位,有孤立詞識別、音素識別、音節識別、孤立句識別、連續語音識別和理解。目前已進入識別的語音識別系統是單詞識別。以幾百個單詞為限定識別對象。從識別的詞匯量來分。有小詞匯(10-50個)、中詞匯(50-200個)、大詞匯(200以上)等。從講話人的范圍來分。有單個特定講話人、多講話人和與講話者者無關。特定講話人比較簡單,能夠得到較高的識別率。后兩者難度較大,不容易得到高的識別率。 從識別的方法分。有模塊匹配法、隨機模型法和概率語法分析法。這三種都屬于統計模式識別方法。
2 系統硬件及組成
2.1 系統概述
語音識別系統的典型實現方案如圖1所示。輸入的模擬語音信號首先要進行預處理,語音信號經過預處理后,接下來重要的一環就是特征參數提取,其目的是從語音波形中提取出隨時間變化的語音特征序列。然后建立聲學模型,在識別的時候將輸入的語音特征同聲學模型進行比較,得到最佳的識別結果。
2.2 硬件構成
本文采用DSP芯片為核心(圖2所示),系統包括直接雙訪問快速SRAM、一路ADC/一路DAC及相應的模擬信號放大器和抗混疊濾波器。外部只需擴展FLASH存儲器、電源模塊等少量電路即可構成完整系統應用。
2.3 系統主要功能模塊構成
語音處理模塊采用TI TMS320VC5402, TMS320VC5402含4 KB的片內ROM和16 KB的雙存取RAM,一個HPI(HostPortInterface)接口,二個多通道緩沖單口MCBSP(Multi-Channel Buffered SerialPort),單周期指令執行時間10 ns,帶有符合IEEE1149.1標準的JTAG邊界掃描仿真邏輯。語音輸入、輸出的模擬前端采用TI公司的TLC320ADSOC,它是一款集成ADC和DAC于一體的模擬接口電路,并且與DSP接口簡單,性能高、功耗低,已成為當前語音處理的主流產品。16位數據結構,音頻采樣頻率為2~22.05 kHz,內含抗混疊濾波器和重構濾波器的模擬接口芯片,還有一個能與許多DSP芯片相連的同步串行通信接口。TLC320AD50C片內還包括一個定時器(調整采樣率和幀同步延時)和控制器(調整編程放大增益、鎖相環PLL、主從模式)。TLC320AD50C與TMS320VC5402的硬件連接,如圖3所示。
3 結論
本文以TMS320VC5402芯片為核心的系統硬件設計迸行了研究,通過TLC320AD50C對語音信號進行A/D轉換,通過TMS320VC5402對語音信號“0”、“1”、“2”進行訓練和識別,并由對于燈LED0、LED1、LED2亮來顯示結果是否正確;該系統核心識別算法采用動態時間規整(DTW)算法,主要流程包括預處理、端點檢測、提取特征值、模式匹配和模板訓練,取得了很好的識別效果。
參考文獻
[1] 朱銘鋯, 趙勇, 甘泉. DSP應用系統設計 [M].北京:電子工業出版社,2002.
[2] 郭華. 自適應濾波算法及應用研究[D].蘭州:西北師范大學,2007.
[3] 張雄偉..DSP芯片的原理與開發應用[M].北京:電子工業出版社,2009.
[4] 張德豐. 數字圖象處理(MATLAB版)[M].北京:人民郵電出版社,2009.
作者簡介
關鍵詞 語音識別;中文識別;人工分詞;控制系統
【中圖分類號】TP311 【文獻標識碼】A
【論文編號】1671-7384(2014)02-0069-03
引 言
計算機如今如此普及,計算機發展速度完全超乎想象。但目前為止,真正具備與人交流功能的電腦還不存在。有這樣一個圖靈測試——讓測試員與被測試者和一臺機器在隔開的情況下,通過一些裝置向被測試者隨意提問。問過一些問題后,如果測試人不能確認被測試者30%的答復哪個是人、哪個是機器的回答,那么這臺機器就通過了測試。可惜的是,如今情況下最好的成績是由俄羅斯專家設計的“葉甫根尼”電腦程序,也只是達到了29.2%。
語音,是人與人交流的一種手段,也是人類交流和交換信息中最便捷的工具。退而求其次,要做到通過圖靈測試,不如先讓電腦通過語音作為引信來幫人類做事情。為了充分闡述語音識別這套系統的原理,本文將小范圍重現語音識別原理。
對于語音識別之后,讓計算機去理解人的意思,不可缺少的就是將文字信息轉化為計算機能理解的內容。把計算機比作一個人手中拿著一本象形文字對照手冊,身處上文說的圖靈測試的房子中。而另一人則在房間外向此房間發送象形文字問題。房間內的人只需按照對照手冊,返回手冊上的象形文字答案即可。畢竟只需要讓計算機懂得我們的意思,并非讓計算機來幫我們去思考。因此,只要給予足夠多的“稿紙、筆”以及足夠大的“詞典”即可。
這次我們對系統的研究使用的是C語言,由于并沒有采用面向對象化的語言來編程,大部分程序使用的編程并沒有向“類”里面填充“方法”的概念。這套系統硬件開發、硬件編程采用的是51單片機來實現,后期的處理則是在上位機通過鉤掛系統鉤子讀取內存來實現。下面,我們將一步一步講述構建這個系統的過程。
平臺構建
如今,國外已經有很多成品語音識別系統,中文的語音識別控制系統也有很多的企業、教育科研機構在做相關的項目。不過這些研究卻依然停留在初級階段。因為中文是世界上最難學的語言,人來學習尚且如此,更何況人來教給機器去識別。
雖然如此,做語音識別首先要有一個平臺來去搭建中文語音識別系統。第一步要做的便是將聲音訊號轉化為電訊號。這里采用一個高阻抗麥克風,作為音源進行聲電轉化。通常的麥克風是三個端子輸出,分別是兩個信號源和一個接地端。大部分的麥克風兩個端讀入的是相同信號,少部分高品質的則讀入的是差分信號。
麥克風的輸入是毫伏級別,類似空氣聲、干擾波都會使得輸入的信號有噪波。因此,輸入的兩個端分別進行旁路電容濾波等操作,去除雜波。無源麥克風的輸入電壓過低,之后要將信號接入放大器,放大后的信號才能使得后續的操作中,模擬—數字信號轉換器獲得足夠被感應的信號強度。
理論上講,音頻信號可以看作周期信號,按照傅立葉級數定理可知,任何周期函數都可以用正弦函數和余弦函數構成的無窮級數來表示。因此,通過將音頻信號進行傅立葉級數展開,去除雜波頻段的波形即可得到優質波形。
而實踐中,通過硬件操作步驟較為煩瑣,軟件分析需要時間較長,出于經濟等方面因素考慮,本系統不采用傅立葉變換來實現識別音頻特性,而采用比較法取波形相似度等方式進行識別。
語音識別
上文中的信號經過模擬—數字轉換器轉換成為了數字信號,接入處理器的IO接口線程中,此時,讀入的信號會通過地址總線和IO端口讀入。因此在硬件上,我們使用中斷程序來進行信號預處理。
軟件方面中斷程序部分,僅需要將讀入的IO數據以數組形式存放入內存即可。
聲音有三要素:音高、響度、音色。讀入的信號即每個時間點的聲音感受器震動位置,我們可以通過電流接入到壓片陶瓷上來還原聲音,而如果我們要去分析音頻則需要對照三要素下手。
響度即聲波數組中的數值高低,為了讓聲波數組中的響度和預存的響度相同,我們通過統計整段中有效波形能量數值和與預存數組的能量數值做比例處理,使得響度和預存數組相近。
音高即聲音的頻率,頻率的定義是:單位時間內完成振動的次數,是描述振動物體往復運動頻繁程度的量。通過聲波數組尋找相鄰兩點是否為相反數,即可尋找到過0點次數得到頻率。這時,時間段的頻率即可求出,間接可得到整段聲音的頻率。
我們發現,對音高進行頻率化處理,同樣也需要對預存數組進行頻率化處理。因此,盡管我們可以去頻率化處理提高識別精度,但相比對音頻直接做響度匹配,所謂黑盒操作更易于分析和匹配。
漢語是由聲母和韻母組成的,通過五聲韻母和聲母匹配,即可收集有限個聲源。用這些聲源和預處理的聲音進行匹配,即可得出每個字的讀音。
上述的程序段只是匹配所需要的函數,在外部需要循環來賦給數組對應指針位置才能實現,在對比中,如何確定開頭是一個難點。因此需要對音頻數據的開頭做識別。在本系統中,采用讀取5個相鄰數據,如果連續的峰值高于30且持續了超過25毫秒以上,則判定這個時間點為數據的開始。
在系統中,雖然我們采用了去除抖動的算法,但聲音音響處理過后,也會丟失一些精度,此處的算法若提高精度,則需要在前期處理做根據香農采樣定理計算低通信道的最高大碼元傳輸速率,進而做精確的采樣以及還原,同時濾波采用更先進的算法來實現,這里只實現采樣而不做精細討論。
人工分詞
中文,全世界有近20億的人在使用。然而,中文的語法是世界上無章可循的語法之一。古人云:“句讀之不知,惑之不解”,想要用中文交流,就必須知道如何斷句。這樣,才能正常地和人交流,才能清晰地理解對方的意思。
欲斷句,先斷詞。讓計算機來執行控制,而計算機處理的卻是整個詞組。前面步驟已經講述了如何將語音識別成一個個的單字,識別成一個個句子。但是中文并不像英文,說“我是一個學生”這句話的時候不會像“Iam a student”這樣中間有空格從而判斷詞組。這就需要我們對句子做一個特殊的處理——人工分詞。
以“我是一個學生”為例,人類來理解這句話,他的意思就是“‘我’的職業屬性是學生”。從這個例子可以看出,提取“是”這個動詞為關鍵字,便可以將前后轉變為賦值表達式的形式“我->職業=學生”。
優先提取出一句話的動詞,是分詞處理的關鍵。但并非每個動詞都可以這樣來操作,例如,“他鞠躬下臺”,很明顯“鞠躬”是個動詞,“下臺”也是一個動詞;如果按照上文中所述,“他->鞠躬=下臺”就會出問題。為了處理這個問題,我們引入現代漢語中及物動詞和不及物動詞的概念。將“鞠躬”、“下臺”這種不及物動詞和“打”、“吃”這樣的及物動詞分開。
當然,這需要字典來處理,借助現代科技的發展,一本電子版的現代漢語詞典就可以解決這個問題,通過詞庫來查詢每個詞語的意思,從而抽離出動詞。我們只需要設計不及物動詞代表動作即可,這樣就可以將信息存儲成“他->動作=鞠躬&下臺”。
若是英文,如此做便可以了。但上文說過,中文語法是世界上無章可循的語法之一。英文中設置了動詞字典基本上就處理了大部分問題。可中文中會出現如下句子:“今天的比賽在大學生活動中心召開。”
人工模擬電腦來理解,副詞可以修飾形容詞、修飾動詞,用副詞來修飾試探:比賽可以“不比賽”不能“很比賽”,因此它不是形容詞,而是動詞,“我比賽你”這句話不通,因此是不及物動詞;“活動”和“召開”也是同理,是不及物動詞。因此這句話要理解成“今天->動作=比賽&活動&召開”。
但不能說“今天->動作=比賽&活動&召開”,很顯然這句話真正的意思是“比賽->地點=大學生活動中心”。出現這個問題,核心原因就是計算機沒有把“大學生活動中心”當作一個詞,任何一本字典都不會去收錄“大學生活動中心”這個詞。
在中文分詞中, 中科天璣出品了一套中文分詞系統架構,加載頭文件"ICTCLAS50.h"可以用頭文件定義的命令#pragma comment讀取它所提供的數據庫(lib,"ICTCLAS50.lib")
執行過該程序段后,會將分詞結果以test.txt的形式保存在硬盤中。
結 語
做完人工分詞,基本上也就實現了讀取用戶所要達到的目的。這套系統貫穿底層到軟件層,如果有可能甚至需要設計到云端。雖然局部的測試沒有出現嚴重的錯誤,但由于時間原因,并沒有做綜合測試。
其中的一些理論和實踐銜接的地方還存在著不足,一些算法也存在著改進的空間,但這些問題終將在以后得到解決。也希望這套系統能在最后的實踐和發展中真正用于生活,從而提供更好的生活體驗,為人們體驗生活、享受人生做出貢獻。
基金項目: 本文系北京市自然科學基金項目(4132009);北京市屬高等學校高層次人才引進與培養計劃項目(CIT&TCD201304120);北京市教委科技計劃項目(KM201211232008)的研究成果。
參考文獻
何嘉. 基于遺傳算法優化的中文分詞研究[D].電子科技大學,2012.
趙培. 中文語音識別結果文本分類的研究與實現[D].大連理工大學,2008.
曹衛峰. 中文分詞關鍵技術研究[D].南京理工大學,2009.
龍樹全,趙正文,唐華. 中文分詞算法概述[J]. 電腦知識與技術,2009,10:2605-2607.
剛. 圖靈測試:哲學爭論及歷史地位[J]. 科學文化評論,2011,06:42-57.
譚超. 學習型中文語音識別系統研究及實現[J]. 電腦開發與應用,2012,04:35-37.
胡寶潔,趙忠文,曾巒,張永繼. 圖靈機和圖靈測試[J]. 電腦知識與技術,2006,23:132-133.
陳淑芳. 基于51單片機的教學實驗系統的設計與開發[D].中國海洋大學,2011.
張文國. 中文語音識別技術的發展現狀與展望[J].上海微型計算機,1998,35:46.
1.引言
隨著汽車工業的發展以及電子市場的成熟,車載智能終端逐漸成為汽車重要的配套設備,另外,近年來,經濟的繁榮也促使國內各地汽車數量急劇增加,人們的出行習慣也隨之發生變化,人車共處的時間越來越長,因此,車載智能終端的功能從簡單的行車導航多功能轉變,但駕駛人員在行車過程中,面對繁復的界面進行功能選擇操作,易造成安全隱患,因此本文提出基于ARM的車載語音識別系統設計方案,旨在讓駕駛人通過語音指令,操作智能終端,實現基本的導航、語音通信等功能,為安全駕駛提供保障。
2.語音識別過程
語音識別過程是首先將采集到的語音數據進行預處理,以提高自然語言的識別率,并降低處理器對數據進行密集運算的處理量,然后再進行端點檢測、語音特征提取,完成從采集到的語音數據波型中,分析并提取以時間為參照的語音特征序列,隨后轉換為可對比的信號參數,與系統語音模型庫進行語言匹配,即可得出識別結果。
3.系統整體設計
本系統由硬件、軟件兩部分構成,操作系統采用嵌入式Linux,為語音識別指令操作實現、車載智能終端功能實現提供基本的軟件平臺,硬件系統由語音識別部分、核心處理部分、電子設備部分構成,語音識別階段由LD3320專用芯片在51級單片機的控制下完成,獲取語音特征后,指令識別程序進行指令的對比識別,并通過指令操作系統程序調用諸如定位、導航、媒體播放、視頻監控等應用程序,系統結構如下圖1所示。
4.硬件系統設計
硬件系統主要包括系統主板、核心處理器、語音采拾器、語音識別芯片、語音控制單片機、存儲器、電源等部分構成,詳細介紹如下:
4.1 核心處理模塊
系統中,核心處理器既做語音指令識別、指令下達的核心部件,還是車載智能終端的核心,考慮車載智能終端的多功能性,例如定位導航、媒體播放、遠程視頻監控等,系統核心處理器采用飛思卡爾推出的iMX27芯片,利用其H.264硬件編解碼模塊可在車載智能終端上實現MPEG4、H.263及H.264視頻流的高效處理,在能夠支持語音識別功能的同時,還使智能終端產品達到D1(DVD畫面質量,720×480的屏幕分辨率)分辨率。
iMX27在處理H.264的同時占用極少的CPU的資源并提高了視頻處理的性能,使核心有更多資源進行其它的應用,例如本系統的語音識別功能,另外,iMX27還具備非常靈活和豐富的標準接口、串行端口和擴展端口,實現與多種外部設備的連接,包括攝像頭、顯示器,還可以使用Wi-Fi、藍牙實現即插即用及無線互連的功能,通過增加適當的模塊,即可實現GPS定位、GPRS通信等應用。
4.2 語音識別模塊
目前語音識別方案,有針對特定人的語音識別技術,但用戶無法自行修定識別內容,還有基于ARM的軟件識別技術,即將采集到的語音數據,直接交由ARM平臺上運行的軟件進行處理、比對、識別,這種方案優點是可以附帶龐大的語音模型庫,適應范圍較廣,但對ARM硬件平臺要求較高,軟件設計也相對復雜,本系統根據設計目的,提出的解決方案是,采用專用的語音識別芯片LD3320完成語音識別功能,將識別后的少量數據通過串行通信接口傳送給ARM處理器,再由軟件執行判斷并執行相應的功能,一方面僅需求少量的電子器件,即可完成非特定人、非特定人、孤立詞、小詞匯量的語音識別功能,另一方面也可減少對ARM硬件的需求,空余更多的資源用于處理其它功能項目,而且軟件設計也可以相對簡化。
LD3320是由ICRoute公司生產的一種基于非特定人語音識別技術的專用芯片,內置語音搜索引擎以及語音識別模型特征庫,另外還包含一些外部電路,例如AD、DA轉換器、音頻輸入輸出接口等,不再需要存儲器等器件,也不需要預置語音訓練,將MIC接入LD3320的AD引腳上,再通過51級的MCU進行控制,就可以進行語音識別,經過實踐,LD3320的語音識別穩定性較好,準確性基本保持在96%左右。
51MCU主控制器采用Atmel公司生產的ATMEGA128芯片,其具備先進的RISC指令系統,包含133條指令,并且大多指令可以一個時鐘周期內完成,執行效率高,內置128K字節的可編程Flash,4K字節的EEPROM,以及多達64K字節的優化的外部存儲器空間,足以滿足語音識別的控制需求。
主控制器主要完成需識別關鍵詞語的拼音串通過設置寄存器的方式傳入芯片內部,從而實現識別列表的動態編輯,每次可以設置50項候選識別句,每個識別句可以是單字,詞組或短句。
4.3 存儲器模塊
為存儲更多的語音數據,可通過存儲芯片來擴展系統的存儲空間,本系統采用意法半導體推出的M25P16-VMF6P芯片,該芯片是16-Mbit(2M x 8)串行閃存,具有先進的寫保護機制,支持速度高達50MHz的SPI兼容總線的存取操作。存儲器主要用于保存聲音素材。
5.軟件系統設計
軟件系統由兩大部分構成,一個是基于ARM平臺的嵌入式Linux操作系統,主要為系統的實現提供基本的軟件平臺,另一部分是語音識別程序以及應用程序,主要完成語音的識別以及系統應用。
5.1 操作系統
本文采用可以支持ARM CPU,具有MMU功能的Linux操作系統,通過內核精簡和裁減,并在實時性方面進行加強,以適應車載環境的應用需求。
5.2 語音識別程序
語音識別程序的設計,主要基于LD3320系列產品開發手冊,主要工作流程分為以下幾個步驟:系統初始化、識別列表輸入、語音識別、中斷響應等。
(1)系統初始化分為兩個子步驟,分別通用初始化以及設備初始化,時鐘頻率、模式等參數在這一環節中進行設定。
(2)識別列表輸入,首先對需要識別的語音指令進行編碼,按不同編號區分不同的條目,編號范圍可以1-256之間選擇,每個條目采用標準普通化拼音作為語音參考模型,2個標準字漢語之間以空格進行填充。
(3)語音識別,通過設置特定寄存器的值,系統即可開始進行語音識別,語音識別的準確率與MIC的靈敏度設置有直接關系,根據實際環境條件,設置在40H~6FH可達到較好的效果。
(4)中斷響應,設置系統捕捉到MIC有信號產生,即產生中斷,中斷處理程序則根據LD3320寄存器的值對識別結果進行判斷,以C5寄存器的值作為參考的正確結果。
5.3 指令執行程序
指令執行程序運行的ARM平臺上,負責監聽ATMEGA128的串口數據,當接收到識別結果時,把該結果以二進制形式讀出,通過預先設定的識別結果-執行指令對照表,查詢應當執行的指令,并根據指令完成相應的操作。
6.結論
本文從整體、硬件、軟件等幾方面,深入討論了基于ARM的嵌入式語音識別系統的設計和實現,并對各個組成模塊的硬件電路及軟件實現進行了詳細的介紹。經實踐,本文設計的語音識別系統在穩定性、識別率方面有較好表現,配合車載智能移動終端,有較強的實用性。
參考文獻
[1]張戟,楊騰飛.車載自動語音識別系統設計[J].佳木斯大學學報(自然科學版),2011,29(2):201-205.
[2]劉建臣,趙建光,龐煒等.基于ARM9+linux的智能小區語音識別系統研究[J].河北建筑工程學院學報,2009,27(1):119-121.
中圖分類號:TP319 文獻標識碼:A 文章編號:2095-1302(2012)09-0014-02
Design of voice recognition system based on TMS320C6713
XU Fei-yan1, CHEN Tao2, SUN Xu3, FANG Zong-liang1, LI Li-rong1
(1. Department 2, Anti-Chemical Institute, Beijing 102205, China;
2. Beijing Research & Development Center of Xiamen Jiuhua Communications Equipment Factory, Beijing 100083, China;
3. Chengdu University of Technology, Chengdu 610059,China)
Abstract: Taking the TMS320C6713DSP with floating-point functions produced by Texas Instruments chip as the system core processor and the MSP430 microcontroller as a peripheral controller, a real-time speech recognition system is designed in the paper. The kernel algorithm for the system uses Mel-frequency cepstral coefficients as feature parameters for feature extraction and dynamic time warping (DTW) algorithm for pattern matching. Programming and debugging of the system indicate that the system has good flexibility and real-time capability and improves the performance in noise immunity, robustness and recognition rates. In many areas, it has a practical reference value.
Keywords: speech recognition; digital signal processing; Mel-frequency cepstral coefficients; dynamic time warping
0 引 言
語音識別[1]是一種最為理想的人機通信方式。隨著計算機技術的進步,語音識別技術已經逐漸應用于控制、通信、消費等行業[2]。但是,語音識別系統在商品化的進程中還存在著諸如識別速度、系統魯棒性以及更高的識別率等具體問題。如何提高語音識別系統的這些性能,使系統更快、更穩定地工作是目前研究的重點。本文正是基于這種思想,通過選用德州儀器公司帶浮點功能的DSP芯片TMS320C6713(主頻為200 MHz)作為語音信號處理的核心處理器,同時結合MSP430單片機作為控制器共同構建硬件系統, 以美爾頻率倒譜系數作為語音信號特征參數,結合動態時間規整孤立詞識別算法進行模式匹配,設計了一種具有良好實時性和高識別率及魯棒性的語音識別系統。
1 系統硬件設計
本設計的整個硬件系統是以DSP為核心電路對語音信號進行采集和處理,再經過A/D轉換電路把模擬語音信號轉換成數字語音信號,然后送入DSP芯片進行匹配識別,最后將識別后的結果通過單片機控制模塊外接的兩個紅綠顏色的二極管進行處理表示,其中紅色表示拒絕命令,綠色表示接受命令。系統的硬件平臺主要由DSP系統核心處理模塊、語音信號采集模塊、單片機控制模塊、外擴存儲器模塊和電路等幾個模塊構成。系統的硬件設計總體方案框圖如圖1所示。
1.1 DSP系統核心處理模塊
作為系統的核心模塊DSP芯片采用TMS320C6713,該芯片的主頻可達200 MHz。這是TI公司推出的一種新型的浮點DSP芯片,是繼定點DSP芯片TMS320C62X系列后開發的。該芯片的內部結構在TMS320C62X的基礎上進行了改進,內部同樣集成了多個功能單元,可同時執行8條指令,其運算能力可達1G FLOPS。片內具有豐富的外設,如EDMA、EMIF、McBSP、HPI、GPIO等[4]。
中圖分類號:TN912.34 文獻標識碼:A 文章編號:1007-9599 (2012) 11-0000-02
隨著人們對人機交流技術的要求越來越高,語音識別技術應運而生。語音識別是將語音信號轉換成相應文本的高技術,是一種重要的人機交互技術[1]。在近二十年,越來越多高水平的研究機構和企業加入到語音識別的研究領域,并開始向市場上提品。其中具有代表性的產品有微軟的Whisper系統,Google的Word Search系統,蘋果的Siri系統等。
語音識別最重要的性能指標就是識別率,而識別率十分依賴特征參數的訓練和識別模型。常用的模式匹配和模型訓練技術主要有動態時間歸整算法和隱馬爾可夫算法。文中就這兩種算法特點進行了分析和改進,對基于改進后的算法建立的語音識別系統進行了性能評估和對比。
一、語音識別算法
(一)動態時間歸整算法
發音具有隨機性,同一個人在不同時間,不同場合對同一個字的發音長度都不是完全一樣的。在語音識別的模版匹配中,這些長度不一的發音將降低系統的識別率。為了解決這一問題,我們引入動態時間歸整算法(Dynamic Time Warping,DTW)。在語音識別中,DTW算法是較早出現,較為經典的算法,它是基于動態規劃(DP)的[2]。
提取參考語音信號的特征參數存入特征模板庫建立參考模板,提取待識別語音號的特征參數建立測試模板。DTW算法就是計算參考模板和測試模板各幀矢量之間的距離之和,總距離越小說明相似度越高,最后選取最小的總距離作為匹配結果。
這種識別算法雖然較為簡單、有效,但是計算量大,存儲空間占用多,響應時間長。因此,文中對該算法進行改進,以避免以上缺點。
改進后的DTW算法將歸整函數限制在一個平行四邊形中(其中兩條邊的斜率為1/2,另外兩條邊的斜率為2)。在計算總距離時只需計算平行四邊形之內各交點的匹配距離和累積距離,這樣減少了計算量,提高了系統的反應速度,節省了存儲空間。
(二)隱馬爾可夫算法
隱馬爾可夫模型是在馬爾可夫鏈基礎上發展起來的一種語音信號統計模型,自從用來描述語音信號后,該模型迅速發展,使得HMM理論逐漸成為語音研究中的熱點,語音識別的主流技術。
隱馬爾可夫模型HMM是一個雙重隨機過程,一重是可直接觀測的馬爾可夫鏈,用于描述狀態的轉移;另一重是隱含在觀察序列中的隨機過程,用于描述狀態和觀察值之間的統計對應關系。
將HMM用于語音識別系統前,必須解決三個基本問題[3]:
1.模型評估
已知一個觀察序列和一個HMM模型,如何計算由此模型產生此觀察符號序列的輸出概率。
2.最優狀態序列搜索
已知一個觀察序列和一個HMM模型,如何確定一個最佳狀態序列,使之產生的觀察序列的概率最大。
3.模型訓練
已知一個觀察序列和一個HMM模型,如何根據觀察序列來確定模型的參數。
針對以上三個問題,可分別用前向-后向算法,Viterbi算法和Baum-Welch算法改進,改進后的HMM算法較傳統算法在識別率方面有了明顯的提高。
(三)算法比較
基于模版匹配技術的DTW算法和基于隨機過程理論的HMM算法是比較有代表性的孤立詞識別算法。DTW算法應用動態規劃的方法解決了語音信號特征參數序列時間對準問題,克服了語速的差異。DTW算法適用于訓練樣本較少的情況下,訓練過程簡單,識別過程較復雜,多用于特定人孤立詞語音識別系統。
HMM算法HMM運用狀態序列描述觀測向量的時間邏輯,通過多變量混合高斯分布表現觀測向量序列的空間分布[4]。為了獲得高識別率,HMM算法需要大量的訓練樣本和存儲量,訓練過程要耗費較多時間,識別過程較簡單,多用于連續大詞匯量語音識別系統。
二、系統設計實現
語音識別系統由預處理、特征提取、模型庫和模式匹配等四個基本單元構成。系統的基本結構如圖1所示:
(一)預處理
通過話筒將語音信號變成電信號輸入到語音識別系統中。首先對信號進行一系列的預處理,包括采樣、量化、加窗、端點檢測、預加重等。
采樣和量化就是將離散信號分別在時間上和幅度上轉化成離散形式。為了濾除低頻干擾,提升信號高頻部分,對信號進行預加重處理。由于系統對信號的處理都是以短時為前提的,這就要將信號分割成許多語音段,即對語音信號分幀、加窗處理。原始語音信號往往包含無音段和有音段,端點檢測就是運用數字處理技術來判斷各語音段的起點和終點,從而找到有用的語音成分。文中使用基于短時能量和短時平均過零率的檢測方法判定語音信號的起始點和終止點,即雙門限比較法。
(二)提取特征參數
經過預處理的語音信號中并不是所有信息都是有用的,這就需要將語音信號經過一次變換,去掉冗余部分,提取代表語音本質的特征參數。文中采用近年來運用比較廣泛的Mel頻率倒譜參數,先將頻譜轉變為美爾頻標的非線性頻譜,接著再轉換到倒譜域上[6]。MFCC參數充分考慮了人耳的聽覺特性,有很高的穩健性和抗噪性能。
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)07-0154-02
目前主流的語音識別算法田有隱馬爾科夫模型12’和深度神經網絡 。對于建模單元統計概率模型描述,主要采用混合高斯模型(GMM),HMM-GMM模型在很長一段時間是語音識別聲學建模的主流模型。2011年微軟在深度神經網絡領域取得突破并成功應用于語音識別,深度神經網絡因具有更加優異的特征學習和特征表達能力成為研究的前沿。深度學習在語音識別中取得了較好的效果,但其需要的海量數據訓練以及大規模并行運算無法在嵌入式平臺上實現。
本文在嵌入式平臺上搭建一個機器人的控制命令小詞匯量漢語語音識別系統,通過收集錄制控制命令的訓練和測試語音數據,設計訓練過程需要用到的腳本,本文完成了控制命令的聲學模型和語言模型訓練,最終使用訓練好的模型文件構建了一個以Sphinx為識別引擎的機器人語音識別系統。
1基于HMM的語音識別算法
一個典型的語音識別系統結構如圖1所示,包括預處理單元、特征提取單元、模式匹配單元、模型庫建立單元四個部分。
HMM模型可表示為λ=(A,B,π),A為狀態轉移矩陣,B為觀察值概率矩陣,π為初始狀態概率分布,N表示馬爾可夫鏈狀態數目,M表示觀察值個數。在本文應用中,主要運用HMM模型解決控制命令的識別問題和聲學模型訓練問題。
1.1語音識別算法識別問題
識別問題:給定觀測序列o={o1,o2,…,oT)和模型λ=(A,B,π),確定產生最優O的狀態序列。識別問題主要用于識別過程中解碼,識別問題的基本算法為Viterbi算法,具體過程由以下公式迭代計算:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
1.2語音識別算法訓練問題
訓練問題;給定觀測序列O={o1,o2,…,oT)和模型λ=(A,B,π),如何得到一個最優的HMM模型,即通過訓練模型中各個參數使得P{O|λ)取最大值。語音識別中用于聲學模型的訓練基本算法有Baum-Welch算法,實現過程如下:
(9)
(10)
將ξ(i,j)對#從1到T求和可求得狀態Si到Sj的轉移期望值,將γt(i)對t求和可求得從其他狀態訪問狀態Si的期望值,這兩個過程就是Baum-Welch算法基本思想。
2基于sphinx的機器人語音識別系統構建
2.1實驗系統與設置
機器人語音識別系統設計如圖2所示:
嵌入式主控平臺主要負責語音識別,識別麥克風傳人的語音控制命令,再通過無線模塊與機器人通信,最終實現了語音命令控制機器人的效果。選擇的命令包括“前進”、“后退”、“左轉”、“右轉”、“停止”、“啟動”、“開燈”、“關燈”、“開電源”、“關電源”。
2.2數據準備
數據準備主要分為語言模型數據和聲學模型數據兩大部分,下面分別介紹。
2.2.1語言模型數據準備
本文使用CMUClmtk工具進行語言模型訓練,CMUClmtk將統計控制命令文本數據產生以單個詞建立的N_Gram模型。N-Gram模型的基本思想是,當前詞的出現只與該詞前面出現的所有詞有關,各個詞出現概率的乘積就是整個句子出現的概率。從語料中統計每個詞同時出現的次數可得到各個詞的概率,準備好用于語言模型訓練的語言數據之后,CMUClmtk將統計文本文件中每個詞出現的次數和詞的總數,然后列舉文本中出現的每一個詞的n元語法,最終轉換為Sphinx需要的二進制格式(DMP)語言模型。
2.2.2聲學模型數據準備
聲學模型數據準備首先需要錄制用于訓練和測試的原始語音文件,然后準備字典文件,字典文件包括主字典文件和補充字典文件,主字典文件中包含了需要進行訓練的控制命令以及與控制命令相對應的音素集,補充字典主要列舉了非語音單詞,它包括靜音,背景噪聲等。下一步將字典文件通過命令腳本生成音素文件,音素文件包含所有訓練的音素集。
2.3模型訓練
首先對訓練的語音信號提取特征向量,Sphinxtrain采用提取梅爾頻率倒譜系數(MFCC)作為特征向量。下面分別為字典中每個音素建立上下文無關模型(CI-modds),并為音素關聯狀態建立上下文有關模型(CD-unfied models)以及建立決策樹,可以通過決策樹聚類的方法來減少參數數量。下一步將為音素訓練最終聚類后的CD模型(CD-tied models),刪除插值是一個為了減少過度擬合的一個迭代過程,最終得到由均值文件、方差文件、混合權重文件和轉移矩陣文件組成的控制命令聲學模型。
2.4語音識別
在完成以上聲學模型訓練過程之后,系統會使用測試語音對訓練好的聲學模型進行解碼。使用Viterbi算法計算概率最大路徑的輸出概率得到識別結果,系統會統計解碼器對測試語音的錯詞率作為識別結果。
3結果及分析
本實驗系統環境為Ubuntul2.04系統,在實驗室環境錄制了20名同學的語音,其中男10名,女10名,在無噪聲環境下采用近距離麥克風錄制,數據采樣率為16kHz,16位量化編碼,每位同學將以正常說話語速將10個命令錄制10次,將10位男生和10位女生前5次錄音作為訓練數據,后5次錄音作為測試數據,對訓練好的聲學模型進行測試,采用錯詞率(WER)作為標準來統計結果,假設有一個N個單詞長度的原始文本和識別出來的文本。I代表入的單詞個數,D代表被刪除的單詞個數,S代表被替換的單詞個數,那么錯詞率就定義為:
WER=(I+D+S)/N (11)
系統的識別結果如表1所示:
1.引言
在小詞匯量的語音識別系統中,主要分為孤立詞識別和基于詞網模型的連續語音識別。前者通過詞發音端點分割算法,把每個詞的發音從整段語音中分割出來,然后再到模型集中去尋找最佳的匹配作為識別結果。XML同HTML一樣,都來自SGML(標準通用標記語言)。SGML是一種在Web發明之前就早已存在的用標記來描述文檔資料的通用語言。但SGML十分龐大且難于學習和使用。鑒于此,人們提出了XML 語言,它具有可擴展性、靈活性、自描述性、簡明性的優點。
在MYASR系統中有多個功能模塊,每個功能模塊都有各自的參數,采用XML語言對這些參數進行描述更加直觀,可讀性更強。例如,MYASR中MFCC編碼的XML描述如下:
<mfcc_params>
<type_mask> MFCC_0_D_A </type_mask>
<sample_rate> 16000 </sample_rate>
<win_size> 400 </win_size>
<win_shift> 160 </win_shift>
<fft_size> 512 </fft_size>
<low_freq> 200 </low_freq>
<high_freq> 7000 </high_freq>
<pre_enphasis> 0.97 </pre_enphasis>
<mel_num> 26 </mel_num>
<cep_num> 12 </cep_num>
<cep_lifter> 10 </cep_lifter>
</mfcc_params>
MYASR通過XML解析器將XML元素中的參數提取出來,然后再傳遞給各個功能模塊。當需要增加參數時,只要在XML文件中適當位置增加一個元素(Element)即可,具有良好的可擴展性。
3.系統開發
MYASR系統的模塊結構如下所示:
3.1前端處理
MYASR的前端處理包括以下功能模塊:自動增益控制(AGC)、噪音消除、預加重處理。其相應的XML描述如下:
<preprocess_bat workdir="d:worktmp">
<params>
<frame_ts> 20 </frame_ts> //幀長
<agc>
<level> 0.5 </level>
<max_gain> 2.0 </max_gain> //最大增幅
<min_gain> 1.0 </min_gain> //最小增幅
<agc>
<pre_enphasis> 0.97 </pre_enphasis>//預加重系數
<denoise>1</denoise> //噪音消除
</params>
<transcrip> pretrans.scp </transcrip>
</preprocess_bat>
其中屬性"workdir"表示當前的工作目錄,元素<agc>表示自動增益控制參數,元素<pre_enphasis>表示預加重參數,元素<denoise>表示是否對語音進行噪音消除。元素<transcrip>表示批處理文件,此文件中描述了目標文件名及處理后的文件名,內容如下:
"speech1.wav" "speech1_dn.wav"
"speech2.wav" "speech2_dn.wav"
"speech3.wav" "speech3_dn.wav"
.........
3.2端點分割
在MYASR系統中,實現兩種類型的端點分割:句子端點檢測,詞端點檢測。采用的靜音檢測方法有【2】:基于短時能量、基于短時平均過零率、和基于GMM模型。其XML描述如下:
<endpoint>
<endpoint_method> SENT_CUT </endpoint_method>
<vad_method> GMM_VAD </vad_method>
<sil_interval> 500 </sil_interval> //單位為毫秒
</endpoint>
元素<endpoint_method>表示端點分割方法:設置SENT_CUT表示句子端點分割,設置WORD_CUT表示詞端點分割。元素<vad_method>表示靜音檢測的方法:設置GMM_VAD 表示采用基于GMM模型,PW_VAD表示基于短時能量,COS_VAD表示基于短時平均過零率。<sil_interval>元素表示檢測對象之間允許的停頓時間,超過停頓時間意味著出現新的句子或詞。
3.3特征提取
MYASR系統中目前采用MFCC結合動態差分參數作為特征矢量。將語音文件轉換為MFCC編碼的XML描述文件如下所示:
<wav2mfcc workdir = "d:myworkdir">
<params_xml>mfccparams.xml</params_xml>
<transcrip> trans.scp </transcrip>
</wav2mfcc>
其中mfccparams.xml是MFC C特征參數的描述文件,內容如下:
<mfcc_params>
<type_mask> MFCC_0_D_A </type_mask>//類型
<sample_rate> 16000 </sample_rate> //采樣率
<win_size> 400 </win_size> //幀長
<win_shift> 160 </win_shift> //幀移
<fft_size> 512 </fft_size> //FFT的窗長
<low_freq> 200 </low_freq> //截止的最低頻率
<high_freq> 7000 </high_freq> //截止的最高頻率
<mel_num> 26 </mel_num> //MEL濾波器數
<cep_num> 12 </cep_num> //MFCC維數
<cep_lifter> 10 </cep_lifter> //參數提升系數
</mfcc_params>
其中<type_mask>元素表示特征矢量標志,有6種類型:
表3-1 MYASR中MFCC編碼類型
標志
含義
MFCC
MFCC參數
MFCC_0
MFCC參數加對數能量
MFCC_D
MFCC參數及其一階差分
MFCC_0_D
MFCC參數加對數能量,及一階差分
MFCC_D_A
MFCC參數及其一階、二階差分
MFCC_0_D_A
MFCC參數加對數能量,及一階、二階差分
<transcrip>元素中的trans.tsp文件描述了語音源文件及轉換成MFCC的目標文件,內容如下:
"speech1.wav" "speech1.mfc"
"speech2.wav" "speech2.mfc"
"speech3.wav" "speech3.mfc"
.........
3.4模型訓練
MYASR采用了連續概率密度的HMM模型,模型參數初始化采用了"K-均值分割"算法,參數重估采用"Baum-Welch"算法。其XML描述文件如下:
<hmm_train workdir="d:worktmpmytimit">
<label_scrip> phones.lst </label_scrip>
<featlep_scrip> trainmfcclabep.scp </featlep_scrip>
<hmm_params>
<state_num>3</ state_num > //HMM狀態數
<mixture>4</mixture> //高斯分量個數
<veclen>39</veclen> //特征矢量維數
<cluster>GMM_EM</cluster> //聚類算法
<feat_flag>MFCC_0_D_A</feat_flag> //特征矢量標志
</hmm_params>
<model_file>modelhmmmodelEM4.xml</model_file> //輸出文件
</ hmm _train>
其中,<label_scrip>元素中的文件phones.lst表示要訓練的那些詞或音子。
<featlep_scrip>元素中的文件trainmfcclabep.scp描述了特征矢量文件及其標注文件,內容如下:
"mfcspeech1.mfc" "labspeech1.lab"
"mfcspeech2.mfc" "labspeech2.lab"
"mfcspeech3.mfc" "labspeech3.lab"
.........
標注文件".lab"中注明了每個單元的發音起點和終點,MYASR將根據標注文件從特征文件中讀取特征矢量進行HMM模型的訓練。標注文件內容如下:
0 191 sil
191 285 sh
285 358 ix
358 415 hh
415 548 eh
548 646 jh
646 720 ih
720 790 d
790 920 ah
....
其中時間單位為毫秒。
<cluster>元素表示"K-均值分割"算法中對B參數進行重估所采用的算法,有兩種選項:GMM_EM表示EM算法,K_MEANS表示"K-means"算法。實驗結果顯示,EM算法比"K-means"算法具有更好的性能。
<model_file>表示訓練輸出的HMM模型文件,內容如下:
<hmm_set>
<params>
<feat_mask>MFCC_0_D_A</feat_ mask >
<state_num>3</state_num>
<mixture>4</mixture>
<vec_len>39</vec_len>
</params>
<hmm >
<state>
<mixture> 1.906841e+001 1.900540e-001 ......</mixture> //均值
<var> 2.945649e+001 1.096035e+002......</var> //方差
<weight> 2.212352e-001 </weight>
//權重
</state>
......
</hmm>
......
</hmm_ set >
3.5詞網構建
3.5.1 詞網模型的雙層結構
MYASR中的詞網模型分為兩層:一層是描述層,主要用于描述詞網的結構,包括上下文無關文法和有限狀態圖;另一層是模型層,這一層由HMM模型構成的搜索網絡,是搜索算法的輸入。首先由用戶定義語法規則,然后轉換成有限狀態圖,最后結合HMM模型集和發音字典將其轉化成搜索算法可以處理的模型層搜索網絡。
3.5.2 描述層到模型層的轉換
在模型層搜索網絡中,按節點是否有詞輸出分為兩類:空節點和詞節點。空節點中不含有HMM模型,而只是作為詞網中的一個過度節點,如起始節點(#START),終止節點(#END),中轉節點(#L)都是沒有詞輸出的節點。而詞節點則包含了構成這個詞的HMM模型。
詞網模型的有限狀態圖轉換成模型層搜索網絡的過程為:當遇到空節點時,不作處理;當遇到詞結點時,在字典哈希表找到這個詞,并保存word_id,word_id是這個詞在字典哈希表的索引,當搜索結束后,回溯時就是根據這個word_id找到哈希表中對應的詞;同時根據這個詞的發音,到HMM哈希表中查找子詞的HMM模型,然后在這個詞結點中創建指向子詞HMM模型的指針。轉換后的模型層搜索網絡如圖3-4所示。
模型層搜索網絡構建后,就可以用Token-Passing算法進行搜索。
4 總結
1 前言
新一代特種車輛的車載顯控系統對復雜噪聲環境下的語音控制(語音識別與語音合成)組件提出了新的需求,當前的車載顯控系統需要具備語音采集、識別和合成輸出的功能,而特種車輛在任務中的復雜噪聲的污染會使許多語音處理系統性能急劇惡化。由于特種車輛的車載強噪聲環境的特殊性,現有的商用語音識別模塊產品均難以滿足其環境的使用要求。
本文基于特種車輛對語音控制設計需求,針對特種車輛座艙(以下簡稱車載座艙)殊的噪聲環境,進行車載座艙噪聲環境下語音降噪組件設計,實現了語音信號的降噪處理,并采用商用的語音識別模塊進行測試驗證。測試結果表明,此方案在車載座艙環境下具有很好的降噪效果。
2 系統構成及工作原理
2.1 系統構成
車載座艙語音降噪系統由硬件平臺和語音降噪軟件兩部分組成,具體如下:
2.1.1 硬件組成
基于Freescalei.MX6 Dual SOC平臺的語音降噪模塊、XFV5310語音識別與合成模塊;
2.1.2 軟件組成
OS為Linux,內核為3.14.52,嵌入式語音降噪軟件。
2.2 工作原理
車載座艙語音降噪識別系統的工作原理為:當駕駛員啟動語音控制功能時,i.MX6D語音降噪模塊向XFV5310語音識別模塊發送語音識別啟動命令,音頻采集模塊開始采集駕駛員說出的帶噪語音指令,經由語音降噪模塊實時處理后,將降噪后的語音指令傳送給語音識別模塊,根據識別結果進行相應指令的操作響應,從而執行駕駛員下達的語音指令。圖1所示為車載座艙語音降噪系統的工作原理框圖。
如圖1所示,車載座艙語音降噪識別系統的工作原理如下:
(1)帶噪語音源獲取有兩種方式:
1.由音箱播放特種車輛真實任務過程中的車內環境噪聲文件來模擬車載噪聲環境,噪聲強度通過分貝測試儀的讀數控制;通過MIC說出語音指令;
2.讀取事先錄制的并按照特定信噪比疊加的.wav格式帶噪語音指令文件。
(2)通過音頻編解碼芯片STGL5000將輸入的模擬帶噪音頻進行PCM編碼,并將數字帶噪音頻輸出給語音降噪軟件;
(3)語音降噪軟件對數字帶噪音頻進行降噪處理,生成數字降噪音頻。
(4)降噪音頻存儲文件和播放輸出:
1.數字降噪音頻輸出給STGL5000進行PCM解碼和DA轉換,生成模擬降噪音頻,通過2.0音箱播放并輸入給XFV5310模塊進行語音識別;
2.數字降噪音頻數據存儲為wav格式音頻文件。
(5)語音降噪軟件的串口通訊:
1.通過RS232調試串口控制車載座艙語音降噪組件的工作狀態:開始工作、錄音模式(開始錄音、停止錄音)、讀取wav文件模式、停止工作,并實時顯示組件的工作狀態和語音識別結果;
2.通過RS232通訊串口,根據XFV5310串口通訊協議,控制XFV5310模塊的工作狀態(初始化、開始識別、停止)并接收回傳的狀態信息和語音識別結果。
3 系統軟件算法設計
車載座艙語音降噪識別軟件(以下簡稱CSE軟件)運行在嵌入式Linux操作系統下,用于采集模擬帶噪語音信號,對采集的數字帶噪音頻信號進行降噪處理,并將降噪語音信號發送給語音識別與合成模塊進行語音識別,最后處理識別模塊返回的識別結果。CSE軟件主要完成初始化功能、語音錄音功能、WAV文件讀取功能、WAV文件存儲功能、語音播放功能、語音降噪功能以及RS232串口通訊功能。CSE軟件執行流程圖如圖2所示。
初始化模塊主要完成RS232串口初始化、錄音配置、語音播放配置及信號量初始化。
錄音模塊主要完成音頻采集。由于規定語音指令長度最大為5S,在錄音時判斷錄音時間是否達到5S或是否收到結束信號,如兩者均未發生,則采集一個周期音頻樣本,并保存至帶噪音頻數組中,如此循環,直至收到錄音結束控制信號或錄音時間達到5S。
WAV文件存儲模塊實現將音頻文件以.WAV格式存儲。首先存儲WAV文件頭,主要完成WAV文件文件頭數據初始化,并檢查文件頭每個字節的合法性,最后將檢測合格的WAV文件文件頭存儲在.wav文件中,WAV文件頭存儲后將音頻數據寫在WAV文件頭數據后。
WAV文件讀取模塊實現讀取WAV文件文件頭,對文件頭進行解析,并讀取WAV文件的音頻數據。
音頻播放模塊主要實現將降噪處理后的音頻數據實時地通過聲卡播放出來,以做識別處理。由于在ALSA音頻驅動中,對音頻設備的數據訪問以及音頻數據的存儲都是以周期為單位進行操作,所以在播放時要判斷已經降噪處理但未播放的音頻數據是否達到周期樣本數,如達到則播放音頻數據,其次還要判斷錄音是否已經結束,如果結束,判斷是否還有音頻數據未播放,如有則播放剩余的音頻數據。
語音降噪模塊對采集或從文件中讀取的帶噪語音進行降噪處理。首先采用可移動的有限長度窗口實現對帶噪語音分幀加窗,分幀加窗結束后,將每一幀帶噪語音分別進行短時快速傅里葉變換,然后實現帶噪音頻的降噪。實現SMSS降噪算法的基本思想是基于統計模型更新信噪比和當前幀噪聲功率譜,根據帶噪語音頻譜中不同頻帶的信噪比,確定噪聲的譜減因子,然后用帶噪語音減去噪聲和譜減因子的乘積,得到降噪后的語音。在信噪比更新方面,主要采取由先驗信噪比和后驗信噪比決定SNR的方法,在噪聲譜估計方面基于統計模型的VAD方法。降噪處理后再進行短時快速傅里葉反變換(ISFFT),得到時域的降噪語音信號數據,按幀續進行逆分幀重排后得到降噪后的語音信號,最后進行存儲為.WAV格式文件或者直接播放輸出。
串口通訊模塊主要實現發送識別請求,獲取識別請求響應結果以及對識別結果解析。在語音播放之前,需要啟動XFV5310開發板的識別功能,由識別啟動模塊發送語音識別啟動命令,開發板收到命令幀后會判斷此命令幀正確與否,并回傳結果,識別啟動模塊接收回傳數據。發送識別啟動命令后,如果識別啟動模塊在5.5S內未收到XFV5310開發板回傳,則默認識別開發板無反應,識別啟動模塊將退出等待。當語音識別啟動后,XFV5310開發板將會在識別處理結束后將相應的識別結果回傳給CSE軟件。回傳的數據以“幀”的方式封裝后傳輸。識別結果解析功能是當語音降噪軟件接收到XFV5310開發板的回傳的識別結果,根據通訊協議對XFV5310開發板發來的識別結果解碼。
4 系統測試驗證
4.1 測試環境
車載座艙語音降噪組件的測試驗證試驗中,各模塊間的交聯關系如圖3所示。
4.2 測試方法及結果
在車載復雜噪聲環境下,特定信噪比(-5dB、0dB、5dB)的語音指令,未經降噪前語音質量差,指令模糊,商用XFV5310語音識別與合成模塊對指令識別率低于65%。經過本文設計的車載座艙語音降噪軟件處理后,系統的測試結果如表1所示。
4.3 測試結果分析
車載座艙語音降噪識別系統功能完整,語音錄音、播放、WAV文件讀取、存儲、語音降噪處理等功能都能符合需方的功能要求;特定信噪比(-5dB、0dB、5dB)下的語音指令識別率能夠滿足需方規定的指標要求;語音降噪算法、降噪與識別的總耗時穩定,不會隨著語音指令的增長而增加耗時,能夠滿足需方規定的指標要求。
5 結束語
特種車輛工作環境下的帶噪語音經車載座艙語音降噪識別系統處理后的語音聽感清晰,無明顯失真,無明顯噪聲殘留,且運行總耗時較少,能夠滿足車載環境下語音降噪需求,配合商用的語音識別與合成模塊XFV5310組成的系統能夠滿足特種車輛在惡劣工作環境下的語音控制功能,將該系統與車載顯控模塊集成,滿足需方的功能與性能指標要求,經過實際裝車使用測試,證明本文設計的車載座艙語音降噪識別系統功能性、穩定性和可靠性均能滿足特種車輛的使用要求。
參考文獻
[1]Loizou P,Speech enhancement:theory and practice[M].1st ed.CRC Taylor and Francis,2007:6-7.
[2]宋知用.MATLAB在語音信號分析與合成中的應用[M].北京:北京航空航天大學出版社,2013.
[3]易克初,田斌,付強.語音信號處理[M]. 北京:國防工業出版社,2003.
[4] Israel Cohen and Baruch Berdugo: Speech enhancement for non-stationary noise environments,[J].Signal Process.,vol.81,no.11,pp. 2403-2418,Nov.2001.
[5] Israel Cohen:Noise Estimation by Minima Controlled Recursive Averaging for Robust Speech Enhancement,[J].IEEE Signal processing letters,vol. 9,no.1,January 2002.
[6] Israel Cohen.“Noise Spectrum Estimation in Adverse Environments: Improved Minima Controlled Recursive Averaging”[J].IEEE Transactions on speech and audio processing,vol.11, no.5,Sep,2003.
[7] Israel Cohen:Relaxed statistical model for speech enhancement and a priori SNR estimation [J].IEEE Trans. Speech Audio Process.,vol.13, no.5,pt.2,pp.870-881,Sep,2005.
[8]張雄偉,陳亮,楊吉斌.現代語音處理技術及應用[M].北京:機械工業出版社,2003.
[9]程塔,郭雷,趙天云,賀勝.非平穩噪聲環境下的語音增強算法[J].西北工業大學學報,2010,28(5):664-668.
[10]蔣海霞,成立新,陳顯治.一種改進的譜相減語音增強方法[J].理工大學學報,2001,2(l):41-44.
[11]孫楊,原猛,馮海泓.一種基于統計模型的改進譜減降噪算法[J].聲學技術,2013,32(2):115-118.
作者簡介
中圖分類號:TN912.34 文獻標識碼:A 文章編號:2095-1302(2016)11-00-03
0 引 言
智能家居(smart home)的概念很早就被提出來,但是一直沒有在現實中被具體實踐,直到1984年出現的首棟智能型建筑拉開了全人類爭相構建智能家居的帷幕。智能家居不是某一項家庭電器的智能化,而是以住宅為平臺,為實現家居安全舒適、科學環保、健康節能的家居生活環境,依賴綜合布線和網絡通信技術,將家電設備聯系起來,構建高效、流暢的家居設備管理系統,方便人們對家用設備進行操作與管理,為人類提供智能、舒適的生活方式。
1 語音識別的發展歷史及應用領域
從工業革命開始,人類逐漸受益于高速的機器生產,但隨著科技的發展,人類開始夢想著與機器進行交流溝通,讓機器明白人類的命令,然后給予回應,真正實現用機器代替人類進行繁重勞動的目標。語音識別技術為該目標的實現提供了可能,該技術將其接收到的音頻信號轉換為機器可識別的文本或命令后進行進一步處理。現如今,經歷半個多世紀的探索與創新,語音識別技術在各領域都實現了應用,小到兒童玩具、個人家庭電器、電子產品,大到醫療、工業生產等,語音識別系統都發揮著不可替代的作用。從世界上第一個能識別10個英文數字發音的語音識別系統到如今廣泛應用在各行各業的語音識別系統,我們希望語音識別技術在未來取得更大的發展。
語音識別技術的發展離不開研究者們的卓越貢獻,由一開始特定人、小詞匯的識別到如今非特定人、連續發音、大量詞匯的識別,這其中各種技術的更新發展必不可少。廣泛使用的計算機網絡和普遍使用的手機、ipad等提供了大量文本和語音方面的材料資源,多渠道的資源為語音識別中的語言模型和聲學模型的訓練提供了有力支持。語音識別的未來發展令人期待。
2 智能家居聲控系統的方案設計
2.1 系統總體結構圖
圖1所示為系統總體設計結構框圖。該系統的硬件部分包括電源、LD3320芯片、單片機、繼電器等。語音識別由LD3320芯片實現,系統整體控制由MCS-51單片機實現,包括對LD3320芯片的初始化等。用戶語音指令經麥克風送給LD3320語音識別模塊,LD3320識別處理后,把識別結果傳送給單片機,單片機將根據識別結果對外設進行相應控制。若語音指令無法識別,則由單片機控制LD3320語音模塊重新進入新的識別處理過程。
2.2 LD3320語音識別模塊
LD3320芯片是一個專用于語音識別的芯片,該芯片在設計時注重高效與節能,無需外接任何輔助芯片,直接集成了語音識別處理模塊和外部電路,如麥克風接口、語音輸出接口、AD/DA轉換器等,使其可以實現語音識別、聲音控制及人機對話等功能。
2.2.1 主要特征
完成非特定人的語音識別命令。在語音識別技術發展之初,只能由特定的人進行語音命令來完成任務,且需要錄音和練習等,而現在只需用戶使用相同的語言就可以進行識別,且識別效率大大提高,識別率高達95%,無需外接輔助,實現了單芯片語音識別。
由于用戶的語音命令有多種可能,如意思相同但語音命令不同或受到口音語氣的影響等,LD3320芯片中的識別語句是動態可編輯,可修改的,在設計時可根據具體情況考慮多種可能,如設置50條識別語句留作用戶語音命令的候選語音,以提高系統的整體水平。不過設置時需注意識別語句的長度,如果設置漢字則不能超過10個,設置拼音串則不能超過79個。支持串行接口和并行接口,也可設置為休眠狀態,方便激活。
2.2.2 LD3320語音口令識別處理過程
LD3320芯片的語音口令識別處理過程如圖2所示。
2.2.3 LD3320語音識別模塊使用技巧
在一些特別的應用場合,人們希望語音識別系統具有較高的識別精度。本系統設計采用“用戶口令觸發模式”以提高抗干擾能力,避免單片機對外設控制時產生錯誤動作。
程序設計中設置一個短句作為用戶命令的觸發口令。如定義“小明”作為用戶的觸發口令。在等待用戶觸發時,特別是有雜音、噪音的情況下,系統將啟動 “循環識別處理”模式,把觸發口令“小明”和其他幾十個用來吸收錯誤的詞匯設置進LD3320語音識別芯片。如果LD3320芯片中程序檢測到用戶的觸發口令時,則開啟“觸發模式”,用戶給出一級口令,若檢測為正確口令,則芯片將給出指示,即提示燈開始閃爍(大約2 s)后,開啟二級口令的接收檢測即“識別模式”,LD3320識別到預設的二級口令后,如臥室開燈、臥室關燈等,將識別結果送給單片機,由單片機對外設進行控制。在等待口令時,可能會進行誤識別,即在其他聲音干擾下接收到相似的語音片段,程序可以專門對垃圾詞語進行處理或不處理,然后進入循環識別狀態,用戶只需發出新的口令即可觸發。通過二級口令觸發模式,用戶可以更加方便的進行語音操作,且準確率較高。
2.2.3.1 巧妙運用關鍵詞語的ID,提高識別效率
由于用戶的發音習慣不同,可能同一個意思的不同語音命令無法被準確執行。我們將語音命令的關鍵詞語的拼音串設計在LD3320芯片內,例如一級口令“小明”,然后傳入一個ID代表這個詞語,一旦識別成功后,將這個ID作為識別的結果對外輸出。在 LD3320語音芯片中,同一個ID可以對應不同的關鍵詞匯,而且ID不需要連續,編程方式非常簡單。例如“中國”“華夏”,可以設置為同一個ID,之后再進行其他處理步驟。
2.2.3.2 對于關鍵詞ID設置多個可能發音,充分利用50項候選可識別語句
有時用戶可能不會用同一個詞來發出命令,例如“開燈”,用戶可能會說“開大燈”“打開燈”“打開電燈”“把電燈打開”等,其說話的口音、語氣、情緒、習慣是不同的。因此需把用戶的這些發音習慣都考慮到程序設計中,完全利用LD3320芯片的特性,充分利用50條可動態編輯的關鍵識別條目,編輯不同的候選語句并設置到芯片中。這樣用戶在發出命令后,被準確執行的效率增加,完善了系統的功能。
2.2.3.3 用戶通過語音命令后得到語音識別結果的等待時間調節
在本系統中,用戶發出口令后芯片大約有12 s的反應時間,然后才會給出識別反應。通過語音識別芯片的檢測機制來判斷用戶的口令是否全部發出,如監測出一段連續的噪音,就認為用戶口令已發完,之后給出識別結果。
2.2.4 使用過程中應注意的問題
在測試過程中發現,LD3320模塊應用時要注意以下問題:
(1)用戶使用時背景聲音(噪音、雜音等)會造成一定的干擾;
(2)設置語音模塊內識別列表的內容和50個可編輯的候選語句有關;
(3)設置識別列表中各詞匯之間的相似程度;
(4)用戶的發音快慢、大小、口音以及發音是否清晰等;
(5)距離麥克風的位置遠近以及接收語音的外設(麥克風等)質量等。
3 智能家居聲控系統的軟件程序設計
智能家居聲控系統的程序處理過程主要包括單片機初始化;LD3320芯片的初始化;LD3320語音識別結果寄存器的讀取以及單片機對外設的控制等。
3.1 具體軟件功能模塊介紹
(1)單片機初始化函數:void MCU_init()
名稱:void MCU_init()。
功能:單片機初始化。
(2)中斷處理函數:void ExtInt0Handler(void) interrupt 0
名稱:中斷處理函數。
功能:對LD3320的中斷請求進行處理。
其他說明:語音識別模塊接收到音頻信號后進入函數,判斷識別結果,若無結果則設置寄存器開始下次識別。
(3)用戶執行函數:void User_handle(uint8 dat)
名稱:用戶執行函數。
功能:識別結果成功后,MUC進行之后的處理。
(4)LD3320復位函數:void LD_Reset()
功能描述:復位LD模塊。
(5)LD3320初始化函數:void LD_Init_Common()
功能描述:LD模塊命令初始化。
其他說明:該函數一般不需要修改。
(6)LD3320ASR功能初始化函數:void LD_Init_ASR()
功能描述:LD模塊ASR功能初始化。
其他說明:該函數一般不需要修改。
(7)運行ASR識別處理函數uint8 RunASR(void)
功能描述:運行ASR識別流程。
返回值:asrflag:1->啟動成功;0->啟動失敗。
其他說明:識別順序如下:
① RunASR()函數實現一次完整的ASR語音識別流程;
② LD_AsrStart()函數實現了ASR初始化;
③ LD_AsrAddFixed()函數添加關鍵詞語到LD3320中;
④ LD_AsrRun()函數啟動一次ASR語音識別流程。
任何一次ASR識別流程均從初始化開始,皆按照此順序進行。
(8)語音命令添加函數:uint8 LD_AsrAddFixed()
功能描述:向LD模塊添加關鍵詞。
返回值:flag:1->添加成功。
(9)識別結果獲取函數:uint8 LD_GetResult()
功能描述:獲取識別結果。
返回值:LD_ReadReg(0xc5 ),讀取內部寄存器返回的識別碼。
3.2 系統程序流程圖
聲控系統單片機程序流程圖如圖3所示。
4 系統測試
本系統以“小明”為一級指令口令,每次識別時必須先觸發一級口令,才能進行二級口令,如臥室關燈、臥室開燈、客廳開燈、客廳關燈等。
系統加入電源后對麥克風說“小明”一級口令,指示燈閃爍亮燈后,再對著麥克風說:“臥室開燈”二級口令則繼電器控制臥室燈亮。目前該系統能識別的二級口令有5個,分別是“客廳開燈”“客廳關燈”“臥室開燈”“臥室關燈”和“close all”,實際可以根據具體布置需要增加控制節點及相應識別口令。
5 結 語
智能家居聲控系統不僅能為大家帶來舒適的居住環境,還具有系統可靠性高,誤識率低,方便適用的特點,具有廣大的應用前景。
參考文獻
[1]王炳錫.實用語音識別基礎――21世紀高等院校技術優秀教材[M].北京:國防工業出版社,2015.
[2]譚浩強.C程序設計教程[M].北京:清華大學出版社,2007.
[3]金鑫,田,闕大順.基于LD3320的語音控制系統設計實現[J].電腦與信息技術,2011,19(6):22-25.