基于USB存儲技術(shù)的電子語音記錄系統(tǒng)的設(shè)計(jì)方案
語音識別技術(shù)與嵌入式USB主機(jī)系統(tǒng)是目前電子設(shè)計(jì)領(lǐng)域的新興技術(shù),其應(yīng)用十分廣泛。本系統(tǒng)結(jié)合該兩項(xiàng)技術(shù),實(shí)現(xiàn)了一個(gè)嵌入式USB主機(jī)結(jié)構(gòu)的電子語音記錄系統(tǒng)。該系統(tǒng)充分利用了凌陽單片機(jī)強(qiáng)大的語音識別功能。并通過嵌入式USB主、從控制芯片SL811HS和相應(yīng)的軟件設(shè)計(jì),實(shí)現(xiàn)了語音信號的智能識別,并以嵌入式主機(jī)方式保存到USB存儲器。該系統(tǒng)在保證了嵌入式系統(tǒng)的小型化特點(diǎn)的同時(shí)又實(shí)現(xiàn)了文字的錄入功能。它即可以作為一個(gè)可靈活更換存儲媒體的電子語音記事本,也可以作為一個(gè)語音錄入器,將記錄在USB存儲器中的文本文件方便的轉(zhuǎn)移到PC機(jī)等其他文字處理設(shè)備進(jìn)行再處理,具有極高的功能可擴(kuò)展性。
1系統(tǒng)結(jié)構(gòu)與原理
圖1是系統(tǒng)的硬件結(jié)構(gòu)框圖。系統(tǒng)主要包括語音采集模塊、凌陽單16位片機(jī)SPCE061A、液晶顯示模塊、USB主機(jī)接口控制器和USB存儲器等幾個(gè)部分。
500)this.style.width=500;" border="0" />
該系統(tǒng)的功能是通過語音樣品采集訓(xùn)練、語音識別和USB存儲等三個(gè)環(huán)節(jié)來實(shí)現(xiàn)的。語音樣品采集時(shí),通過語音數(shù)據(jù)采集模塊內(nèi)的駐極話筒來采集語音。采集到的語音數(shù)據(jù)通過SPCE061A的MIC-IN端輸入,再經(jīng)過SPCE061A內(nèi)部A/D轉(zhuǎn)換器將其轉(zhuǎn)換成數(shù)字信號,并調(diào)用訓(xùn)練API函數(shù)對其進(jìn)行特征提取,并以樣品模板庫要求的格式保存到SPCE061A的FLASH中。音樣品采集訓(xùn)練時(shí)的提示信息和訓(xùn)練結(jié)果會在LCD上顯示。
語音識別時(shí),采集到的語音數(shù)據(jù)通過A/D轉(zhuǎn)換后,由語音識別API函數(shù)對其進(jìn)行特征提取,再與樣品模板庫中的語音樣品進(jìn)行特征匹配。匹配后的結(jié)果在LCD上顯示的同時(shí),交給USB主機(jī)接口控制器,進(jìn)入下一步的信息保存環(huán)節(jié)。
在USB主機(jī)接口控制器模塊和與之配合的USB協(xié)議和FAT文件系統(tǒng)的支持下,系統(tǒng)完成對USB設(shè)備的枚舉。并以文本文件的格式將上一環(huán)節(jié)所識別出來的信息保存到USB存儲器中,最終實(shí)現(xiàn)系統(tǒng)的全部功能。
2語音識別
語音識別屬于模式識別,它主要包括語音信號預(yù)處理、特征提取、語音模板庫、測度估計(jì)和識別決策等幾個(gè)模塊。與人的認(rèn)知過程很相似, 語音識別分為訓(xùn)練和識別兩個(gè)階段。在訓(xùn)練階段, 語音識別系統(tǒng)對語音樣本進(jìn)行學(xué)習(xí)。學(xué)習(xí)結(jié)束后,把學(xué)習(xí)的內(nèi)容存儲到模板庫中。在識別階段,把當(dāng)前輸入的語音在模板庫中查找最相近的結(jié)果,并進(jìn)行相應(yīng)的處理。語音識別的基本原理框圖如圖2所示[1]
500)this.style.width=500;" border="0" />
凌陽SPCE061A單片機(jī)具有上述的語音識別技術(shù)要求的硬件和軟件的全部功能。硬件方面,SPCE061A內(nèi)部有一個(gè)A/D轉(zhuǎn)換的輸入通道和自動增益控制電路AGC,能隨時(shí)跟蹤、監(jiān)視前置放大器輸出的音頻信號電平,使進(jìn)入A/D的信號保持在最佳電平。
由于SPCE061A的MIC-IN通道內(nèi)部做了AGC自動增益和濾波處理,語音的采集只需一個(gè)駐極話筒和少量的外圍阻容電路即可。相關(guān)電路如圖3所示。
500)this.style.width=500;" border="0" />
軟件方面,凌陽SPCE061A提供了一組專用的API函數(shù)來支持語音識別功能。這組API函數(shù)的功能、C語言調(diào)用格式、參數(shù)和返回值分別表述如下:
(1)訓(xùn)練函數(shù):Train(int WordID,int TrainMode),用于特定人語音識別的模型訓(xùn)練。
C語言調(diào)用格式:int BSR_Train(int WordID,int TrainMode)
參數(shù):WordID 命令序號,范圍從0x100到0x105,并且對于每組訓(xùn)練語句都是唯一的。
TrainMode:訓(xùn)練次數(shù),要求使用者在應(yīng)用之前訓(xùn)練一遍或兩遍。
返回值:訓(xùn)練成功返回0;沒有聲音返回-1;訓(xùn)練需要更多的語音數(shù)據(jù)返回-2;環(huán)境太吵返回-3;數(shù)據(jù)庫滿返回-4;兩次輸入命令不同返回-5;序號超出范圍返回-6。
(2)語音識別器初始化函數(shù):InitRecognizer(int AudioSource),用于語音識別器初始化。
C語言調(diào)用格式:void BSR_InitRecognizer(int AudioSource)
參數(shù):定義語音輸入來源。BSR_MIC通過MIC語音輸入。
BSR_LINE_IN是LINE_IN電壓模擬量輸入。
返回值:無。
(3)獲取識別結(jié)果函數(shù):GetResult(void)用于完成語音識別,并返回語音識別結(jié)果。
C語言調(diào)用格式:int BSR_GetResult(void)
參數(shù):無。
返回值:無命令識別出來返回0;識別器停止、未初始化或識別未激活返回-1;識別不合格返回-2;識別出命令返回命令的序號[2]。
3 USB主機(jī)接口
USB主機(jī)接口是整個(gè)系統(tǒng)的核心。它由USB主機(jī)接口芯片和USB協(xié)議以及FAT文件系統(tǒng)等構(gòu)成。本文主要介紹USB主機(jī)接口芯片的功能和電路設(shè)計(jì)。
USB主機(jī)接口芯片采用的是Cypress公司的SL811HS,它是一款嵌入式的USB主、從控制器芯片,它可以實(shí)現(xiàn)USB主機(jī)結(jié)構(gòu)中的總線接口層的功能。其功能模塊框圖如圖4所示。SL811HS內(nèi)部的串行接口引擎實(shí)現(xiàn)了主機(jī)與總線上數(shù)據(jù)的并串轉(zhuǎn)換任務(wù)。USB主機(jī)的端點(diǎn)也是這個(gè)芯片上的部分寄存器,主機(jī)通過向這些端點(diǎn)寫數(shù)據(jù),就可以將這些數(shù)據(jù)直接轉(zhuǎn)換為USB總線上的差模二進(jìn)制數(shù)據(jù),或者接收總線上的差模二進(jìn)制數(shù)據(jù),并存入端點(diǎn)寄存器,供主機(jī)取用[3]。
500)this.style.width=500;" border="0" />
CPU對SL811HS的狀態(tài)進(jìn)行檢測和控制的操作都是基于寄存器實(shí)現(xiàn)的,因此從硬件的角度來看,系統(tǒng)軟件的編程就是對SL811HS的一系列寄存器和緩沖區(qū)的讀/寫訪問。
由于系統(tǒng)只實(shí)現(xiàn)USB主機(jī)的功能,所以將控制SL811HS的主/從機(jī)工作方式的M/S管腳直接接地,使USB接口工作在主機(jī)方式。其中SL811HS的A0功能較為靈活,它為低電平時(shí)表示數(shù)據(jù)線上的數(shù)據(jù)是SL811HS的RAM空間的地址指針。而緊接著置位A0實(shí)現(xiàn)讀寫指定地址的RAM中數(shù)據(jù),從而實(shí)現(xiàn)數(shù)據(jù)的傳輸。SL811HS支持地址自增模式,即可以將連續(xù)地址單元中的內(nèi)容讀出傳送,而不用再次寫入地址指針,從而大大的提升數(shù)據(jù)傳輸?shù)挠行?。圖5為SL811HS的外圍電路及引腳定義。
500)this.style.width=500;" border="0" />
4系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)主要完成對語音的識別,并將識別的結(jié)果通過文件系統(tǒng)層提供的文件操作函數(shù)寫入到U盤。而U盤在接入到系統(tǒng)時(shí)需要完成對USB設(shè)備的枚舉,在確定為存儲設(shè)備后,又要進(jìn)行海量存儲設(shè)備的枚舉,以完成對U盤的各參數(shù)的提取。本文重點(diǎn)介紹系統(tǒng)的主設(shè)計(jì)流程。
語音的識別首先需要將待識別的命令特征存入語音識別模板庫,然后才是對相應(yīng)命令的辯識。這一部分的程序是在主程序中處理的,其流程如圖6 所示。
500)this.style.width=500;" border="0" />
程序在初始化工作環(huán)境后,判斷FLASH中是否已經(jīng)存在語音特征模型。如果沒有,就需要擦除FLASH,然后通過訓(xùn)練得到命令的語音特征模型,并存入FLASH中,并修改標(biāo)記說明FLASH中已經(jīng)有命令的語音特征模型了。通過這樣的處理后語音特征模型才會在每次系統(tǒng)重新上電后不需要重新訓(xùn)練采集。在識別階段,如果有命令與語音模型庫中的命令相匹配,則返回相應(yīng)命令代號,通過switch-case語句就可以對相應(yīng)命令進(jìn)行處理。
5結(jié)束語
本系統(tǒng)設(shè)計(jì)充分利用了凌陽單片機(jī)SPCE061A的語識別功能,使所設(shè)計(jì)系統(tǒng)的集成度和性能有很大提高。由于采用了USB主機(jī)結(jié)構(gòu)實(shí)現(xiàn)USB海量存儲的嵌入式系統(tǒng)設(shè)計(jì)方案,本設(shè)計(jì)在系統(tǒng)功能擴(kuò)展上具有極大的潛力,有很好的應(yīng)用前景和科研價(jià)值。