郭子芊,陳江濤,麥偉健,劉佐濂
(廣州大學(xué) 電子與通信工程學(xué)院,廣東 廣州 510006)
隨著現(xiàn)代科技的不斷發(fā)展,人們對家居控制的需求不斷提高,因此智能家居終端走進(jìn)大眾視野[1]。但是,傳統(tǒng)的智能家居終端并沒有依據(jù)特定使用者提供不同的個(gè)性化設(shè)置,在造成隱私問題的同時(shí),也會(huì)破壞家居終端的使用體驗(yàn)。針對這一現(xiàn)象,本文研究并設(shè)計(jì)了一種基于聲紋識(shí)別的可分配權(quán)限智能家居終端。該終端以樹莓派為開發(fā)平臺(tái),用戶只要錄入語音信息,終端就能獲取該聲音的特征,生成特征數(shù)據(jù)。管理者可以對錄入語音的用戶進(jìn)行權(quán)限的分配,每當(dāng)有人對終端下達(dá)語音指令,終端就將輸入的聲音特征與數(shù)據(jù)庫中的特征數(shù)據(jù)進(jìn)行比較,根據(jù)身份對使用者開放不同等級(jí)的權(quán)限。最終判斷是否執(zhí)行說話者的指令,從而保護(hù)了用戶的人身安全與家庭安全。
本智能家居終端包括各種用戶交互界面、樹莓派終端管理、服務(wù)器的聲紋識(shí)別算法、百度智能云實(shí)時(shí)語音識(shí)別和各種家居設(shè)備。其總體架構(gòu)如圖1所示。
圖1 系統(tǒng)總體架構(gòu)
本智能家居終端運(yùn)用語音活性檢測技術(shù)來區(qū)別語音與噪聲,確保僅對語音信號(hào)進(jìn)行處理。實(shí)際操作時(shí),用戶先使用喚醒詞對終端進(jìn)行離線喚醒,然后終端將會(huì)錄下用戶發(fā)出的操控家居的語音命令。隨后,終端會(huì)通過調(diào)用語音識(shí)別API對用戶的語音命令進(jìn)行識(shí)別,獲取命令信息。同時(shí),終端還將錄下的語音信息上傳至服務(wù)器進(jìn)行聲紋識(shí)別,提取特征信息以確定用戶身份。最后,終端將結(jié)合命令信息和用戶身份,判斷該用戶是否有權(quán)限操控對應(yīng)的家居,若有權(quán)限,終端會(huì)對ESP8266(WiFi模塊)發(fā)出相關(guān)信號(hào),從而控制家居;若無權(quán)限,終端將不對命令做出反應(yīng)。
本智能家居終端組成結(jié)構(gòu)包括樹莓派、Respeaker麥克風(fēng)模塊、電容觸摸屏、揚(yáng)聲器模塊和ESP8266模塊。其硬件模塊結(jié)構(gòu)如圖2所示。
圖2 硬件模塊結(jié)構(gòu)
本智能家居終端采用樹莓派作為核心控制模塊,具有適配多種深度學(xué)習(xí)框架的作用,功能齊全,模塊種類眾多,并且功耗不高,運(yùn)算速度適中[2]。樹莓派用于進(jìn)行與電容觸摸屏UI交互、接收麥克風(fēng)的音頻輸入數(shù)據(jù)、向揚(yáng)聲器輸出音頻數(shù)據(jù)、控制ESP8266等處理。此外,樹莓派還作為軟件平臺(tái),完成對語音信號(hào)的處理以及分配權(quán)限。
本智能家居終端采用Respeaker麥克風(fēng)模塊作為音頻輸入方式,Respeaker麥克風(fēng)連接樹莓派的1~40號(hào)引腳。錄下的音頻文件將保存在樹莓派本地,為后續(xù)的語音識(shí)別、聲紋識(shí)別做準(zhǔn)備。Respeaker麥克風(fēng)模塊相比普通的USB麥克風(fēng)具有降噪效果好、收音距離遠(yuǎn)、拾音效果好等特點(diǎn)。
本智能家居終端采用電容觸摸屏作為用戶圖形交互界面的媒介,電容觸摸屏利用FPC線與樹莓派的DISPLAY端口相連,以獲取圖像信號(hào)。圖形交互界面使用Python標(biāo)準(zhǔn)GUI庫Tkinter進(jìn)行開發(fā),用戶可通過圖形交互界面進(jìn)行錄音、設(shè)置家居使用權(quán)限等操作,電容觸摸屏接收到的信息將會(huì)傳輸給樹莓派進(jìn)行相應(yīng)處理。
本智能家居終端采用揚(yáng)聲器作為音頻放大輸出設(shè)備。揚(yáng)聲器有2個(gè)接線端口,一端連接樹莓派的3.5 mm音頻輸出接口,獲取樹莓派輸出的音頻信號(hào),另一端連接樹莓派的USB端口為揚(yáng)聲器供電。
本智能家居終端采用ESP-12F WiFi模塊與家居設(shè)備進(jìn)行通信。該模塊核心處理器ESP8266在較小尺寸封裝中集成了業(yè)界領(lǐng)先的Tensilica L106超低功耗32位微型MCU,帶有16位精簡模式,支持標(biāo)準(zhǔn)的 IEEE 802.11 b/g/n 協(xié)議和完整的TCP/IP協(xié)議棧,可以使用該模塊為現(xiàn)有的設(shè)備添加聯(lián)網(wǎng)功能[3]。當(dāng)ESP8266模塊上電并接入預(yù)先設(shè)定的局域網(wǎng)后,通過串口反饋當(dāng)前的IP信息。樹莓派可以通過訪問IP加上預(yù)先編寫的命令來控制相關(guān)引腳的狀態(tài),從而控制智能家居的開關(guān)狀態(tài)。
本智能家居終端軟件組成包括語音活性檢測、離線喚醒、語音識(shí)別和聲紋識(shí)別。其軟件流程如圖3所示。
圖3 軟件流程
在實(shí)際使用中,對所有的語音信號(hào)進(jìn)行實(shí)時(shí)處理顯然不合理。因此,為了節(jié)省硬件軟件資源,需要對語音信號(hào)進(jìn)行活性檢測,以確保輸入檢測的語音信號(hào)都是有用信息。當(dāng)前實(shí)現(xiàn)VAD的方法有許多,最簡單的為幀幅度,幀幅度的計(jì)算方法簡單,但如果背景聲音較大,則會(huì)對效果造成的影響較大。還有幀能量、短時(shí)過零率分析或能量檢測與滑動(dòng)窗口結(jié)合的方法,并且隨著近幾年人工智能的火熱發(fā)展,神經(jīng)網(wǎng)絡(luò)的方法也開始出現(xiàn)[4]。
以上幾種方法中,神經(jīng)網(wǎng)絡(luò)能夠帶來的效果最好,但是一來在智能家居終端上進(jìn)行大量的計(jì)算時(shí)速度緩慢,二來如果選擇上傳到云端,則浪費(fèi)了終端自身的計(jì)算資源。因此,本項(xiàng)目中采用短時(shí)能量以及短時(shí)過零率結(jié)合雙門限的方法。短時(shí)能量計(jì)算簡單,對聲音具有較高的對比度,并且短時(shí)過零率在沒有噪聲的位置表現(xiàn)良好,集合兩者優(yōu)點(diǎn)以及雙門限的約束特性,不僅能夠減少錯(cuò)誤率,還能降低計(jì)算資源的耗費(fèi)[5-6]。
3.1.1 語音數(shù)據(jù)預(yù)處理
(1)直流去除。如果需要對語音進(jìn)行頻譜分析,直流的頻譜泄露會(huì)嚴(yán)重影響低頻譜的分析,并且直流一般不隨時(shí)間變化,不反應(yīng)信號(hào)的趨向性。
(2)加窗處理。為后續(xù)的傅里葉變化做準(zhǔn)備,使得全局更加連續(xù),避免出現(xiàn)吉布斯效應(yīng),并且使得沒有周期性的語音信號(hào)呈現(xiàn)出周期函數(shù)的部分特征。
在這里采用Hammiing窗進(jìn)行加窗,Hamming的定義如下:
3.1.2 VAD實(shí)現(xiàn)
(1) 通 過 提 取 Short Time Energy(STE) 和 Cross Counter(ZCC)與設(shè)定閾值對比,從而判斷是否為語音信號(hào)。
(2)將語音信號(hào)分幀時(shí)取一幀20 ms,此處輸入信號(hào)采樣率為8 kHz。因此,每一幀長度為160 Samples。然后,計(jì)算幀內(nèi)信號(hào)的平方和,得到STE。
(3)同樣將步驟(2)中的信號(hào)幀內(nèi)所有Samples平移1,再對應(yīng)點(diǎn)做乘積,符號(hào)為負(fù)的說明此處過零,只需將幀內(nèi)所有負(fù)數(shù)乘積數(shù)目求出,就得到該幀的過零率(ZCC)。
(4)通過訓(xùn)練數(shù)據(jù)得到2個(gè)特征的門限。
(5)分別對短時(shí)能量與過零率設(shè)置2個(gè)門限值,計(jì)算每一幀的短時(shí)能量與過零率,只有當(dāng)短時(shí)能量與過零率均超過門限值時(shí)才判定語音開始。
離線喚醒是語音交互的重要入口,主要的難點(diǎn)在于能否平衡快速并且準(zhǔn)確地識(shí)別與低功耗要求之間的矛盾,此外,離線喚醒的實(shí)時(shí)性要求喚醒系統(tǒng)需要一直處于運(yùn)行中。例如專門為行動(dòng)不便者設(shè)計(jì)的穿戴類智能設(shè)備,這類產(chǎn)品的要點(diǎn)就是需要平衡快速高效的響應(yīng)和智能設(shè)備要求的低功耗與高效之間的平衡。而本智能家居終端為USB供電產(chǎn)品,非電池供電類產(chǎn)品,因此可在犧牲一定功耗的基礎(chǔ)上提升離線喚醒詞的效率。本智能家居終端使用開源的喚醒詞檢測引擎Snowboy,并且Snowboy支持自定義喚醒詞,可對用戶設(shè)定的訓(xùn)練詞進(jìn)行模型訓(xùn)練,達(dá)到快速準(zhǔn)確喚醒的效果。Snowboy具有不需要連接網(wǎng)絡(luò)、耗費(fèi)資源少、高度可定制等優(yōu)點(diǎn)[7]。
構(gòu)建喚醒詞的流程如下:
(1)在終端上錄制3份喚醒詞的錄音。
(2)上傳到Snowboy官網(wǎng)進(jìn)行訓(xùn)練,并按需求調(diào)整靈敏度。
(3)將訓(xùn)練好的喚醒詞模型下載到終端上。
例如:需要在樹莓派終端上構(gòu)建關(guān)鍵詞“小白”,首先在樹莓派上安裝好Snowboy的相關(guān)依賴后,使用make命令編譯安裝Snowboy。然后在該終端上錄制3次關(guān)鍵詞“小白”,錄制時(shí)需要處于相對安靜的環(huán)境,錄制文件保存為wav文件。最后登錄Snowboy官網(wǎng),將3個(gè)錄音文件上傳并等待訓(xùn)練完畢,在該終端上進(jìn)行測試并根據(jù)實(shí)際情況調(diào)整靈敏度,然后將訓(xùn)練好的pmdl模型文件下載到終端中,并替換原來的模型。至此,喚醒詞已被更改為“小白”。
在實(shí)際使用中,需要將用戶輸入的語音命令轉(zhuǎn)換為文字,然后提取關(guān)鍵詞,智能家居終端才能匹配到相應(yīng)的指令[8]。因此,需要做到快速準(zhǔn)確地識(shí)別和轉(zhuǎn)換用戶的語音指令。
本智能家居終端實(shí)現(xiàn)語音識(shí)別流程如下:
(1)在終端被喚醒時(shí),進(jìn)行聲音錄制,使用VAD減少需要處理的聲音數(shù)據(jù)。
(2)對聲音進(jìn)行噪聲去除。
(3)調(diào)用百度智能云的快速語音識(shí)別端口,上傳錄音數(shù)據(jù),并接收返回結(jié)果。
(4)判斷是否有命令詞在返回結(jié)果中,并執(zhí)行指令。
例如:在用“小白”喚醒詞喚醒智能終端,終端發(fā)出響應(yīng)音后,終端開始錄音。說出命令“開客廳燈”,終端將錄音數(shù)據(jù)進(jìn)行VAD與降噪處理,上傳到百度云語音識(shí)別API端口,并接收返回結(jié)果,得到語音識(shí)別返回結(jié)果“開客廳燈”,查詢功能插件“燈”,并查詢到“開”“客廳”兩個(gè)關(guān)鍵詞。
為實(shí)現(xiàn)判斷不同的說話人,需要對聲音進(jìn)行身份識(shí)別??紤]到安全性以及識(shí)別速度,本智能家居終端使用梅爾倒譜系數(shù)(MFCC)對語音信息進(jìn)行特征提取。由于MFCC與線性的倒譜分析相比,突出優(yōu)點(diǎn)是不依賴語音產(chǎn)生模型,即能夠更好地提取與文本無關(guān)的聲紋特征,更加符合本智能家居終端不受特定命令約束,從而實(shí)現(xiàn)進(jìn)行聲紋識(shí)別的需求[9]。終端在進(jìn)行特征提取后再根據(jù)相關(guān)的特征匹配算法對數(shù)據(jù)庫里的身份進(jìn)行匹配驗(yàn)證。
特征提取就是要盡可能取出或減少語音信號(hào)中與識(shí)別無關(guān)的信息的影響,減少后續(xù)識(shí)別階段需要處理的數(shù)據(jù)量,并且從語音信號(hào)中提取能夠表征人的基本特征之外,該特征必須能夠有效地區(qū)分不同的說話人,且對相同說話人的變化保持相對穩(wěn)定[10]。
語音特征參數(shù)(MFCC)提取過程包括:
(1)預(yù)加重。將語音信號(hào)通過一個(gè)高通濾波器,用于減少語音信號(hào)中與識(shí)別無關(guān)的信息,減少后續(xù)識(shí)別階段的數(shù)據(jù)量,通過提升高頻部分,信號(hào)的頻譜變得平坦。同時(shí),消除發(fā)聲過程中嘴唇和聲帶的影響,補(bǔ)償語音信號(hào)受到發(fā)音系統(tǒng)所抑制的高頻部分。
(2)分幀。先將256個(gè)采樣點(diǎn)集合成一個(gè)觀測單位,稱為幀。由于傅里葉變換要求的輸入是平穩(wěn)的,通過幀處理,聲音信號(hào)變?yōu)橐粠粠钠椒€(wěn)信號(hào),從而在進(jìn)行傅里葉變換時(shí)得到各個(gè)頻率成分的分布。
(3)加窗。將每一幀乘以漢明窗,增加幀左端和右端的連續(xù)性,減少吉布斯效應(yīng),使得全局更為連續(xù)。
(4)快速傅里葉變換。每一幀經(jīng)過快速傅里葉變換,得到在頻譜上的能量分布。
語音信號(hào)的DFT可由以下公式得到:
能量分布公式為:
包含噪聲的語音信號(hào)的頻譜如圖4所示。
圖4 包含噪聲的語音信號(hào)的頻譜
(5)三角帶通濾波。其可以使頻譜平滑化,消除諧波的作用,突顯語音的共振峰,并且降低運(yùn)算量。
(6)離散余弦變換(DCT)。計(jì)算每個(gè)濾波器組輸出的對數(shù)能量,然后代入離散余弦變換,求出L階的Mel-scale Cepstrum參數(shù)。
線性頻率轉(zhuǎn)換到MFCC公式:
(7)動(dòng)態(tài)查分參數(shù)的提取。標(biāo)準(zhǔn)的倒譜參數(shù)MFCC只反映了語音參數(shù)的靜態(tài)特性,語音的動(dòng)態(tài)特性可以用這些靜態(tài)特征的差分譜來描述。語音特征提取效果圖如圖5所示。
圖5 語音特征提取效果圖
本智能家居終端實(shí)現(xiàn)聲紋識(shí)別流程如下:
(1)終端被喚醒時(shí),進(jìn)行聲音錄制,使用VAD減少需要處理的聲音數(shù)據(jù)。
(2)對聲音進(jìn)行噪聲去除。
(3)調(diào)用服務(wù)器的聲紋識(shí)別端口,上傳錄音數(shù)據(jù),并接收返回結(jié)果。
(4)判斷是否為聲紋識(shí)別庫中已錄入身份,并判斷該人物身份是否有權(quán)限執(zhí)行該指令。
本文利用2個(gè)不同權(quán)限的用戶對智能家居終端進(jìn)行測試,測試結(jié)果見表1所列。
表1 測試結(jié)果
本文使用聲紋識(shí)別技術(shù)開發(fā)了一種可分配家居使用權(quán)限的智能家居終端。用戶可以通過終端錄入語音信息,提取聲紋特征信息,然后為不同的聲紋特征信息分配家居的控制權(quán)限,只有擁有該家居使用權(quán)限的其他用戶才能通過語音操控家居。經(jīng)過實(shí)際測試,本智能家居終端功能符合要求,對智能家居使用安全有重要意義。