摘 要:通用型語音控制系統主要用來完成語音識別、語音控制和語音播放等綜合功能,其硬件部分以凌陽SPCE061A為核心,軟件設計采用Visual Basic.NET、C語言和匯編語言。這里只采用單片芯片就完成了語音處理和控制功能,此外開發了一整套圖形化的通用型語音集成軟件,用戶只需要輸入語音素材的有關參數,即可實現代碼的自動生成,目前國內還沒有此類設計方案。實際應用表明,該系統結構簡單,成本低,可擴充性強,并可大大縮短開發周期。關鍵詞:語音控制; 凌陽單片機; 語音集成軟件; 混合編程
中圖分類號:TP368.1文獻標識碼:B
文章編號:1004-373X(2010)22-0069-03
Universal Voice Control System Based on Sunplus SCM
TU Cheng-yi
(TDG Technology Zhejiang Co. Ltd., Jiaxing 314050, China)
Abstract: With the rapid development of electronics, home appliances and other electronic products become increasingly personalized. This universal voice control system is mainly used to perform voice recognition, voice control and voice play functions. Hardware part of the system takes Sunplus SPCE061A as the core. And Visual Basic.NET, C language and assembly language are adopted in the software design. The innovation of this paper is that only a single chip is used to complete the voice processing and control functions, and a set of general-purpose graphical voice integration software is developed to automatically generate the implementation code by inputting the parameters of voice material. This kind of design scheme has not been proposed at home now. The practical application shows that the system is simple in structure, and its cost is low and its scalability strong. Therefore, the development cycle of the system is significantly shortened.
Keywords: voice control; Sunplus single chip microcontroller; CTI software; mix programming
收稿日期:2010-06-13
隨著電子技術的迅速發展,家用電器及其他電子產品日趨人性化。為了實現語音處理和語音控制,這里設計了基于凌陽單片機的通用型語音控制系統。該系統主要用來完成語音識別、語音控制和語音播放等綜合功能,使家用電器及其他電子產品實現語音的自動控制。目前國內還沒有此類設計方案。該方案主要分為語音識別模塊設計、語音播放模塊設計和語音控制模塊設計,只采用單片芯片就可實現語音處理和控制功能。此外,通過對一整套圖形化的通用型語音集成軟件進行開發,可使用戶只需要輸入語音素材的有關參數,即可實現代碼的自動生成。下面介紹通用型語音控制系統的設計方案。
1 通用型語音控制系統設計方案
圖1給出通用型語音控制系統方框圖。
語音識別模塊的主要作用是完成語音辨識,本設計采用特定發音人識別模式。語音識別功能采用語音識別電路,并通過軟件編程來實現。語音播放模塊的主要作用是完成語音播放。語音播放功能采用語音播放電路,并通過軟件編程來實現。語音控制模塊的主要作用是使語音識別和語音播放實現自動控制。語音控制功能采用語音控制電路,并通過軟件編程來實現。主控制器部分的主要作用是將語音控制系統嵌入到家電產品及其他電子產品中后,使電子產品的所有功能實現語音的自動控制[1] 。
圖1 通用型語音控制系統方框圖
1.1 凌陽單片機SPCE061A簡介
SPCE061A是凌陽科技推出的一個16位結構的微控制器。CPU時鐘頻率為0.32~49.152 MHz,具有較高的處理速度,可使μ′nSPTM能夠非常容易、快速地處理復雜的數字信號;擁有可編程音頻處理;內置2 KWord的SRAM和32 KWord的FLASH;2個16位可編程定時器/計數器(可自動預置初始計數值),2個10位DAC輸出通道,32位通用可編程輸入/輸出端口。它是數字語音識別應用領域產品中的一種比較經濟的選擇[2]。
1.2 通用型語音集成軟件
開發了一套通用型語音集成軟件,用戶無需進行代碼修改,只需要輸入語音素材的相關參數,即可實現代碼的自動生成。如圖2所示,是通用型語音集成軟件v0.1版的操作界面。
2 語音播放模塊設計
語音處理大致可以分為A/D、編碼處理、存儲、解碼處理以及D/A等。然而,麥克風輸入所生成的WAVE文件,其占用的存儲空間很大,對于單片機來說想要存儲大量的信息顯然是不可能的,而凌陽SPCE061A提出了解決的方法,即SACM-LIB,該庫可將A/D、編碼、解碼、存儲及D/A做成相應的模塊,對應的每個模塊都有其應用程序接口API,所以只需了解每個模塊所要實現的功能及其參數的內容,然后調用該API函數即可實現該功能。
圖2 通用型語音集成軟件v0.1版操作界面
3 語音識別模塊設計
3.1 語音識別原理
語音識別系統包括學習訓練過程和識別過程2大部分[3],基本原理如圖3所示。
(1) 預處理。
包括預加重、加窗分幀、端點檢測等處理過程,在預處理之前還有語音信號的數字化處理過程。其中,包括反混疊濾波、模/數轉換自動增益等用以去除聲門激勵、口鼻輻射、高于1/2采樣率的高頻信號和噪聲信號的影響,以實現語音信號的數字化。
(2) 聲學特征分析提取。
經過預處理后的語音信號,要對其進行特征提取,即特征參數分析。該過程就是從原始語音信號中抽取能夠反映語音本質的特征參數,以形成特征矢量序列。目前語音識別所用的特征參數主要有2種類型:線性預測倒譜系數(LPCC)和美爾頻標倒譜系數(MFCC)。LPCC系數主要是模擬人的發聲模型,未考慮人耳的聽覺特性。MFCC系數考慮到了人的聽覺特性,但要計算傅里葉變換將耗費大量寶貴的計算資源。因此,在嵌入式語音識別系統中一般都選用LPCC系數。語音特征提取是分幀提取的,每幀特征參數一般構成一個矢量。為此,有必要采用很有效的數據壓縮技術方法對數據進行壓縮。
圖3 語音識別系統基本原理圖
(3) 參考模板。
參考模版時將一個或多個說話者多次重復的語音參數經過訓練得到,它是聲學參數模版,在系統識別使用前獲得并存儲起來。
(4) 判定識別。
模式識別是將輸入的待識別語音特征參數與訓練得到的參考語音模式進行逐一比較分析,獲得的最佳匹配參考模式便為識別結果。目前常用的語音識別算法主要有動態時間規則、離散隱馬爾可夫模型、連續隱馬爾可夫模型及人工神經網。
3.2 語音識別系統原理和算法
在SPCE061A內置的8通道10位模/數轉換器(analog to digital converter,ADC)中專門設置了一個只用于語音輸入的通道MIC_ IN,針對較弱信號的轉換還設計了一個音頻放大器(automation gain control,AGC)。對其自動增益控制放大后再進行A/D轉換。實際上,可以把模/數轉換器看作是一個實現模/數信號轉換的編碼器。ADC轉換的原理是依次把設定在逐次逼近寄存器SAR中的數字送至10位DAC0中進行D/A轉換。DAC0的電壓模擬量輸出值與外部的電壓模擬量輸入值進行比較,以便盡快找出外部電壓模擬量的數字量輸出,其輸出的模擬量VDAC0與采樣后的輸入電壓值VIN相比較時可采用對半搜索法,即從SAR中最高有效位開始,根據比較的大小逐位確定其數碼取“1”,其余位為“0”[4]。
語音識別算法的原理是:在訓練過程中,從每個說話人發出的訓練語句中提取相應的能充分描述各個說話人行為的特征矢量,這些特征矢量稱為各說話人的模板。在測試階段,從說話人發出的語音信號中按同樣的處理方法提取測試模板,并與相應的參考模板相比較。由于說話人每次發音是變化的,測試模板和參考模板在時間尺度上不可能完全一致。為了使二者能在時間等效點上加以比較,采用了動態時間規整法(DTW)。基本原理是在參考樣本特征矢量序列A=[a1,a2,…,aM]與待識語音特征矢量序列B=[b1,b2,…,bN]之間用一種非線性規整技術實現匹配[5]。從目前來看,基于動態時間規整匹配的DTW算法可能是一個最為小巧的語音識別算法,系統開銷小,識別速度快,在小詞匯量的語音命令控制系統中是一個非常有效的算法[3,6-7]。
在訓練階段,用戶將詞匯表中的詞依次說一遍,提取出每一幀采樣數據的特征向量,并將特征向量作為模板存入模板庫中。在識別階段,提取待識語音的特征向量,然后將其依次與模板庫中的每一個模板進行相似度比較,并將相似度最高者作為結果輸出。
4 語音控制模塊設計
4.1 語音控制模塊設計
語音控制模塊硬件部分的功能采用設計的超小迷你電路板來完成。該硬件具有結構簡單,成本低,體積小,易于家用電器嵌套等特點。各I/O口的分配及功能是IOB4~IOB7為識別到特定語音后向外部發出信號的常用口;IOB0~IOB1為向外發送信號的預留口;IOB2~IOB3是外部觸發SPCE061的外中斷觸發口,當資源緊張時也可做為輸出端口,如圖4所示。
圖4 超小迷你電路的I/O口
4.2 主程序流程
至此,整套系統完成了。在使用時,第一次要進行特定人語音識別,識別成功后,自動存入FLASH,以后就無需再訓練,上電后自動加載進RAM中,然后進行識別,當識別到特定語音時,IOB就發出相應信號。
5 通用型語音集成軟件的設計
5.1 集成軟件的總體設計和所使用的工具
該方案的集成開發環境采用Visual Studio(VS)2005的VB.NET來設計。Visual Basic.NET是微軟公司推出的全新集成開發環境VS.NET的重要成員之一,簡單、易學、易用,很多新特性也正適應了新一代軟件開發的需要,只要稍有點語言基礎就可以很快掌握,進而精通。可視化的用戶界面設計功能,把程序設計人員從繁瑣復雜的界面設計中解脫出來;可視化編程環境的“所見即所得”功能,使界面設計如同積木游戲一般。采用Visual Studio (VS) 2005來編寫此集成開發環境,極大地減輕了開發強度,縮短了開發周期,也使它的代碼強度和可移植性大大提高。
5.2 通用型語音集成軟件使用簡介
通用型語音集成軟件包括了語音識別模塊設計、語音播放模塊設計、語音控制模塊設計的所有代碼自動生成,如圖2所示。開始可加入提示音,單擊打開文件選項,選擇想要播放的語音,后面方框打勾表示有此項功能;下面是5條語音的播放和識別,每一條功能相同,現簡介如下:第一條語音提示功能同上,觸發端口指辨識到該條語音后所觸發的端口號,有IOB0~IOB7,電平指向外發信號是低電平還是高電平,有高電平“1”和低電平“0”兩種情況可供選擇,以適應不同的情況。訓練成功語音提示指第一次訓練時每訓練成功1條指令的提示;訓練失敗語音提示指第一次訓練時失敗的提示;訓練完成語音提示指第一次訓練成功時的語音指令提示。
6 結 語
該通用型語音控制系統結構簡單,成本低,可擴充性強,開發周期短,可廣泛應用于家用電器和其他各種電子產品中。如果該方案能成功應用,定會產生較好的經濟效益和社會效益。
參考文獻
[1]譚博學,苗匯靜.集成電路原理及應用[M].北京:電子工業出版社,2003.
[2]羅亞非.凌陽16位單片機應用基礎[M].北京:北京航空航天大學出版社,2005.
[3]易克初,田斌.語音信號處理[M].北京:國防工業出版社,2000.
[4]劉海成,秦進平,韓喜春.MCU-DSP型單片機原理與應用[M].北京:北京航空航天大學出版社,2006.
[5]王炳錫.語音編碼[M].西安:西安電子科技大學出版社,2002.
[6]楊行峻,遲惠生.語音信號數字處理[M].北京:電子工業出版社,1998.
[7]蔡蓮紅,黃德智.現代語音技術基礎與應用[M].北京:清華大學出版社,2003.
[8]趙力.語音信號處理[M].北京:機械工業出版社,2003.
[9]凌陽科技大學.凌陽單片機在大學生電子競賽中的應用[M].北京:北京航空航天大學出版社,2005.