摘要:以語音識別原理為基礎,設計了一個基于ARM9微控制器的語音識別門禁系統。系統采用了S3C2440微處理器,UDA1341專用語音芯片和觸摸屏等硬件設計,并基于Linux操作系統和QT/Embedded圖形用戶界面(GUI)編程,實現對特定說話人的語音識別。結果表明,該門禁系統界面友好,操作簡單,且具有良好的識別效果,可進行產品推廣。
關鍵詞:嵌入式;語音識別;門禁系統;特定說話人
中圖分類號:TP368文獻標識碼:A文章編號:1009-3044(2009)36-10430-03
Design and Realization of Embedded Speech Access Control System
LUO Yun-gui, ZHANG You-chun
(1.Faculty of Mechanical Electronic Information, China University of Geosciences, Wuhan 430074, China)
Abstract: Based on the Speech Recognition theories, an embedded access control system has been designed on ARM9 microprocessor. The system used the S3C2440 microprocessor, the UDA1341 audio codec and touch screen, and based on the Linux OS and QT/Embedded Graphical User Interface(GUI) programming to identify the speaker dependent. The result showed that the system was good at speech recognition, simply to operate, and had friendly interface, which indicated it could be put into production.
Key words: embedded; speech recognition; access contrul system; speaker dependent
本文的研究目標是建立一個特定人、小詞匯量、與文本有關的說話人識別門禁系統。該系統的設計分為兩部分:硬件設計部分,主要采用Samsung公司ARM9系列芯片、Philips公司的立體聲音頻芯片和觸摸屏等,配合電源模塊實現整個硬件系統;其原理是利用 S3C2440內置的ⅡS總線控制器實現與UDA1341接口,完成音頻數據的錄入和處理。軟件設計部分,主要基于嵌入式Linux操作平臺和QT/Embedded圖形用戶界面,編寫音頻驅動程序、音頻采集程序、語音算法程序以及圖形界面程序,然后通過Linux剪裁,QT/Embedded移植,程序調試,最終建立人機交互的說話人識別門禁系統。
1 語音識別基本原理
語音識別系統本質上是一種多維模式識別系統,其主要包括端點檢測、特征提取、語音建模、模式匹配四個基本單元[1]。其識別過程如圖1所示。
1.1 端點檢測
在語音識別中,特別是孤立詞、小詞匯量識別系統中,準確檢測出每個詞或句子的起點和終點,不僅可以濾除冗余數據、降噪以及降低存儲容量,而且可以大大提高識別算法速度和識別率。因此,本系統采用了短時平均能量、短時平均過門限率(過零率)以及Mel低頻能量檢測等方法對語音數據進行端點檢測。
1.2 特征提取
對端點檢測后的語音數據,采用Mel倒譜參數進行參數提取。Mel頻率倒譜系數 (MFCC)是語音信號的頻域參數,它是一種基于人耳對語音頻率的非線形感知特征的描述;在說話人識別中,有較好的識別性能和抗噪能力,其性能優于LPC、LPCC等參數。計算MFCC的過程為:首先用傅里葉變換將時域信號轉變成頻域信號,然后根據臨界頻率和帶寬選取數字濾波器(三角形),并在頻域內進行計算處理,最后通過反傅里葉變換得到Mel頻率倒譜系數[1]。最后的變換式可簡化為公式(1)。
,n=1,2,…,L(1)
式中,MFCC系數的個數L通常取最低12-16,本文取12。
1.3 基于DTW的模式匹配算法
動態時間歸整(DTW) 算法是把時間歸整和間距測量計算結合起來的一種非線性歸整技術,它有效地解決了小詞匯量識別中說話速度不均勻的問題[2] ,該算法原理是尋找一條通過各個交叉點的從起始點到終止點的幀失真度總和為最小的最佳路徑。當詞匯量較少時,用DTW算法對特定人的語音識別可以獲得很好的效果。設測試語音參數共有N幀,參考模板共有M幀矢量,且N≠M,則動態時間規整就是尋找一個時間規整函數j=ω(i),它將測試矢量的時間軸i非線性地映射到模板的時間軸j上[2],并使函數ω滿足公式。
(2)
式中,d[A(i),B(ω(i))] 是第i幀測試矢量A(i)和第j幀模板矢量B(j)之間的距離測度;D則是處于最優時間規整情況下兩矢量之間的匹配路徑。
2 門禁系統的設計和實現
2.1 總體設計
本系統首先是用戶對LCD觸摸屏上的圖形界面進行操作和控制,進而通過QT/Embedded圖形接口調用和執行語音錄入和處理函數,經ARM9處理器運算處理后,將識別結果返回LCD。其基本的結構框圖如圖2所示。
2.2 硬件電路設計
本系統硬件電路主要由S3C2440處理芯片、UDA1341TS音頻芯片和3.5寸觸摸屏為核心,配合Flash存儲芯片、SDRAM內存芯片、電源電路等共同實現系統的架構。
S3C2440是SAMSUNG公司一款基于ARM920T內核的芯片,其標準工作頻率為400MHz,它不僅提供了4通道的DMA控制器和IIS音頻接口,極大的方便了音頻數據的處理和傳輸,而且還提供LCD控制器,為液晶的開發提供了方便。UDA1341TS是Philips公司的一款經濟型音頻CODEC,該CODEC支持ⅡS總線數據格式,非常方便與S3C2440進行數據通信。存儲部分選用了64MB Nand Flash用來燒寫Linux系統和程序。本文主要就主要的音頻接口電路作如下分析。
IIS總線接口有3種模式,本系統為了方便以后擴展,采用傳輸和接受模式。在該模式下,IIS數據線通過雙通道DMA可同時接受和發送音頻數據,DMA服務請求由FIFO只讀寄存器自動完成。S3C2440的DMA控制器沒有內置的DMA存儲區域,通常在驅動程序中須為其分配DMA緩沖區大小,通過DMA直接將需要錄音的數據放在內存DMA緩沖區中[3]。圖3是S3C2440與UDA1341TS的連接原理圖。
電路連接時,S3C2440的IIS總線信號(包括時鐘和數據)分別與UDA1341的IIS信號相連,L3接口的引腳L3MODE、L3CLOCK和L3DATA分別與S3C2440的3個I/O口GPB2,GPB3,GPB4相連,VINL1/R1為音頻信號左右聲道輸入接口。電路圖如圖4所示。
2.3 軟件部分設計
軟件設計部分分為: Linux音頻程序設計、語音識別算法程序設計、QT圖形界面設計和系統移植。
2.3.1 Linux音頻程序設計
Linux音頻程序分為UDA1341驅動程序和錄音程序。
驅動程序主要是DSP設備驅動程序的設計,其主要包括:設備的初始化(完成對UDA1341采樣頻率、L3接口等初始化)、DMA緩沖區管理、設備的操作接口、中斷處理等。其中對設備的操作包括:打開open函數,關閉close函數,錄音read函數等。并通過file_operations結構體提供外部文件接口函數調用。
錄音程序主要是通過調用驅動程序提供的接口函數read()實現錄音,并以文件形式存儲到Linux文件系統中。
2.3.2 語音識別算法程序設計
語音識別算法程序包括:端點檢測函數endpoint()、特征參數提取函數mfcc()、距離匹配運算函數dtw()、數據建模model()函數等。這里只給出部分DTW算法程序。
float dtw_main(char *ffile1,char *ffile2,float tt,char *outffile) /*定義浮點型DTW函數,輸入為兩個MFCC參數文件ffile1,ffile2,tt為門限,outffile為生成的模板文件*/
{…… for(i=0;i for(j=0;j for (k=0;k total += ((x[i][k] - y[j][k]) * (x[i][k] - y[j][k])); //模板幀和測試幀之間的距離測度} Dist[i][j] = total; }} 2.3.3 QT圖形界面設計 圖形界面是本系統的主要操作界面,體現了與人與機器有好交互。首先呈現給用戶兩個功能選項——“訓練”與“識別”。如果是新用戶,需先選擇“訓練”建立自己的語音模板,考慮到安全性的問題,在建模之前需要進行身份驗證,然后選擇身份(照片)進行建模。如果已經建立好模板,就可以通過主界面的“識別”按鈕進行身份識別,并將識別結果顯示出來。程序流程圖如圖5所示。 2.3.4 系統移植 系統的移植包括Linux內核系統的裁剪,文件系統的建立,最后到鏡像文件的燒寫。 本系統的內核版本為Linux2.6.13,可以通過make menuconfig命令進行簡單裁剪,最重要的是把UDA1341驅動程序和LCD觸摸屏驅動程序編譯進內核。接下來是制作文件系統,本系統采用yaffs2文件系統:先用到busybox編譯出文件系統所需要的應用程序,然后建立必要的文件夾,更重要的是把QT/Embedded需要的庫文件和二進制程序文件一起編譯進去,最后通過uboot燒寫進ARM9芯片并調試通過。 3 實驗數據分析與結論 在實驗室先對一名男生和一名女生進行語音訓練建模,訓練的樣本為每人2組詞匯(“開門”和“芝麻開門”),每個詞匯錄音時間為3秒,訓練8次。建立模板后,開始識別實驗。 實驗一:該男生和女生分別進行喊話,每個人每組詞喊話20次,實驗結果如表1所示。 實驗二:組織非模版庫其他10個人,利用相同的喊話文本對系統進行識別測試,每人每組詞喊話1次,實驗結果如表2所示。 實驗結論:通過兩組實驗數據,可以得出系統有良好的識別效果。處于對門禁系統的安全性考慮,要求系統有一定的拒識率。由于DTW算法的局限性,我們最好選擇簡短的喊話文本建模,以降低拒識率,獲得良好的識別效果。 另外,由于噪聲的原因,訓練建模時應盡量讓聲音高于環境噪聲,且喊話時盡量在錄音時間段中間,這樣識別效果大有改善。 4 結束語 本文系統的介紹了嵌入式門禁系統的設計,即利用說話人的聲音特征來識別說話人。實驗證明,該門禁系統運行較穩定,錯誤率低,且具有計算速度快、操作簡單等方面的優點。 本文作者創新點:以面向安保產品的思路為出發點,將市面上最流行的ARM-LINUX技術與語音處理技術相結合,提出了一種智能門禁系統的新的解決方法,并借助于圖形操作界面展示出來。 參考文獻: [1] 吳黎明,王桂棠,吳正光.語音信號及單片機處理[M].北京:科學出版社,2007. [2] 張雄偉,陳亮,楊吉斌,等.現代語音處理技術及應用[M].北京:機械工業出版社,2003. [3] 李新峰,何廣生,趙秀文.基于ARM9的嵌入式Linux開發技術[M].北京:電子工業出版社,2008. [4] Blanchette J,Summerfield M.C++ GUI Programming with Qt3[M].America:Prentice Hall,2004.