馬瑞棟,劉同禮,劉麗麗,金小香
(東南大學成賢學院,江蘇南京,210088)
隨著科學技術的進步,智能化的電子設備與我們如影隨形,我們的生活也無時無刻不伴隨著智能化設備的使用。在我們日常使用智能設備的過程中,使得我們對智能化設備提出了更高的要求。在傳統的電子設備的控制方式中,大多離不開人親自上手操作,或是需要經過較為繁瑣的操作流程。這就需要設備能夠更懂用戶的心,更具簡捷、直接的人機交互界面。而語音控制就可以在一定程度上,使得設備能夠聽懂我們的聲音,使我們與電子設備直接進行言語交流成為可能,當我們需要電子設備幫我們完成某項任務時,僅需言語吩咐即可。這也是智能語音識別在近年來熱度一直居高不下的緣由。
本設計通過LD3320語音識別模塊識別非特定人聲的語音指令,通過XFS5152CE語音合成模塊進行語音應答,不同的識別結果觸發不同的事件,從而實現問答式的交互控制方式;通過MPU6050陀螺儀獲取DMP姿態解算后得到的偏航角(yaw)、翻滾角(roll) 和 俯仰角(pitch),并實時監測,當達到預置閾值之內時,觸發相應的事件,從而實現體感控制模式;DS18B20溫度傳感器將獲取到的實時溫度數據上報,以實現對環境溫度的實時監測;MCU與ESP8266進行UART通信以實現觸發查詢日期、時間、天氣情況等事件及查詢結果回傳,與MP3模塊進行UART通信,以實現切換歌曲、音量調節、歌曲點播等基本功能。

圖1 智能音箱設計總體設計方案框圖
LD3320是目前較為流行的非特定人聲的語音識別芯片,其內置高精度的ADC、DAC通道及功放電路,只需在LD_MICP和LD_MICN引腳連接麥克風即可進行語音識別,同時該芯片還支持MP3播放功能,僅需在LD_SPOP和LD_SPON連接揚聲器,通過MCU將MP3音頻數據依此傳輸至LD3320芯片即可實現音頻輸出,且可通過相應的寄存器與EP1、EP2、EP3管腳控制音頻輸出的音量增益。該芯片無需FLASH、RAM等外圍存儲器件就能夠同時實現語音識別與語音播報功能,比較適合于問答式的人機交互開發場合。
LD3320芯片如此備受電子愛好者的青睞,很大程度上得益于其快速穩定的非特定人聲識別算法,無需進行預先繁瑣的語音訓練,而非僅限于識別特定人的語音指令,這使得其可應用范圍及應用前景更加廣泛。只需在完成識別列表的動態編輯之后,由MCU將識別列表中的識別詞條字符串通過設置寄存器的方式送至芯片內部即可進行識別。更改識別詞條字符串即可靈活更換識別指令,極大地簡化了指令更改操作流程。
本設計是通過XFS5152CE語音合成芯片來實現語音播報功能的,該芯片不僅支持中英文文本合成,而且可對合成的文本進行分析,能夠按照其內置的文本匹配規則對其進行正確的處理。此外可通過文本標記的方式,對合成方式進行配置,從而能夠精確的處理時間、日期、度量單位、號碼等的進行準確播報,這使其適應范圍更加廣泛。由于其無需對所要播報的語音進行實現錄音,在處理變量信息時,將極大地減少了工作量。如溫度值的播報,僅需將數值轉為字符串并發送給語音合成芯片即可進行對變化的量進行播報而無需對大量的數值進行事先錄音操作。

圖2 LD3320語音識別應用電路
MPU-60X0,9軸運動處理傳感器。即它集三軸陀螺儀、三軸加速度計與可拓展的數字運動處理器于一體。其拓展接口可接IIC接口的第三方數字式傳感器,如磁力計,當接入第三方傳感器之后,可輸出9軸信號;亦可接非慣性數字傳感器,如壓力傳感器。
MPU6050內嵌數字運動處理器,卸載主機處理器的時序要求與處理能力,很大程度最大限度地精簡了軟件程序架構,減輕了MCU的壓力,降低了功耗。DMP接收并處理來自于陀螺儀、加速度計、外接傳感器的數據,通過對DMP寄存器的讀取即可得到處理結果。
為了降低系統功耗,MPU 60X0集成了FIFO,其字節大小為1024。此外其內部鑲有溫度傳感器及在工作環境僅有±1波動的振蕩器。MPU6000 為SPI接口其與設備通信速率為1MHz,當對于傳輸速率有較高要求的場合,寄存器讀取和中斷可用20MHz的SPI通 信;MPU6050為IIC接口,與其他設備的IIC通信速率為400kHz。
本設計的硬件組成部分有,MSP430F5529、LD3320語音識別模塊、XFS5152CE語音合成播報模塊、MP3播放模塊、MPU6050陀螺儀、ESP8266、OLED顯示屏、DS18B20溫度傳感器等組成。其中,LD3320模塊負責語音識別;XFS5152CE語音合成播報模塊主要用于對識別結果做出相應的回應;通過ESP8266模塊實時監測俯仰角、翻滾角、偏航角,以供體感控制使用;DS18B20用于實時監測當前所處的環境溫度,ESP8266用來查詢實時的日期、時間、天氣等主要信息。

圖3 智能音箱整體電路圖
語音識別的操作流程:(1)語音識別用初始化(包括通用初始化);(2)寫入識別列表;(3)開始識別;(4)響應中斷。
①通用初始化和語音識別用初始化:在初始化程序里中完成軟復位、模式設定、時鐘頻率設定、FIFO設定。
②寫入識別列表:列表的規則是,每個識別詞條對應其特定的編號,一個識別詞條可對應多個識別詞條,且無需保證詞條編號的連續性。該芯片最大允許的識別詞條數為50,且每個識別詞條為其相應的漢語拼音字符串,每個漢字拼音間需用一個空格隔開,如表1所示。

表1 識別列表示例表

圖4 開始識別流程
識別列表中字符串的編號大小需介于0至255之間,可重復且無需保證編號的連續性。如列表中 “Bei Jing”和“Shou Du”其編號一致,他們將會對應同一識別結果。
③開始識別:設置幾個相關的寄存器,就可以控制 LD3320 芯片開始語音識別。
④當MIC采集到聲音信號后,將產生一個下降沿中斷,對寄存器的值進行分析比對,得出結果,即使沒有識別出正常的結果。讀取BA寄存器的值,可以知道有幾個候選答案,而C5寄存器里的答案是得分最高、最可能正確的答案。
語音合成播報模塊集成了XFS5152CE,XFS5152CE是一款高集成度的語音合成芯片,可實現中文、英文語音合成,并且支持中英文混讀。MSP430F5529單片機通過I2C通訊方式與語音合成播報模塊通信,通過發送規定的數據幀對XFS5152CE進配置即可實現語音播報。其數據幀格式如表2所示。

表2 語音合成播報通信協議
由MPU60X0內部系統結構圖可知,通過對來自X,Y,Z三軸的軸向加速度產生的模擬信號進行采樣并將其轉化數字量,從而獲得加速度計數據:X_Accel、Y_Accel、Z_Accel;通過對來自X,Y,Z三軸的軸向角加速度產生的模擬信號進行采樣并將其轉化數字量,從而獲得陀螺儀數據:X_Gyro、Y_Gyro、Z_Gyro;調用MPU6050的DMP庫對從MPU6050的加速度傳感器和角速度傳感器獲取的三個軸向的加速度和三個軸向角加速度的原始數據進行四元數轉換輸出,然后計算得出歐拉角,從而實現俯仰角、橫滾角、航向角的實時監測。DMP輸出的四元數(q30格式,即浮點數擴大2^30倍)與歐拉角之間換算關系如下:

圖5 寫入識別列表流程

圖6 響應中斷流程

俯仰角、橫滾角、偏航角的計算公式]如下:

每次上電都進行自檢,即上電時的初始姿態即X、Y、Z三軸的參考位置,當左傾、右傾、前傾、后仰設備時,yaw、roll、pitch三個參數將會發生改變,通過對 yaw、roll 和 pitch 角度的實時監測并進行閾值判斷,當達到預置閾值之內時,觸發相應的事件,從而實現體感控制模式。
本設計支持Web配網,可以靈活適應不同WIFI環境,配網成功之后,聽到提示音之后即可進行日期、時間、天氣情況查詢。發出語音指令,如“今天幾號?”,識別成功之后,將會聽到“正在為您查詢當前日期信息”稍后,將播報“XXXX年XX月XX日 星期X”;說出“體感模式”口令,將會提示“已為您設置為體感模式”,此時,設備左傾、右傾、前傾、后傾,分別會觸發上一曲、下一曲、音量減、音量加事件及相應的語音提示;說出“現在幾度?”口令,識別成功之后,將會聽到“正在為您查詢當前溫度”稍后,將播報“XX.XX攝氏度”;說出歌名,即可實現點歌。經測試所有功能均正常,且識別準確率高,可適應不同人聲。
本文討論了基于MSP430F5529的智能音箱設計與實現,該設計具有人性化的問答式語音交互,及個性化的體感控制模式,同時還可以支持日期、時間、天氣、溫度等實時數據查詢,經過大量的測試,本設計具有穩定性好,語音識別準確率高,抗噪聲干擾能力強,可在歌曲播放狀態下進行準確的識別,且低功耗性能突出。