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