邱海燕
(上海交通大學(xué) 電子信息與電氣工程學(xué)院,上海 200030)
隨著語(yǔ)音識(shí)別技術(shù)的發(fā)展,從銀行電話答錄服務(wù),到智能手機(jī)的語(yǔ)音助手,再到小愛(ài)同學(xué)、天貓精靈、小度小度、亞馬遜ECHO等智能音箱,人們逐漸體會(huì)到語(yǔ)音交互帶來(lái)的便利性及科技感。
智能家居照明是物聯(lián)網(wǎng)智能家居的一部分,主要功能包括語(yǔ)音交互、照明場(chǎng)景控制、遠(yuǎn)程控制。傳統(tǒng)的家居照明只能通過(guò)墻壁開(kāi)關(guān)實(shí)現(xiàn)燈亮和燈滅,而連接物聯(lián)網(wǎng)的智能家居控制系統(tǒng)將家中各種智能設(shè)備形成一個(gè)閉環(huán)系統(tǒng),人體紅外傳感器、煙霧傳感器、溫濕度傳感器將檢測(cè)數(shù)據(jù)傳輸給智能網(wǎng)關(guān),并將控制指令發(fā)送給智能燈具實(shí)現(xiàn)場(chǎng)景控制、定時(shí)開(kāi)關(guān)燈;智能空調(diào)能夠恒定室內(nèi)的溫濕度;智能攝像頭能夠遠(yuǎn)程實(shí)時(shí)了解家中狀況[1-5]。本文設(shè)計(jì)的是一款具有語(yǔ)音交互功能的智能照明控制系統(tǒng),語(yǔ)音模塊負(fù)責(zé)與用戶的互動(dòng),藍(lán)牙組網(wǎng)模塊負(fù)責(zé)短距離燈組間的通信,WiFi模塊負(fù)責(zé)與路由器建立連接,將不同廠家的智能設(shè)備通過(guò)APP實(shí)現(xiàn)統(tǒng)一管理和遠(yuǎn)程控制。
本文的語(yǔ)音交互智能照明控制系統(tǒng)的總體架構(gòu)如圖1所示。本系統(tǒng)中以智能網(wǎng)關(guān)作為主控單元,筒燈、吊燈、吸頂燈等作為被控單元接收并執(zhí)行命令。智能網(wǎng)關(guān)主要由嵌入式芯片模組、語(yǔ)音模塊、驅(qū)動(dòng)電路組成。嵌入式芯片模組ESP32-WROVER采用芯片ESP32-D0WDQ6,其內(nèi)置兩個(gè)低功耗 Xtensa?32-bit LX6 MCU,該芯片使用范圍廣,既能連接手機(jī)藍(lán)牙并廣播Beacon實(shí)現(xiàn)短距離通信,也能通過(guò)路由器直接連接到互聯(lián)網(wǎng),實(shí)現(xiàn)遠(yuǎn)程信號(hào)傳輸。語(yǔ)音模塊主要由音頻編解碼芯片ES8388將采集的語(yǔ)音信號(hào)通過(guò)I2S串口發(fā)給嵌入式控制芯片。
圖1 語(yǔ)音交互智能照明控制系統(tǒng)的總體架構(gòu)
通過(guò)麥克風(fēng)采集喚醒詞和命令詞,音頻信號(hào)經(jīng)采樣量化編碼,轉(zhuǎn)變成數(shù)字信號(hào)發(fā)送給控制單元;經(jīng)過(guò)深度學(xué)習(xí)的算法處理,主控芯片讀取相應(yīng)指令,將系統(tǒng)從休眠狀態(tài)喚醒,并調(diào)取系統(tǒng)中存儲(chǔ)的離線語(yǔ)料庫(kù),計(jì)算查找對(duì)應(yīng)的命令行,隨即給出相應(yīng)的答復(fù);再將數(shù)字信號(hào)轉(zhuǎn)換成音頻信號(hào)輸出,同時(shí)藍(lán)牙組網(wǎng)內(nèi)燈具通過(guò)藍(lán)牙信號(hào)實(shí)現(xiàn)控制。離線式語(yǔ)料庫(kù)是通過(guò)電腦上的深度學(xué)習(xí)庫(kù)Tensor flow在深度學(xué)習(xí)工具Pycharm中對(duì)聲學(xué)模型進(jìn)行編譯訓(xùn)練收集所得,將訓(xùn)練集存儲(chǔ)在FLASH芯片中,便于嵌入式控制芯片調(diào)用。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[5]是一個(gè)具有記憶功能的神經(jīng)網(wǎng)絡(luò),通過(guò)大量的樣本序列學(xué)習(xí),查找樣本間的規(guī)律,并記錄和存儲(chǔ)下來(lái),用于下一次學(xué)習(xí)。每一次的學(xué)習(xí)過(guò)程都是一個(gè)循環(huán)查找和比較的過(guò)程,并計(jì)算求解出樣本序列間的匹配概率。
雙向RNN是正反兩個(gè)方向相結(jié)合的具有共同學(xué)習(xí)序列特征的神經(jīng)網(wǎng)絡(luò)。在處理連續(xù)數(shù)據(jù)方面,相比單向傳輸,雙向傳輸?shù)腞NN會(huì)多一個(gè)隱藏層,正向傳播時(shí)的隱藏層放置的是過(guò)去的信息,而反向誤差傳遞時(shí)的隱藏層放置的是未來(lái)的信息,所以沿著時(shí)間展開(kāi)的雙向循環(huán)神經(jīng)網(wǎng)絡(luò)具備更完整的信息量。進(jìn)行正向傳播和反向誤差傳播的BiRNN神經(jīng)網(wǎng)絡(luò),相當(dāng)于單向神經(jīng)網(wǎng)絡(luò)從前往后又從后往前地來(lái)回跑了兩次。當(dāng)正向傳播時(shí),t時(shí)刻輸入的x和0一起作為輸入,并通過(guò)隱藏層輸出一個(gè)y和一個(gè)傳給t+1時(shí)刻的h,這個(gè)h存儲(chǔ)的是上一時(shí)刻的記憶單元,使得每次輸出的y都與上一次有關(guān)。反向誤差傳播是沿著與正向傳播相反的路徑傳遞的,若正向傳播沒(méi)有計(jì)算到,可以通過(guò)反向傳播進(jìn)行補(bǔ)漏,通過(guò)計(jì)算傳播誤差來(lái)調(diào)整參數(shù),提高識(shí)別準(zhǔn)確率[6]。
本文中神經(jīng)網(wǎng)絡(luò)的損失函數(shù)使用的是語(yǔ)音識(shí)別常用的基于連續(xù)時(shí)間序列分類CTC Loss,要求神經(jīng)網(wǎng)絡(luò)的輸入和輸出序列必須具有相同的時(shí)間長(zhǎng)度,若時(shí)間長(zhǎng)度不同,必須用0補(bǔ)齊,便于預(yù)測(cè)的輸出值和給定的標(biāo)簽值相減,得到具體的損失值Loss后才能對(duì)聲學(xué)模型參數(shù)做及時(shí)調(diào)整[7-8]。
聲學(xué)模型訓(xùn)練的前期準(zhǔn)備工作是:在PC端安裝Pycharm,在Pycharm中安裝深度學(xué)習(xí)庫(kù)Tensor flow、用于快速開(kāi)發(fā)的編程語(yǔ)言Python3.7、數(shù)學(xué)函數(shù)庫(kù)Numpy等相關(guān)被調(diào)用的庫(kù)函數(shù)。
自定義6條喚醒詞和命令詞,自制音頻文件“.wav”及其對(duì)應(yīng)的音素文件“.trn”,放在語(yǔ)音數(shù)據(jù)庫(kù)data_thchs30路徑下進(jìn)行訓(xùn)練測(cè)試。自定義喚醒詞和命令詞見(jiàn)表1所列。
表1 自定義喚醒詞和命令詞
喚醒詞和簡(jiǎn)單的聊天對(duì)話的語(yǔ)音樣本是通過(guò)PC端麥克風(fēng),利用音頻軟件Cool Edit Pro錄制音頻文件,存儲(chǔ)為wav格式,波形采樣率為16 kHz,單聲道,采樣精度是16位,樣本時(shí)長(zhǎng)為3 s。
利用Python工具python_speech_features 將音頻數(shù)據(jù)從時(shí)域轉(zhuǎn)換為頻域,計(jì)算并提取26維不同倒譜特征的梅爾倒頻譜系數(shù)MFCC。根據(jù)香農(nóng)采樣定律,將采樣的離散信號(hào)經(jīng)零階保持器變成階梯信號(hào),并量化處理音頻噪聲;然后利用快速傅里葉變化(FFT)將數(shù)據(jù)從時(shí)域轉(zhuǎn)換到頻域,在極坐標(biāo)下呈現(xiàn)不同頻率的幅值和相位,再進(jìn)行頻域的特征提取[9-10]。
深層聲學(xué)模型使用LSTM+BiRNN架構(gòu),如圖2所示,先從左下角開(kāi)始,將輸入向量input轉(zhuǎn)成時(shí)間序列優(yōu)先的二維數(shù)組傳入全連接層第一層fc1,經(jīng)過(guò)3個(gè)1 024節(jié)點(diǎn)的全連接層fc1、fc2、fc3,并將正反向誤差傳播的BiRNN計(jì)算結(jié)果傳遞給LSTM節(jié)點(diǎn);最后再連接2個(gè)全連接層fc5、fc6,并將輸出轉(zhuǎn)換成三維的張量形式。
圖2 RNN循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
語(yǔ)音識(shí)別是一個(gè)時(shí)序分類問(wèn)題,對(duì)輸入的每個(gè)時(shí)序?qū)?yīng)的結(jié)果進(jìn)行轉(zhuǎn)換,輸出至全連接層,再用softmax 分類器獲得為1值。全連接層中激活函數(shù)使用的是截?cái)嘀翟O(shè)為20的ReLU函數(shù),即輸出限制在0~20之間。從正態(tài)分布中輸出隨機(jī)值,將random_normal的初始化標(biāo)準(zhǔn)差設(shè)為0.046 875。為減少不必要的訓(xùn)練時(shí)間以及防止訓(xùn)練過(guò)擬合,設(shè)置隨機(jī)丟棄率為0.95。利用CTC_Loss計(jì)算損失值以及Adam優(yōu)化器進(jìn)行訓(xùn)練,學(xué)習(xí)率設(shè)為0.001??倶颖镜?00次,每一批次選取5條數(shù)據(jù)進(jìn)行訓(xùn)練。
本文的項(xiàng)目框架是離線語(yǔ)音喚醒+語(yǔ)音識(shí)別,喚醒詞和命令詞是連續(xù)的,中間沒(méi)有停頓。語(yǔ)音喚醒是針對(duì)以喚醒詞開(kāi)頭的一句話,通過(guò)語(yǔ)言模型識(shí)別音素并查找相對(duì)應(yīng)的文本,再將音頻文本映射到數(shù)字序列,用于機(jī)器識(shí)別的過(guò)程。語(yǔ)音答復(fù)是通過(guò)數(shù)字序列查找對(duì)應(yīng)的文本,再根據(jù)文本指令輸出音頻的答復(fù)過(guò)程。
如圖3所示,經(jīng)過(guò)5次整體循環(huán)訓(xùn)練,訓(xùn)練集和驗(yàn)證集的損失率都呈現(xiàn)下降趨勢(shì),說(shuō)明模型的學(xué)習(xí)率和梯度下降算法都是合理的,輸出的預(yù)測(cè)值和給定標(biāo)簽值趨于接近,模型預(yù)測(cè)的準(zhǔn)確率在逐漸提高。
圖3 模型訓(xùn)練集/驗(yàn)證集的損失值
智能照明控制系統(tǒng)的程序流程如圖4所示,主要功能是語(yǔ)音喚醒識(shí)別和低功耗藍(lán)牙信號(hào)傳輸控制。當(dāng)系統(tǒng)接收到語(yǔ)音喚醒詞后,整個(gè)系統(tǒng)從低功耗的待機(jī)狀態(tài)被喚醒,根據(jù)命令詞的解析執(zhí)行相應(yīng)的代碼,主控芯片接收到語(yǔ)音識(shí)別信號(hào)后,通過(guò)藍(lán)牙協(xié)議給BLE Mesh 網(wǎng)絡(luò)內(nèi)的群組發(fā)送指令,控制LED驅(qū)動(dòng)器,實(shí)現(xiàn)場(chǎng)景燈光的變化。
圖4 照明控制系統(tǒng)程序流程
本文設(shè)計(jì)的智能照明控制系統(tǒng)的語(yǔ)音交互所用的離線數(shù)據(jù)庫(kù)是將經(jīng)過(guò)LSTM+BiRNN神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練后的數(shù)據(jù)植入到嵌入式平臺(tái)實(shí)現(xiàn)的,系統(tǒng)內(nèi)群組的通信是通過(guò)BLE Mesh 組網(wǎng)實(shí)現(xiàn)的。系統(tǒng)可以將智能網(wǎng)關(guān)從低功耗休眠待機(jī)狀態(tài)中立即喚醒,并將控制命令實(shí)時(shí)傳輸給BLE Mesh群組內(nèi)的燈。相比于傳統(tǒng)燈具,這款具有語(yǔ)音控制+藍(lán)牙控制的燈組更加智能和生活化,不必再四處尋找墻壁開(kāi)關(guān)或遙控器;相比于單層神經(jīng)網(wǎng)絡(luò)訓(xùn)練的語(yǔ)音控制燈具,采用經(jīng)過(guò)深層神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)的數(shù)據(jù)庫(kù)實(shí)現(xiàn)語(yǔ)音交互具有更好的語(yǔ)音喚醒率和識(shí)別率;利用BLE Mesh建立的群組,通過(guò)藍(lán)牙廣播Beacon檢測(cè)定位藍(lán)牙燈具,相比于WiFi能夠更快地進(jìn)行通信;離線式語(yǔ)音識(shí)別也不會(huì)因?yàn)閿嗑W(wǎng)或網(wǎng)絡(luò)不穩(wěn)定造成語(yǔ)音不受控、沒(méi)反應(yīng)等失效性問(wèn)題。
物聯(lián)網(wǎng)技術(shù)2022年11期