|
引 言 隨著多媒體的發(fā)展,音樂播放器作為消費(fèi)類電子產(chǎn)品,其不斷增長(zhǎng)的消費(fèi)要求促使生產(chǎn)廠家采用更先進(jìn)的技術(shù)來提高自己產(chǎn)品的競(jìng)爭(zhēng)力。近幾年來語音識(shí)別技術(shù)迅速發(fā)展,專門用于語音識(shí)別的芯片層出不窮,如凌陽大學(xué)計(jì)劃推出的SPCE061A單片機(jī),性價(jià)比高,應(yīng)用廣泛。結(jié)合語音識(shí)別技術(shù)與當(dāng)前盛行的嵌入式技術(shù),設(shè)計(jì)一款不僅具有傳統(tǒng)的按鍵控制功能且能控制語音的音樂播放器,具有一定的市場(chǎng)前景。 1 系統(tǒng)整體方案設(shè)計(jì) 音頻解碼方式分為硬件解碼和軟件解碼,硬件解碼根據(jù)在系統(tǒng)硬件的安排又有單芯片和雙芯片形式之分。雙芯片形式在于分離解碼芯片與控制芯片,解碼效果出色,但價(jià)格昂貴;單芯片形式為簡(jiǎn)化結(jié)構(gòu)犧牲了音質(zhì),但性價(jià)比高。軟件解碼功能實(shí)現(xiàn)起來比較靈活,成本低,但對(duì)微控制器的運(yùn)行速度和內(nèi)存要求較高。兩種解碼方式皆有利弊。本文提出了一個(gè)比較折中的方案,即采用ARM7微處理器的單芯片形式和軟件解碼方式,使性能優(yōu)化,同時(shí)符合市場(chǎng)需求。此外考慮到語音識(shí)別需實(shí)時(shí)響應(yīng),可采用語音識(shí)別專用芯片來完成,同時(shí)也保證了識(shí)別率。 基于以上分析,主機(jī)采用華邦公司生產(chǎn)的W90P710套件,從機(jī)采用凌陽公司的 SPCE061A作為語音識(shí)別芯片。基于W90P710的智能音樂播放器框架如圖1所示。
播放器的運(yùn)行流程是:用戶打開機(jī)器首先進(jìn)入功能界面,功能界面分音樂模式、錄音模式、訓(xùn)練模式和文件管理。若打開機(jī)器時(shí)用戶沒有語音庫(kù),則只能用按鍵控制機(jī)器,同時(shí)LCD屏提示用戶進(jìn)入訓(xùn)練模式訓(xùn)練語音命令而獲得自己的語音庫(kù);若訓(xùn)練成功則可以語音控制播放器進(jìn)入各個(gè)模式。進(jìn)入音樂模式,在播放音樂時(shí),LCD屏顯示歌曲的基本信息,如歌名、演唱者、專輯名等,同時(shí)可以按鍵和語音控制音樂的播放,如上一首、下一首、暫停、播放、退出等。在其他3種模式下,只能靠按鍵控制。 2 硬件設(shè)計(jì) 按照模塊化設(shè)計(jì)原則,將整個(gè)智能音樂播放器分成主控模塊、語音識(shí)別模塊、音頻模塊、顯示模塊和鍵盤。 2.1主、從機(jī)控制器 W90P710主機(jī)是系統(tǒng)控制和管理的核心,實(shí)現(xiàn)音樂播放,錄音,音樂文件和錄音文件的存儲(chǔ)、刪除、顯示,以及與單片機(jī)的串口通信等功能。該處理器以ARM7TDMI為內(nèi)核,具有以下特性: ①片內(nèi)集成LCD控制器,方便實(shí)現(xiàn)顯示功能; ②外部總線接口具有豐富的片選資源,可擴(kuò)展NAND Flash等大容量存儲(chǔ)設(shè)備; ③具有4個(gè)串口,可方便實(shí)現(xiàn)與凌陽單片機(jī)的串口通信及程序調(diào)試。 同時(shí),W90P710主頻能達(dá)到80 MHz,功耗低,有著十分優(yōu)秀的性價(jià)比,特別適用于系統(tǒng)控制領(lǐng)域。 系統(tǒng)的語音識(shí)別芯片為SPCE061A,是凌陽科技公司推出的針對(duì)語音識(shí)別領(lǐng)域的16位單片機(jī),具有體積小、功耗低、性能好且易于開發(fā)等特點(diǎn)。該芯片使用凌陽音頻編碼SACM_S240方式(2.4 kbps),能容納210 s的語音數(shù)據(jù);具備串行設(shè)備接口;7通道10位電壓A/D轉(zhuǎn)換器(ADC)和1個(gè)單通道的聲音專用A/D轉(zhuǎn)換器。聲音A/D轉(zhuǎn)換器輸入通道,內(nèi)置麥克風(fēng)放大器和自動(dòng)增益控制(AGC)電路。語音模式成功啟動(dòng)或處于訓(xùn)練模式下,單片機(jī)自行采集語音信號(hào)并進(jìn)行識(shí)別,識(shí)別結(jié)果通過串行接口傳給主機(jī)。 2.2 音頻模塊 音頻模塊在整個(gè)系統(tǒng)中起著舉足輕重的作用,不但要實(shí)現(xiàn)錄音功能,而且還需播放MP3音樂、提示音和錄音文件。本系統(tǒng)的音頻接口由 AC97音頻接口總線接口和ALC203音頻編解碼器組成。ALC203是Realtek公司推出的一款經(jīng)濟(jì)型音頻編解碼器,它通過AC97數(shù)字音頻接口實(shí)現(xiàn)音頻信號(hào)的數(shù)字化處理。圖2是關(guān)于音頻編解碼的具體實(shí)現(xiàn)電路,ALC203的2、3腳接1個(gè)24.576 MHz的晶振;5、6、7、10腳和華邦W90P710的AC97數(shù)字音頻接口AC97-DATO、AC97-BCLK、AC97-DATI、AC97- SYNC相連;MIC1和MIC2接麥克風(fēng)兩端;HP-OUT-L和HP-OUT-R腳分別通過一個(gè)有極電容接到耳機(jī)插口處;GPIO1和GPIO0可以硬件調(diào)節(jié)音量,但本設(shè)計(jì)采用軟件進(jìn)行音量調(diào)節(jié)。
2.3其他模塊設(shè)計(jì) LCD顯示屏選用的是AUO公司的 A030DL01(320×240)工業(yè)級(jí)液晶屏。該液晶屏的彩色格式為RGB656格式,彩色色深可達(dá)到64K色,顯示文件名和歌曲基本信息,同時(shí)因屏幕空間較大,可添加彩色背景畫面。漢字顯示是通過添加字庫(kù)軟件實(shí)現(xiàn)的。 鍵盤有4×1個(gè)按鍵,方便用戶控制播放器,同時(shí)也保證在語音模式不能正確工作時(shí)可以按鍵控制機(jī)器。 3 軟件設(shè)計(jì) 為了使程序開發(fā)更加容易、便于維護(hù),同時(shí)能夠提高系統(tǒng)的穩(wěn)定性和可靠性,采用嵌入式操作系統(tǒng)μClinux。播放器工作時(shí),既要響應(yīng)鍵盤又要響應(yīng)語音命令,而語音命令由凌陽單片機(jī)識(shí)別出通過串口傳給主機(jī),因而系統(tǒng)軟件的設(shè)計(jì)是采用消息循環(huán)的事件驅(qū)動(dòng)模式。對(duì)輸入設(shè)備,即鍵盤和串口進(jìn)行輪詢后,若有輸入,則按數(shù)據(jù)隊(duì)列原理,遵循先來先響應(yīng)的原則。 在引言中曾提及該播放器進(jìn)入功能界面后,可選擇音樂模式、錄音模式、訓(xùn)練模式和文件管理任一菜單。鑒于篇幅,這里僅說明主從機(jī)通信方式和音樂模式。 3.1通信方式 在功能模式、音樂模式、訓(xùn)練模式這3個(gè)語音工作的模式下,系統(tǒng)采用主從式通信方式,并由RS232總線實(shí)現(xiàn)。主機(jī)采用查詢工作方式,從機(jī)采用中斷工作方式。通信總是從主機(jī)開始,主機(jī)每進(jìn)入到這3個(gè)模式就通過串口給從機(jī)發(fā)一個(gè)相應(yīng)的命令字,從機(jī)即打開錄音設(shè)備并啟動(dòng)語音辨識(shí)器開始識(shí)別,并將識(shí)別結(jié)果再次通過串口返回給主機(jī)。除非主機(jī)呼叫從機(jī),從機(jī)在其他情況下不能主動(dòng)向總線發(fā)送信息。 3.2音樂模式 音樂播放是整個(gè)音樂播放器的核心部分,可以播放MP3歌曲,顯示該歌曲的基本信息,并同時(shí)對(duì)鍵盤和串口進(jìn)行輪詢。若有輸入,則按先來先響應(yīng)的原則作出回應(yīng)。 3.2.1 MP3音頻解碼 MP3是MPEG-1音頻層III(layer III)的簡(jiǎn)稱。MPEG音頻(IOS/IEC11172-3)是目前普遍應(yīng)用的音頻壓縮標(biāo)準(zhǔn),其中層III的算法最為復(fù)雜,但壓縮比最大,效果好,在低碼率條件下基本能達(dá)到CD的音質(zhì)效果。MP3解碼過程是將MP3編碼數(shù)據(jù)進(jìn)行霍夫曼解碼,然后逆量化到實(shí)際的頻域幅值,最后經(jīng)過IMDCT變換和濾波器組完成頻域到時(shí)域的變換,如圖3所示。這里不詳細(xì)介紹其解碼細(xì)節(jié),只列出幾個(gè)重要的MP3解碼接口函數(shù)。
MPEGDEC_STREAM*MPEGDEC_open(char*filename,MPEGDEC_CTRL*ctrl); 功能描述:打開MPEG音頻文件。 參數(shù):filename為待打開的音頻文件,ctrl為控制數(shù)據(jù)解碼信息的結(jié)構(gòu)體。 返回值:打開成功,則返回包含數(shù)據(jù)流信息和解碼信息的結(jié)構(gòu)體指針;失敗,則返回NULL。 void MPEGDEC_close(MPEGDEC_STREAM*mpds); 功能描述:關(guān)閉MPEG音頻文件。 參數(shù):mpds指向待關(guān)閉的音頻文件。 無返回值。 unaigned long MPEGDEC_decode_frame(MPEGDEC_STREAM*mpds,short*pcm[MPEGDEC_MAX_CHANNELS]); 功能描述:為當(dāng)前打開的音頻文件的一幀解碼。 輸入:mpds指向打開的音頻文件。 輸出:pcm[]存放解碼后的16位音頻數(shù)據(jù);pcm[0]中存放單聲道或左聲道或聲道1的數(shù)據(jù);pcm[1]中存放右聲道或聲道2的數(shù)據(jù)。 返回值:返回解碼一幀的音頻數(shù)據(jù)數(shù)目;返回MPEG-DEC_ERR_EOF,則說明當(dāng)前幀是最后一幀;返回MPEG-DEC_ERR_BADFRAME,則說明該幀已損壞。 3.2.2 歌曲基本信息結(jié)構(gòu)體 按照MP3的ID3 V1.0標(biāo)準(zhǔn)定義,MP3文件的最后128字節(jié)用來存放標(biāo)簽頭、歌曲名、演唱者等信息。為了在LCD屏上顯示當(dāng)前播放歌曲的基本信息,給出了一個(gè)結(jié)構(gòu)體來讀取并存放這些信息。這個(gè)結(jié)構(gòu)體定義如下:
3.2.3播放主流程 當(dāng)用戶選中歌曲進(jìn)入播放界面時(shí),ARM7主機(jī)首先通過串口給單片機(jī)發(fā)一個(gè)命令字0x01,通知從機(jī)進(jìn)入識(shí)別“播放器”這組命令的函數(shù)。從機(jī)接收到命令后,首先判斷“播放器”這組命令是否已經(jīng)訓(xùn)練。若訓(xùn)練,則返回0x04,同時(shí)播放器的語音模式啟動(dòng)成功;若未訓(xùn)練,則返回0x06,LCD屏顯示提醒用戶訓(xùn)練該庫(kù);若從機(jī)在規(guī)定時(shí)間內(nèi)(因?qū)崟r(shí)性要求,這里“規(guī)定時(shí)間”指200 ms)返回其他值或未返回值,則播放器的語音模式啟動(dòng)失敗。若成功啟動(dòng)語音模式,音樂是分幀解碼后播放,在幀-幀循環(huán)中,主機(jī)需查詢鍵盤和串口,來實(shí)現(xiàn) “上一首”、“下一首”、“播放”、“暫停”、“退出”和調(diào)節(jié)音量的功能。若語音模式啟動(dòng)失敗,則只需查詢鍵盤。每次接收到“退出”命令時(shí),主機(jī)在退出音樂模式前需通過串口發(fā)送0x05給單片機(jī),通知單片機(jī)同步退出該模式;單片機(jī)接收到命令后,需返回0x04告知主機(jī)已退出。播放的主流程如圖4所示。關(guān)于語音命令如何訓(xùn)練,可見參考文獻(xiàn)[5],這里不再贅述。
4 實(shí)驗(yàn)結(jié)果 以W90P710開發(fā)套件+凌陽SPCE061A為硬件,采用嵌入式操作系統(tǒng)μClinux,在實(shí)驗(yàn)室安靜和嘈雜的情況下(安靜時(shí)室內(nèi)噪聲為50 dB,嘈雜時(shí)為60 dB),測(cè)試播放器語音模式的工作效率。在測(cè)試語音模式的工作效率前,先進(jìn)行了按鍵測(cè)試,測(cè)試通過率為100%,且音樂播放流暢,響應(yīng)滿足實(shí)時(shí)性要求。 要使語音模式有效工作,首先需訓(xùn)練“播放器”的語音命令,即“播放”、“暫停”、“上一首”、“下一首”、“退出”這5個(gè)命令。訓(xùn)練時(shí)環(huán)境至關(guān)重要,必須處于實(shí)驗(yàn)室安靜環(huán)境下。訓(xùn)練的5個(gè)命令并不一定是上述5個(gè)詞,只要表達(dá)出相應(yīng)意思即可,如“上一首”、“下一首”命令直接訓(xùn)練成“上”、“下”。筆者在實(shí)驗(yàn)室安靜環(huán)境下訓(xùn)練后,分別在安靜、嘈雜的環(huán)境下進(jìn)行語音測(cè)試,結(jié)果分別為96.8%、77.8%。實(shí)驗(yàn)結(jié)果顯示,在安靜環(huán)境下,語音通過率很高;在嘈雜環(huán)境下,語音通過率稍微低些,但可以和按鍵同時(shí)使用。 結(jié)語 本文設(shè)計(jì)了一款由主機(jī)W90P710、從機(jī)凌陽SPCE061A 單片機(jī)及其外圍電路組成的智能音樂播放器。硬件上重點(diǎn)介紹了音頻模塊;軟件上簡(jiǎn)單說明了MP3解碼過程及給出了相關(guān)接口函數(shù),并詳細(xì)講述了播放主流程。最后在測(cè)試了按鍵能夠?qū)崟r(shí)、正確響應(yīng)的基礎(chǔ)上,又分別在安靜、嘈雜的環(huán)境下,進(jìn)行了語音模式的響應(yīng)測(cè)試,實(shí)驗(yàn)結(jié)果說明,該播放器不僅能按鍵控制也能語音控制,且語音控制效果良好。 參考文獻(xiàn) 1. 周立功,等.ARM嵌入式系統(tǒng)軟件開發(fā)實(shí)例(一)[M].北京:北京航空航天大學(xué)出版社,2004. 2. Winbond W90P710 DataSheet[EB/OL].http://cn.alldatasheet.com/datas ... /W90P710.html.2006. 3. 羅亞非.凌陽16位單片機(jī)應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2003. 4. 馬小虎,張明敏,嚴(yán)華明.多媒體數(shù)據(jù)壓縮標(biāo)準(zhǔn)及實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,1996. 5. 李晶皎.嵌入式語音技術(shù)及凌陽16位單片機(jī)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2003. 作者:東南大學(xué) 許小麗 章國(guó)寶 來源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》 2009(10) |