王 磊,何 勇,張 宇
(貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴陽 550000)
語言是人類溝通的橋梁,可以很輕松地達(dá)到信息的交互。如今語音識(shí)別技術(shù)已經(jīng)是世界上最熱門和最具發(fā)展前景的技術(shù)之一,通過這項(xiàng)技術(shù)可以讓語言成為人類和機(jī)器溝通的橋梁,可以使人類的日常生活操作變得更加簡單和方便。智能語音控制系統(tǒng),采用LD3320[1]芯片,主要通過語音識(shí)別技術(shù)實(shí)現(xiàn)在家庭中對(duì)電燈、風(fēng)扇、窗簾等電器的開關(guān)控制,并且伴隨識(shí)別結(jié)果有語音播放,達(dá)到真正的智能人機(jī)交互。
基于LD3320的智能語音控制系統(tǒng)框架如圖1所示。系統(tǒng)主要由電源模塊、主控制器、識(shí)別模塊、控制模塊、外部存儲(chǔ)器、語音輸入和輸出等部分組成。語音輸入模塊將采集到的語音信息送入LD3320處理芯片進(jìn)行識(shí)別,LD3320將識(shí)別結(jié)果返回給主控模塊,同時(shí)從外部存儲(chǔ)器中取出語音數(shù)據(jù)進(jìn)行語音輸出播放,此時(shí)主控模塊分析識(shí)別結(jié)果后,利用控制模塊達(dá)到最終控制家電的效果。外部存儲(chǔ)器中的數(shù)據(jù),可在設(shè)備運(yùn)行過程中實(shí)時(shí)更改,利用編寫的上位機(jī)通過串口將數(shù)據(jù)發(fā)往主控模塊,主控模塊將數(shù)據(jù)轉(zhuǎn)存至外部存儲(chǔ)器進(jìn)行存放。
圖1 智能語音控制系統(tǒng)框架圖
智能語音控制系統(tǒng)中的硬件電路主要包括主控制器和語音識(shí)別兩個(gè)核心模塊,語音采集成功后進(jìn)入語音識(shí)別模塊,LD3320進(jìn)行識(shí)別后將結(jié)果返回到主控模塊,外部存儲(chǔ)器模塊的設(shè)計(jì)主要是將返回的結(jié)果進(jìn)行輸出播放。由于控制模塊與其它模塊供電電壓不同,本文設(shè)計(jì)的電源模塊就分成兩路進(jìn)行供電。語音輸入和輸出模塊的設(shè)計(jì),優(yōu)化了語音采集的性能,實(shí)現(xiàn)了語音播放的功能。最終將控制請(qǐng)求命令發(fā)送給控制模塊對(duì)設(shè)備進(jìn)行控制操作。
由于整個(gè)語音控制系統(tǒng)是嵌入墻體內(nèi),類似普通的插座,所以它的供電采用HLK-PM01[2]電源模塊將220 V的交流電轉(zhuǎn)化為5 V直流電,一路用來驅(qū)動(dòng)SRD-05VDC-SL-C[3]繼電器,另一路經(jīng)過ASM-1117[4]穩(wěn)壓芯片將5 V轉(zhuǎn)為3.3 V電壓供主控模塊、識(shí)別模塊、和外部存儲(chǔ)器使用。
用STC10L08XE芯片作為智能語音控制系統(tǒng)的MCU,它是宏晶科技公司生產(chǎn)的機(jī)器周期為1 T的單片機(jī),SRAM為512K,片內(nèi)RAM為8 K;指令代碼兼容傳統(tǒng)8051單片機(jī),屬于增強(qiáng)型8051 MCU,速度比傳統(tǒng)的快8~12倍,有EEPROM[5]功能,2個(gè)16位定時(shí)器,MCU操作電壓范圍:2.4~3.6 V。
主控制器是控制設(shè)備開關(guān)的核心電路,主要處理經(jīng)過LD3320識(shí)別后的語音數(shù)據(jù)及與外部存儲(chǔ)器模塊實(shí)現(xiàn)語音播放。最終主控制器分析識(shí)別結(jié)果后將控制指令發(fā)送給控制模塊。
語音識(shí)別模塊采用ICRoute公司設(shè)計(jì)生產(chǎn)的LD3320芯片,該芯片集成語音識(shí)別處理器、A/D和D/A轉(zhuǎn)換器、語音輸入接口、語音輸出接口等外部電路,具有快速而穩(wěn)定的優(yōu)化算法,完成語音識(shí)別,不需要事先訓(xùn)練和錄音,只需要把識(shí)別的關(guān)鍵詞語以字符串的形式傳送進(jìn)芯片,即可以在下次識(shí)別中立即生效,識(shí)別準(zhǔn)確率高達(dá)95%。芯片及外圍電路如圖2所示。
圖2 識(shí)別模塊電路圖
該模塊采用語音識(shí)別ASR[6]技術(shù),該技術(shù)是非特定人語音識(shí)別技術(shù),不支持不同人的語音區(qū)分識(shí)別。這種識(shí)別技術(shù)的原理是通過某種數(shù)學(xué)模型,將操作者說出的語音信息,通過頻譜轉(zhuǎn)換為語音特征提取出來,然后與設(shè)定好的關(guān)鍵詞條目進(jìn)行一一匹配,這種匹配也只是用概率性來衡量,在LD3320上最多能匹配出4種結(jié)果,這4種結(jié)果分別是最優(yōu)匹配結(jié)果、候選結(jié)果1、候選結(jié)果2、候選結(jié)果3。通常開發(fā)只取最優(yōu)結(jié)果,其他答案做參考。但是考慮實(shí)際開發(fā)和應(yīng)用效果,這里將這4種結(jié)果加以分析,選出結(jié)果相同最多的那個(gè)結(jié)果。
簡單來說,這種識(shí)別技術(shù)不關(guān)心關(guān)鍵詞的內(nèi)容,只關(guān)心語音的特征,所以不能分辨不同人的話語。最多可識(shí)別的關(guān)鍵詞個(gè)數(shù)為50個(gè),且每個(gè)關(guān)鍵詞的長度不超過10個(gè)漢字或79個(gè)字節(jié)的標(biāo)準(zhǔn)普通話的漢語拼音(小寫),每兩個(gè)字(漢語拼音)之前用一個(gè)空格符相隔,如“kaideng”。
控制模塊采用SRD-05VDC-SL-C繼電器來控制家電的開關(guān),它可以控制10 A 250 VAC、10 A 30 VDC的負(fù)載,線圈工作電壓為5 V直流。
采用單片機(jī)引腳控制NPN型三極管S8050的導(dǎo)通,從而起到控制繼電器線圈兩端電壓的作用,并且繼電器線圈端需要加一個(gè)二極管,防止產(chǎn)生反向感應(yīng)電動(dòng)勢(shì)擊壞電路零件,起到保護(hù)的功能。
外部存儲(chǔ)器采用W25Q32DW外部Flash[7]存儲(chǔ)芯片,存儲(chǔ)空間為4 MB,工作電壓為3.3 V,通過SPI[8]通信方式與單片機(jī)交互。
使用此芯片的主要目的是配合整個(gè)智能語音識(shí)別系統(tǒng)的語音輸出功能,即播放語音文件,如MP3[9]。同時(shí)也保存與主控制器和語音識(shí)別模塊的一些配置信息,實(shí)現(xiàn)掉電數(shù)據(jù)不丟失。
使用上位機(jī)通過串口與主控制器交互,將需要播放的一些語音數(shù)據(jù)和配置信息逐一發(fā)送給主控制器,主控制器再將這些數(shù)據(jù)通過SPI的方式轉(zhuǎn)存至W25Q32DW存儲(chǔ)芯片,通信過程中用到自定義的協(xié)議,保證數(shù)據(jù)傳輸?shù)耐暾浴?/p>
在系統(tǒng)需要播放語音文件時(shí),由主控制器將存儲(chǔ)器中的語音數(shù)據(jù)逐一取出,然后不斷寫入LD3320語音識(shí)別模塊的寄存器中,識(shí)別模塊經(jīng)過自動(dòng)處理,以模擬信號(hào)的方式輸出至語音輸出接口。
語音輸入模塊采用駐極體麥克風(fēng)[10],這種麥克風(fēng)體積小,結(jié)構(gòu)簡單,成本低,電聲性能好,得到很廣泛的應(yīng)用,在設(shè)計(jì)時(shí)加一些簡單的外圍電路即可。
語音輸出模塊采用0.5 W內(nèi)磁式揚(yáng)聲器,該揚(yáng)聲器體積小,漏磁少,失真比較小,成本低,適合該系統(tǒng)應(yīng)用。
將該揚(yáng)聲器與LD3320的SPON和SPOP兩個(gè)引腳相連,語音識(shí)別模塊在需要播放語音時(shí)就將信號(hào)發(fā)送至這兩個(gè)引腳,從而經(jīng)過揚(yáng)聲器達(dá)到最終語音播放的功能。
具有語音識(shí)別、語音播放、智能控制、與上位機(jī)實(shí)時(shí)交互等功能的智能語音控制系統(tǒng),其寫數(shù)據(jù)過程由上位機(jī)通過串口將語音數(shù)據(jù)和配置信息打包至自定義協(xié)議幀中,與主控制器進(jìn)行數(shù)據(jù)交互,主控制器將數(shù)據(jù)轉(zhuǎn)存至外部存儲(chǔ)器W25Q32DW中,在需要時(shí),主控制器再將數(shù)據(jù)取出;其語音識(shí)別與處理輸出過程由駐極體麥克風(fēng)采集到的語音信息傳送至LD3320語音識(shí)別芯片加以識(shí)別處理,返回主控制器識(shí)別結(jié)果,根據(jù)識(shí)別結(jié)果操作外部存儲(chǔ)器W25Q32DW,將對(duì)應(yīng)的語音數(shù)據(jù)從存儲(chǔ)器中取出,并放入LD3320的寄存器中,LD3320會(huì)自動(dòng)播放該語音。與此同時(shí),主控制器操作相應(yīng)引腳電平,配合控制模塊電路實(shí)現(xiàn)對(duì)家電的控制,達(dá)到控制與語音反饋的目的。圖3為智能語音控制系統(tǒng)的軟件框圖。
圖3 軟件框圖
麥克風(fēng)增益調(diào)整:調(diào)整LD3320芯片0x35寄存器的數(shù)值大小。
麥克風(fēng)靈敏度調(diào)整:調(diào)整LD3320芯片0xb3寄存器的數(shù)值大小。
揚(yáng)聲器音量調(diào)整:調(diào)整LD3320芯片0x8e寄存器的數(shù)值大小。
這3個(gè)參數(shù)的調(diào)整,直接影響LD3320芯片的識(shí)別準(zhǔn)確度,所以需要根據(jù)實(shí)際情況做相應(yīng)的調(diào)整。
由于這些數(shù)據(jù)需要保證在操作者修改后,不論掉電與否,都不能變,則每次主控制器與上位機(jī)交互時(shí)若修改了這些數(shù)據(jù),立即將修改后的數(shù)據(jù)存入W25Q32DW中保存,在每次重啟系統(tǒng)時(shí),先將這些數(shù)據(jù)讀出來再進(jìn)行語音識(shí)別操作。
LD3320最多只支持50個(gè)識(shí)別關(guān)鍵詞,那么也就是說最多也只能支持50條不同語音的播放,每個(gè)語音文件在W25Q32DW中都有字符開始位置和結(jié)束位置,占一定長度,此時(shí)將W25Q32DW芯片的前400個(gè)字節(jié)用來存放每個(gè)語音文件的開始和結(jié)束位置,從第401個(gè)字節(jié)開始至第2 900個(gè)字節(jié),存放最多50個(gè)固定字符長度為50個(gè)字節(jié)的關(guān)鍵詞。從第4097個(gè)字節(jié)開始存放實(shí)際需要播放的語音數(shù)據(jù)。
在初始化LD3320完成后,需要對(duì)語音識(shí)別芯片寫入識(shí)別關(guān)鍵詞列表,此時(shí)將之前存入的關(guān)鍵詞逐一取出,并寫入LD3320中。
在LD3320工作過程中,不管是否識(shí)別成功都會(huì)產(chǎn)生一個(gè)中斷,在播放語音文件時(shí)也會(huì)有3種情況使LD3320產(chǎn)生中斷,第一種:聲音數(shù)據(jù)已經(jīng)全部播放完畢;第二種:聲音數(shù)據(jù)已經(jīng)全部發(fā)送至LD3320完畢;第三種:聲音數(shù)據(jù)暫時(shí)要用完,需要向LD3320放入新的數(shù)據(jù)。而LD3320產(chǎn)生的這些中斷,都只由一個(gè)引腳輸出,則MCU需要分析和處理這7幾種中斷情況。
如果識(shí)別正確,從LD3320可以得到1至4種結(jié)果,在此比較得到的幾種結(jié)果,選取唯一的、二者較靠前的、多者相同最多的,作為最終MCU選擇的結(jié)果,這個(gè)最終結(jié)果,是之前存放識(shí)別關(guān)鍵詞的順序序號(hào),例如,第一個(gè)存放的關(guān)鍵詞是“kaideng”,第一個(gè)存放的語音文件對(duì)應(yīng)是播放“燈已打開”的人聲,則有可能的最終識(shí)別結(jié)果是1,代表識(shí)別到“kaideng”這個(gè)關(guān)鍵詞。
若最終識(shí)別結(jié)果是第一個(gè)關(guān)鍵詞,則從W25Q32DW中取出第一個(gè)語音文件在存儲(chǔ)器中的起始位置和結(jié)束位置,采用W25Q32DW的快速讀取方式,逐一將這個(gè)范圍內(nèi)的數(shù)據(jù)取出并寫入LD3320,LD3320將數(shù)據(jù)輸出至揚(yáng)聲器。
提前設(shè)置好MCU與對(duì)應(yīng)的控制模塊的控制引腳,則根據(jù)最終識(shí)別結(jié)果的號(hào)碼,控制相應(yīng)引腳的電平高低,再配合控制模塊達(dá)到控制家電的效果。
與上位機(jī)交互協(xié)議幀格式如表1所示。
表1 協(xié)議幀格式
幀頭:0xe8(固定),1個(gè)字節(jié);
功能碼:0x01-0x05,1個(gè)字節(jié);
數(shù)據(jù)長度域:由數(shù)據(jù)域字節(jié)數(shù)決定,2個(gè)字節(jié);
數(shù)據(jù)域:存放要發(fā)送的數(shù)據(jù),字節(jié)數(shù)不定;
CRC校驗(yàn)域:存放幀頭至數(shù)據(jù)域最后一個(gè)字節(jié)的16位CRC循環(huán)冗余校驗(yàn)碼,2個(gè)字節(jié);
幀尾:0xe6(固定),1個(gè)字節(jié)。
上位機(jī)與主控制器交互總共分5種功能:
1) 0x01:發(fā)送當(dāng)前語音文件在W25Q32DW中的起始、結(jié)束位置和識(shí)別關(guān)鍵詞。起始位置和結(jié)束位置分別占4個(gè)字節(jié),關(guān)鍵詞所占字節(jié)根據(jù)操作者輸入的關(guān)鍵詞個(gè)數(shù)來定。
2)0x02:發(fā)送當(dāng)前語音文件的數(shù)據(jù),最多一次放入64個(gè)字節(jié)。
3)0x03:發(fā)送配置信息(麥克風(fēng)增益、靈敏度以及揚(yáng)聲器音量)。這3種配置信息各占1個(gè)字節(jié)。
4)0x04:發(fā)送寫入初始化信息和語音文件個(gè)數(shù),清除W25Q32DW的前2個(gè)扇區(qū)。語音文件個(gè)數(shù)占1個(gè)字節(jié)。
5)0x05:發(fā)送寫入完成信息,告知主控制器寫入完成。
主控制器根據(jù)上位機(jī)發(fā)來的幀不同,做出不同相應(yīng),并應(yīng)答上位機(jī)。在交互過程中,為了保護(hù)程序的魯棒性和數(shù)據(jù)傳輸?shù)耐暾?,是不允許系統(tǒng)進(jìn)行語音識(shí)別的,在交互完畢后,主控制器收到寫入完成的命令幀時(shí),才開啟語音識(shí)別模式。
上位機(jī)軟件將操作者需要設(shè)置的數(shù)據(jù)信息經(jīng)過協(xié)議幀打包并通過串口發(fā)送至主控制器,主控制器根據(jù)操作情況和過程,實(shí)時(shí)響應(yīng)上位機(jī),上位機(jī)對(duì)所接收的數(shù)據(jù)做分析、處理、顯示、以及將寫入過程實(shí)時(shí)反映在界面上。軟件的人機(jī)交互界面友好,具有智能語音控制系統(tǒng)的所需功能,有很好的易用性。圖4為上位機(jī)軟件的主界面。
圖4 上位機(jī)軟件界面
直接觸發(fā)模式(一直處于識(shí)別狀態(tài))不適合在喧鬧的環(huán)境運(yùn)用,包括周圍有幾個(gè)人在對(duì)話??诹钣|發(fā)模式(第一步操作者說出口令,待正確識(shí)別口令后,第二步操作者說出操作指令,識(shí)別成功后直接執(zhí)行具體操作),整體實(shí)現(xiàn)效果比直接觸發(fā)模式好很多,誤識(shí)別率很低,穩(wěn)定性好。
最終麥克風(fēng)增益、麥克風(fēng)靈敏度調(diào)整為21和18,識(shí)別距
離在0~5 m,語音正確識(shí)別率很高。
設(shè)計(jì)并實(shí)現(xiàn)了智能語音控制系統(tǒng),功能較完善,可實(shí)現(xiàn)語音識(shí)別,人機(jī)語音交互,智能控制家電開關(guān)。上位機(jī)軟件的設(shè)計(jì),很好的解決了外部存儲(chǔ)器數(shù)據(jù)修改困難的問題,并配合主控制器,使數(shù)據(jù)傳輸更加快捷、穩(wěn)定和可靠,方便了操作者調(diào)試、修改和使用,提高了操作者的體驗(yàn)感,從長期測(cè)試和使用情況上看,該系統(tǒng)運(yùn)行穩(wěn)定,適合應(yīng)用在智能家居[11]行業(yè)中,并有很廣泛的應(yīng)用價(jià)值和前景。
[1] 洪家平.LD3320的嵌入式語音識(shí)別系統(tǒng)的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2012, 2:48-49.
[2] 馬曉莉.紅外熱感應(yīng)智能型節(jié)能插座的設(shè)計(jì)與制作[J].價(jià)值工程, 2015, 28:156-157
[3] 張 珉,張俊鈺. 基于51單片機(jī)的壓力蒸汽滅菌器控制器的研制[J].醫(yī)療衛(wèi)生裝備, 2013, 34(5):3-4.
[4] 陸二磊,杜永文. 基于LPC1114的迷宮機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)[J].廣西民族大學(xué)學(xué)報(bào)(自然科學(xué)版), 2012, 18(4):53-54.
[5] 楊 峰,胡 彬,羅青青. STC單片機(jī)AD轉(zhuǎn)換及EEPROM使用[J].數(shù)字技術(shù)與應(yīng)用, 2011, 9:169-170.
[6] 劉耀文,寧 媛. 基于LD3320芯片的聲電密碼門設(shè)計(jì)[J].現(xiàn)代機(jī)械, 2013, 4:55-56.
[7] 鄭文靜,李明強(qiáng),舒繼武. Flash存儲(chǔ)技術(shù)[J].半導(dǎo)體技術(shù), 2010, 47(4):717-718.
[8] 田 茂,鮮于李可,潘永才.SPI模式下SD卡驅(qū)動(dòng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù), 2009, 14:195-196.
[9] 汪永好,周延森. 基于嵌入式Linux的MP3播放器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì), 2009, 30(17):3948-3949.
[10] 劉 巖,華斯亮,王東輝,侯朝煥. 一種用于駐極體麥克風(fēng)的CT_SC Σ-Δ調(diào)制器[J]. 微電子學(xué), 2009, 39(2):150-151.
[11] 劉芮辰,李樹江,劉 帥. 基于IIC和云服務(wù)器的智能家居控制系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制,2017,24(3):98-100.