鐘 豪 張常年 徐成波
(北方工業(yè)大學(xué)信息工程學(xué)院,北京 100144)
基于嵌入式Linux語音識(shí)別系統(tǒng)的設(shè)計(jì)
鐘 豪 張常年 徐成波
(北方工業(yè)大學(xué)信息工程學(xué)院,北京 100144)
該設(shè)計(jì)運(yùn)用三星公司的S3C2440,結(jié)合ICRoute公司的高性能語音識(shí)別芯片LD3320,進(jìn)行了語音識(shí)別系統(tǒng)的硬件和軟件設(shè)計(jì)。在嵌入式Linux操作系統(tǒng)下,運(yùn)用多進(jìn)程機(jī)制完成了對(duì)語音識(shí)別芯片、超聲波測距和云臺(tái)的控制,并將語音識(shí)別技術(shù)應(yīng)用于多角度超聲波測距系統(tǒng)中。通過測試,系統(tǒng)可以通過識(shí)別語音指令控制測量方向,無需手動(dòng)干預(yù),最后將測量結(jié)果通過語音播放出來。
語音識(shí)別;嵌入式Linux;人機(jī)交互;語音播放;超聲波測距
語言是人類傳播信息的重要手段,語音識(shí)別則是實(shí)現(xiàn)語音控制的關(guān)鍵技術(shù),自然語音的人機(jī)交互也是當(dāng)前的研究熱點(diǎn)和難點(diǎn),蘋果公司正在研制的iWatch中也增加了語音識(shí)別功能。采用嵌入式語音識(shí)別技術(shù)使得設(shè)備具有功耗低、使用簡便、靈活等優(yōu)點(diǎn),擺脫了復(fù)雜按鍵和按鈕的困擾,在服務(wù)機(jī)器人、智能家居及消費(fèi)電子等領(lǐng)域發(fā)揮著重要作用。
語音識(shí)別主要包括兩個(gè)階段[1]:訓(xùn)練階段和識(shí)別階段。在訓(xùn)練或識(shí)別過程中,都必須對(duì)輸入語音進(jìn)行預(yù)處理和特征提取。訓(xùn)練階段通過用戶輸入的若干次訓(xùn)練語音,經(jīng)過預(yù)處理和特征提取后得到特征參數(shù),最后通過特征參數(shù)建模,進(jìn)而建立訓(xùn)練語音的參考模型庫。而識(shí)別階段是將輸入語音的特征矢量參數(shù)和參考模型庫中的參考模型進(jìn)行相似性度量,然后把相似度最高的輸入特征矢量作為識(shí)別結(jié)果輸出,從而達(dá)到語音識(shí)別目的,如圖1所示。云臺(tái)相結(jié)合作為系統(tǒng)的機(jī)械執(zhí)行機(jī)構(gòu)。系統(tǒng)測量過程如下:首先根據(jù)語音指令控制兩自由度云臺(tái)的位姿,使超聲波探測器指向特定方向,然后開啟超聲波探測器,測量出前方障礙物距離,最后將測量結(jié)果轉(zhuǎn)化為可以播放的二進(jìn)制數(shù)據(jù)流,通過LD3320的播放功能完成數(shù)據(jù)的播放。
硬件電路主要包括語音識(shí)別部分、主控部分、超聲波測距部分和舵機(jī)控制部分,如圖2所示。處理器為三星公司的S3C2440,系統(tǒng)主頻最高可達(dá)533 MHz,支持SPI、I2C、UART等接口,能夠滿足控制系統(tǒng)的需求。主控芯片S3C2440通過SPI總線完成對(duì)語音識(shí)別模塊的讀寫操作,超聲波測距部分和舵機(jī)控制部分由處理器的GPIO進(jìn)行統(tǒng)一控制。
圖1 語音識(shí)別原理框圖
語音識(shí)別技術(shù)可分為:特定人識(shí)別和非特定人識(shí)別兩種。特定人識(shí)別是指需要對(duì)待識(shí)別人的語音進(jìn)行采集訓(xùn)練,識(shí)別對(duì)象為專門的人;非特定人識(shí)別是指識(shí)別對(duì)象為大多數(shù)用戶,一般要采集多個(gè)人的語音進(jìn)行錄音、訓(xùn)練和學(xué)習(xí),從而達(dá)到較高的識(shí)別率。
在實(shí)際應(yīng)用中,現(xiàn)代技術(shù)開發(fā)嵌入式語音識(shí)別有兩種實(shí)現(xiàn)方式:調(diào)入嵌入式語音開發(fā)包和外擴(kuò)語音識(shí)別芯片。本文的語音識(shí)別系統(tǒng)方案是以嵌入式處理器S3C2440為核心,外擴(kuò)非特定人語音識(shí)別芯片LD3320,并將超聲波測距模塊和
3.1 語音識(shí)別電路設(shè)計(jì)
為了使系統(tǒng)能夠識(shí)別操作人員發(fā)出的語音指令,設(shè)計(jì)中采用了由ICRoute公司設(shè)計(jì)生產(chǎn)的非特定人語音識(shí)別芯片LD3320,它集成了語音識(shí)別處理電路和一些外部電路,包括AD、DA轉(zhuǎn)換器、麥克風(fēng)接口、聲音輸出接口等[2],不需要外接任何的輔助芯片如Flash、RAM。在主控制器的控制下,可以識(shí)別出預(yù)先添加到識(shí)別列表中的內(nèi)容。設(shè)計(jì)中參考了ICRoute發(fā)布的LD3320數(shù)據(jù)手冊(cè),圖中LD3320的P0、P1、P2引腳通過SPI接口與嵌入式處理器相接,控制信號(hào)WRB、CSB、RSTB以及中斷返回信號(hào)引腳INTB與處理器S3C2440直接相連,如圖3所示。
圖3 語音模塊和核心板連接關(guān)系
3.2 超聲波測距和舵機(jī)控制電路設(shè)計(jì)
超聲波測距原理相對(duì)比較成熟,系統(tǒng)中采用超聲波測距模塊HC-SR04。該模塊有兩個(gè)TTL電平通信引腳,兼容3.3V電平。其中,控制端口Trig發(fā)一個(gè)10us以上的高電平,接收端口Echo將輸出與距離成正比的高電平信號(hào)。當(dāng)Echo有高電平輸出時(shí)就開啟處理器定時(shí)器,當(dāng)端口電平跳變?yōu)榈碗娖綍r(shí)關(guān)閉定時(shí)器,根據(jù)定時(shí)器的值可計(jì)算得到障礙物的距離。其中,控制端口Trig和接收端口Echo分別接至處理器的GPG9、GPG6引腳。
超聲波測距模塊的感應(yīng)角度小于15°,為了擴(kuò)大測距的感應(yīng)角度范圍,將超聲波測距模塊安裝在兩自由度云臺(tái)上,其中,舵機(jī)為SG90(9G),旋轉(zhuǎn)角度為180°。處理器通過GPB0和GPB1分別控制兩個(gè)舵機(jī)以實(shí)現(xiàn)云臺(tái)的旋轉(zhuǎn),以測量不同方向的障礙物,如圖4所示。
圖4 超聲波測距和舵機(jī)控制電路
系統(tǒng)軟件基于嵌入式Linux操作系統(tǒng),實(shí)現(xiàn)了語音識(shí)別、語音播放、超聲波測距和舵機(jī)控制等任務(wù),使用fock機(jī)制為每項(xiàng)任務(wù)分配獨(dú)立的進(jìn)程,使系統(tǒng)可以進(jìn)行多任務(wù)處理。針對(duì)不同功能模塊編寫了相應(yīng)的底層驅(qū)動(dòng)程序,為上層應(yīng)用程序提供了調(diào)用接口。
系統(tǒng)工作流程如下:處理器通過SPI總線對(duì)語音識(shí)別芯片LD3320進(jìn)行通用初始化,使語音識(shí)別芯片進(jìn)入循環(huán)識(shí)別模式,系統(tǒng)處理器反復(fù)啟動(dòng)語音識(shí)別過程。如果有識(shí)別結(jié)果,則根據(jù)識(shí)別作相應(yīng)處理后(比如播放某個(gè)聲音作為應(yīng)答)再啟動(dòng)下一個(gè)識(shí)別過程。處理器通過SPI總線讀取C5寄存器的識(shí)別結(jié)果并分析,將語音命令轉(zhuǎn)換為超聲波測距和舵機(jī)的控制信號(hào),完成多方位測距任務(wù),如圖5所示。
圖5 軟件流程圖
4.1 語音識(shí)別功能程序設(shè)計(jì)
語音識(shí)別芯片LD3320的特色是兼有語音識(shí)別和MP3播放的兩項(xiàng)功能,在功能切換的時(shí)候,必須進(jìn)行通用初始化,對(duì)芯片進(jìn)行一系列的設(shè)置[3]。
語音識(shí)別功能的驅(qū)動(dòng)程序工作流程為通用初始化à語音識(shí)別用初始化→寫入識(shí)別列表→開始識(shí)別→響應(yīng)識(shí)別中斷。為了提高識(shí)別成功率,在識(shí)別列表中增加了“垃圾關(guān)鍵詞”以吸收錯(cuò)誤的識(shí)別。上層應(yīng)用程序?yàn)檎Z音識(shí)別功能分配了單獨(dú)的進(jìn)程,通過ioctl()函數(shù)控制LD3320的工作狀態(tài),read()函數(shù)可以讀取識(shí)別結(jié)果。程序中使用select機(jī)制實(shí)現(xiàn)read()函數(shù)的非阻塞訪問[4]。同時(shí),設(shè)定select監(jiān)控超時(shí)時(shí)間,在超時(shí)后,重新初始化語音識(shí)別芯片LD3320,為下一次語音識(shí)別做準(zhǔn)備,如圖6所示。
圖6 語音識(shí)別功能程序流程圖
4.2 語音播放功能程序設(shè)計(jì)
LD3320支持MP3數(shù)據(jù)播放,程序中操作順序?yàn)椋和ㄓ贸跏蓟げシ拍J匠跏蓟ひ袅空{(diào)節(jié)à開始播放,并準(zhǔn)備好中斷響應(yīng)函數(shù),打開中斷允許位。在程序中,首先將數(shù)字0~9、“十”、“百”、“點(diǎn)”的語音MP3數(shù)據(jù)分別轉(zhuǎn)換為標(biāo)準(zhǔn)C語言數(shù)組格式文件,將該文件添加到工程中進(jìn)行統(tǒng)一編譯。然后把需要播放的距離數(shù)據(jù)進(jìn)行拆分,并對(duì)每一位進(jìn)行查表操作,得到相應(yīng)的語音數(shù)據(jù)。例如,將距離數(shù)據(jù)12.5拆分為:“1”、“十”、“2”、“點(diǎn)”、“5”。最后將查表得到的語音數(shù)據(jù)按從左到右的順序組合,并存儲(chǔ)到LD3320的播放數(shù)據(jù)存儲(chǔ)器,在即將播放完畢時(shí),芯片會(huì)發(fā)出中斷請(qǐng)求,在中斷響應(yīng)函數(shù)中連續(xù)寫入播放數(shù)據(jù),直到聲音數(shù)據(jù)播放完畢。
4.3 超聲波測距和云臺(tái)控制程序設(shè)計(jì)
超聲波測距功能的驅(qū)動(dòng)程序?qū)儆贚inux字符型驅(qū)動(dòng),利用ioctl()函數(shù)對(duì)相應(yīng)GPIO進(jìn)行時(shí)序控制,完成超聲波的發(fā)射和接收。在接收端口輸出高電平脈沖信號(hào)時(shí),觸發(fā)系統(tǒng)中斷并使用定時(shí)器計(jì)算得到高電平持續(xù)時(shí)間△T,根據(jù)公式(1)完成距離S的測量[5]。式中V為超聲波的傳播速度,常溫下超聲波在空氣中的傳播速度是340米/秒。在應(yīng)用程序中,可以通過read()函數(shù)讀取到所測量的距離值。
兩自由度云臺(tái)由兩個(gè)舵機(jī)組成,分別控制云臺(tái)水平和垂直方向的旋轉(zhuǎn)角度。在驅(qū)動(dòng)程序中,首先打開定時(shí)器PWM功能并設(shè)置定時(shí)周期,然后映射定時(shí)器中斷函數(shù),最后使能定時(shí)器,使定時(shí)器開始運(yùn)行。程序中根據(jù)實(shí)驗(yàn)者發(fā)出的語音指令,利用ioctl()函數(shù)控制定時(shí)器輸出兩路PWM信號(hào),分別控制兩個(gè)舵機(jī)的旋轉(zhuǎn)角度,最后將運(yùn)動(dòng)合成為云臺(tái)的位姿。
本文介紹了嵌入式語音識(shí)別技術(shù)在超聲波測距系統(tǒng)中的一種應(yīng)用以及實(shí)現(xiàn)方式,實(shí)驗(yàn)人員可以通過預(yù)先定義好的語音指令(例如:“開始測量”、“左上方”、“前方”)實(shí)現(xiàn)對(duì)系統(tǒng)的控制,并利用超聲波進(jìn)行距離測量。測量完成后,系統(tǒng)通過語音播放的方式將測量結(jié)果反饋給實(shí)驗(yàn)人員,完成人機(jī)交互,提高了用戶體驗(yàn)度。本系統(tǒng)具有易擴(kuò)展的優(yōu)點(diǎn),可以將其應(yīng)用到其它嵌入式控制系統(tǒng)中。
[1]蘇寶林.基于AVR單片機(jī)的語音識(shí)別系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(11):136-138.
[2]蘇鵬,周風(fēng)余,陳磊.基于STM32的嵌入式語音識(shí)別模塊設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011,11(002):42-45.
[3]洪家平.LD3320的嵌入式語音識(shí)別系統(tǒng)的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(2):47-49.
[4]楊鑄.Linux下C語音應(yīng)用編程[M].北京:北京航空航天大學(xué)出版社,2012.61-64.
[5]景旭文,李家寶.超聲波測距的研究[J].華東船舶工業(yè)學(xué)院學(xué)報(bào),1994.8(1):90-94.
Design of Speech Recognition System Based on Embedded Linux
Zhong Hao Zhang Changnian Xu Chengbo
(North China University of Technology,Beijing 100144)
tract】This paper fulfills the hardware and software design of the voice recognition system,using the Samsung’s S3C2440 and the high performance chip LD3320 designed by ICRoute.It uses multi-process mechanism to complete the speech recognition, ultrasonic ranging and PTZ control based on embedded Linux platform.At the same time,the system makes the speech recognition technology applied to multi-angle ultrasonic ranging.Through the actual testing,the system can control the direction of measurement by identifying the voice command,without manual intervention,and finally the measurement results play out through the voice.
words】speech recognition;embedded Linux;human-computer interaction;voice broadcast;ultrasonic ranging
鐘豪,男,福建人,碩士研究生,研究方向:信號(hào)與信息處理,嵌入式系統(tǒng)應(yīng)用。