吳鵬飛,凌震華
(中國科學(xué)技術(shù)大學(xué) 語音與語言信息處理國家工程實驗室,合肥 230027)
語音是從肺部呼出的氣流通過聲門、聲道等各種器官作用而產(chǎn)生的,人類在發(fā)音時需要調(diào)動多個發(fā)音器官,如軟腭、舌、牙齒、唇等[1].發(fā)音器官在發(fā)音過程中的位置和運(yùn)動稱作發(fā)音動作特征(articulatory feature).發(fā)音動作特征相對于語音的聲學(xué)特征具有變化緩慢、可解釋性強(qiáng)、不易受聲學(xué)噪聲影響等優(yōu)點[2],因此已有研究人員將發(fā)音動作特征應(yīng)用到語音識別和語音合成方法的研究中,以提高噪聲環(huán)境下的識別準(zhǔn)確率[3]、實現(xiàn)靜默語音接口[4]和增強(qiáng)合成語音的自然度與靈活可控性[5]等.
發(fā)音動作特征可以用多種技術(shù)手段采集,例如X射線微束影像[6]、磁共振成像[7]、圖像采集外部發(fā)音器官運(yùn)動[8]、表面肌電[9]及電磁發(fā)音儀[10]等.這些發(fā)音動作特征采集手段雖然能有效檢測發(fā)音器官運(yùn)動,但往往存在侵入人體、非便攜、成本高等問題.近年來,基于微波雷達(dá)的面部姿態(tài)[11]和舌部動作識別[12]方法被提出,這些方法利用微波雷達(dá)的多普勒特性檢測面部肌肉的微小動作,在簡單的面部動作和舌部動作識別任務(wù)中取得了良好的性能.微波雷達(dá)采集方法具有無侵入性、成本低等優(yōu)點,且適用靜默語音場景,因此本文使用多普勒微波雷達(dá)采集發(fā)音動作,研究基于所采集動作的命令詞識別方法.相對于先前的簡單舌部動作檢測任務(wù)[12],命令詞識別中發(fā)音動作特征的組合模式更加復(fù)雜;相對于傳統(tǒng)語音識別任務(wù),本文所研究方法不依賴聲學(xué)特征,僅使用多普勒微波雷達(dá)采集的發(fā)音動作特征來完成命令詞的識別,這對于高噪聲、隱私保密等場景中的語音控制具有應(yīng)用價值.
本文首先設(shè)計實現(xiàn)了一個基于多普勒微波雷達(dá)的發(fā)音動作采集系統(tǒng),基于該系統(tǒng)采集了2個說話人的發(fā)音動作信息以構(gòu)建命令詞識別數(shù)據(jù)庫.利用所采集的微波雷達(dá)數(shù)據(jù),本文研究了基于支持向量機(jī)和基于卷積神經(jīng)網(wǎng)絡(luò)的命令詞識別算法.實驗結(jié)果顯示,本文設(shè)計的數(shù)據(jù)采集系統(tǒng)可以有效記錄命令詞發(fā)音過程中的發(fā)音動作特征,本文提出的基于卷積神經(jīng)網(wǎng)絡(luò)的微波雷達(dá)數(shù)據(jù)分類方法可以取得90%以上的命令詞識別準(zhǔn)確率.該方法可用于靜默語音控制,在一些高噪聲、或者無法發(fā)聲的環(huán)境下實現(xiàn)通信和語音控制.
多普勒微波雷達(dá)是基于多普勒效應(yīng)設(shè)計的.所謂多普勒效應(yīng),即物體相對于波源移動時觀察到的反射波的頻率與發(fā)射波的發(fā)射頻率之間會因物體相對波源的運(yùn)動方向不同而產(chǎn)生差異.若目標(biāo)靠近波源,則接收頻率大于發(fā)射頻率;反之,若目標(biāo)遠(yuǎn)離波源,則接收頻率小于發(fā)射頻率.該雷達(dá)基于此效應(yīng)設(shè)計,包含一個發(fā)射器和一個接收器,通過計算發(fā)射器和接收器之間的頻率差即可得到所檢測動作的運(yùn)動速度.現(xiàn)假設(shè)fr為接收波的頻率,ft為發(fā)射波的頻率,v為物體的運(yùn)動速度,c為光速,則fr與ft的關(guān)系可表示為式(1).
(1)
頻率偏移fd=fr-ft,當(dāng)v?c時,有fd=2vft/c.由于人在發(fā)音時臉部肌肉運(yùn)動速度有限,因此這個頻率一般在10Hz以下[12].
本文采用的雷達(dá)為24GHz的K波段多普勒雷達(dá)探測器K-LC2,使用連續(xù)波模式,解調(diào)方式為正交解調(diào),解調(diào)輸出為I、Q雙通道輸出,其中I通道為解調(diào)后的真實的頻移信號,Q通道為I通道相移90°.后得出的信號,發(fā)射信號與接收信號之間的相位差可通過式(2)得出[12].
(2)
其中λ為波長,?0為初始相位.由該式可知θ可以度量包括運(yùn)動速度和方向在內(nèi)的目標(biāo)運(yùn)動信息.
已有工作[12]表明該微波雷達(dá)可以有效檢測到舌部來回運(yùn)動、舌位保持等動作帶來的微小面部肌肉運(yùn)動.另一方面,人在發(fā)音時面部、舌部、下顎等多個部位同樣會產(chǎn)生微小的肌肉動作,并且相同的發(fā)音時這些動作具有類似的模式,本文旨在研究基于該微波雷達(dá)數(shù)據(jù)檢測發(fā)音動作并進(jìn)行命令詞識別的方法.
本文設(shè)計實現(xiàn)的數(shù)據(jù)采集系統(tǒng)框圖如圖1所示.該系統(tǒng)平行采集兩路信號:一路是語音信號,語音通過一個USB接口的電容麥克風(fēng)錄制;另一路包括三個雷達(dá)的輸出數(shù)據(jù),共6個通道,雷達(dá)輸出數(shù)據(jù)經(jīng)處理后由單片機(jī)通過串口發(fā)送至PC上.
圖1 數(shù)據(jù)采集系統(tǒng)框圖Fig.1 Flow chat of data acquisition system
本文設(shè)計了一個可佩戴的頭盔用于放置微波雷達(dá).為了減少對于發(fā)音人正常朗讀的影響,要求設(shè)備體積不能太大.因此本文使用了三個K-LC2雙通道24GHz微波雷達(dá),該微波雷達(dá)具有體積小、抗噪性能強(qiáng)的優(yōu)點.三個雷達(dá)分別定位于發(fā)音人的左、右臉頰和下巴處,用于檢測發(fā)音時這些部位的動作.
雷達(dá)的輸出信號是經(jīng)解調(diào)的頻移信號,該信號是一個交流小信號,在本文的應(yīng)用場景內(nèi),其幅值范圍為[-80 mv,80mv],這個特性決定它無法直接被單片機(jī)的片上ADC直接采集.首先,對于片上ADC來說,由于其采集范圍為[0,3.3V],因此其無法采集交流信號;其次,信號幅度小容易導(dǎo)致無法采集到信號的有用成分.因此,需要設(shè)置相應(yīng)的電壓放大、抬升電路,雷達(dá)輸出信號經(jīng)過本文設(shè)計的電壓放大、抬升電路后,其電壓范圍為[350mv,1.95V],適合單片機(jī)上ADC的信號采集.最后,單片機(jī)將采樣的數(shù)據(jù)經(jīng)串口發(fā)送至PC端用于分析處理.
由圖1可知,語音和雷達(dá)數(shù)據(jù)最終被傳入PC上,故需要在PC端設(shè)計相應(yīng)的處理、接收的上位機(jī)程序.本文中,語音數(shù)據(jù)使用ffmpeg工具錄制,串口數(shù)據(jù)使用現(xiàn)有的串口函數(shù)庫接收并寫入文件中.本文設(shè)計的上位機(jī)程序共有兩個線程,其中一個線程負(fù)責(zé)啟動ffmpeg用以錄制語音,啟動完成后,該線程即結(jié)束;另一個線程負(fù)責(zé)與下位機(jī)的通信和串口數(shù)據(jù)的讀取與保存.兩個線程協(xié)同工作,從而保證語音數(shù)據(jù)與雷達(dá)數(shù)據(jù)在時間上對齊,以便后續(xù)進(jìn)行命令詞的切分.
已有的基于發(fā)音動作檢測的語音識別方法研究通常從孤立詞或孤立音素的識別入手.例如,在文獻(xiàn)[13]中作者使用了含有9個詞語和13個音素的語料集合來研究基于電磁發(fā)音儀的靜默語音識別方法;類似地,文獻(xiàn)[14]中作者為研究聲道的電磁傳輸與反射特性對音素識別的影響,構(gòu)建了一個含有25個音素的微波信號數(shù)據(jù)庫.參考上述工作,本文利用第2節(jié)中介紹的數(shù)據(jù)采集系統(tǒng),構(gòu)建了一個含有兩個說話人的命令詞識別數(shù)據(jù)庫.該數(shù)據(jù)庫使用一個含有10個命令詞的詞表,如表1所示.每個說話人對詞表進(jìn)行10遍朗讀,每遍朗讀中這10個詞之間的順序隨機(jī)打亂,同時保證前后兩個詞不是相同的詞,以減少錄音中的語序影響.
表1 本文使用的10個命令詞詞表Table 1 Ten command words in this paper
本文中的數(shù)據(jù)庫是在一個專業(yè)的隔音密閉錄音室完成的.錄制時說話人佩戴好頭盔,朗讀屏幕上顯示的命令詞,在其前方安置電容麥克風(fēng).為減少其他操作給說話人帶來的干擾,屏幕上命令詞的更換操作由錄音室外的控制人進(jìn)行.在錄音過程中,說話人被要求盡量不要有其余額外的臉部動作以減少干擾,同時在每個命令詞的前后,留有1秒左右的靜音段以方便后續(xù)處理.
在數(shù)據(jù)采集過程中,雷達(dá)數(shù)據(jù)采樣率設(shè)為500Hz.為便于切分得到每個命令詞的起止位置,該數(shù)據(jù)庫還同步錄制了命令詞的語音音頻,音頻采樣率為48kHz.
對每位發(fā)音人,錄音得到的原始雷達(dá)數(shù)據(jù)是經(jīng)ADC量化的、含有100個命令詞的整段數(shù)據(jù).為滿足后續(xù)實驗需要,本文對原始雷達(dá)數(shù)據(jù)進(jìn)行了數(shù)據(jù)預(yù)處理,包括真實電壓值轉(zhuǎn)換、去均值、濾波、切分、降采樣等.
串口接收到的數(shù)據(jù)是經(jīng)片上的12比特ADC量化的數(shù)字量化等級值,故這個值在0-4095之間,根據(jù)式(3)可將其轉(zhuǎn)換為真實的電壓值.
V=ADC_value·3.3/4096
(3)
其中ADC_value為串口直接接收的數(shù)據(jù),V為被轉(zhuǎn)換的真實電壓值.以上處理后的電壓往往含有較大的直流成分,因此本文利用全局均值進(jìn)行了去均值操作.此外,采集到的數(shù)據(jù)含有一定噪聲.針對這個問題,本文設(shè)計了一個截止頻率為10Hz的20階數(shù)字低通濾波器用于濾除噪聲.
本文在命令詞的錄音過程中采取的是單個說話人連續(xù)錄制的方式,因此對單個說話人來說,得到的雷達(dá)數(shù)據(jù)是100個命令詞及它們之間的靜音段按時間先后排列組成的.為了開展命令詞識別方法研究,需要將這100個命令詞從連續(xù)的數(shù)據(jù)流中切分出來.為此,本文在數(shù)據(jù)庫構(gòu)建過程中同步錄制了命令詞的語音數(shù)據(jù),通過對語音數(shù)據(jù)的VAD處理[15]可以得到每個命令詞的起止時刻.由于雷達(dá)數(shù)據(jù)和語音數(shù)據(jù)是同步錄制的,且發(fā)音動作可能先于語音產(chǎn)生而晚于語音結(jié)束,我們對以上VAD邊界前后各延伸0.5秒后得到每個命令詞的雷達(dá)數(shù)據(jù)起止位置,并依據(jù)此位置進(jìn)行數(shù)據(jù)切分.考慮到發(fā)音動作特征的緩變特性,本文對切分后的命令詞微波雷達(dá)數(shù)據(jù)進(jìn)行8倍下采樣到62.5Hz以減少數(shù)據(jù)量.
至此,經(jīng)過以上預(yù)處理步驟后,一個具有兩個說話人、每個說話人100個命令詞數(shù)據(jù)段的微波雷達(dá)數(shù)據(jù)庫構(gòu)建完成.
本文使用使用兩種特征進(jìn)行基于雷達(dá)數(shù)據(jù)的命令詞識別:
1)幀級的雷達(dá)數(shù)據(jù);
2)從幀級雷達(dá)數(shù)據(jù)中提出的命令詞段統(tǒng)計參數(shù),本文參考已有工作[16]使用的波形統(tǒng)計參數(shù)如表2所示.
表2 本文使用的波形統(tǒng)計參數(shù)Table 2 Waveform statistical parameters
這兩種特征各有其優(yōu)點,直接使用幀級的雷達(dá)數(shù)據(jù)可以最大化地保留原始信息,但是在分類時需要考慮由于發(fā)音速度差異帶來的數(shù)據(jù)不等長問題;使用從波形中提取的統(tǒng)計參數(shù)可以無需考慮數(shù)據(jù)長度不等的問題,但是會帶來一定的信息損失.
本文研究了兩種分類方法用于命令詞的識別,即支持向量機(jī)方法和卷積神經(jīng)網(wǎng)絡(luò)[17]方法,下面將分別進(jìn)行介紹.
圖2 CNN模型結(jié)構(gòu)示意圖Fig.2 CNN model struct
3.4.1 PCA-LDA-SVM分類模型
我們使用雷達(dá)數(shù)據(jù)的段級統(tǒng)計參數(shù)構(gòu)建支持向量機(jī)模型.支持向量機(jī)是一種按監(jiān)督學(xué)習(xí)方式對數(shù)據(jù)進(jìn)行二元分類的廣義線性分類器,其可通過引入核方法進(jìn)行非線性分類.它的目的是尋找一個超平面來對樣本集進(jìn)行分割,分割的原則是間隔最大化,最終轉(zhuǎn)化為一個凸二次規(guī)劃問題來求解.其輸入為每個樣本的多維特征,輸出為該樣本對應(yīng)的類別.支持向量機(jī)是針對二分類任務(wù)設(shè)計的,對多分類任務(wù)要進(jìn)行專門的推廣.本文使用“一對多余(OVR)”策略[18]將其推廣至10分類任務(wù),核函數(shù)使用徑向基函數(shù).
考慮到特征維數(shù)有60維而樣本數(shù)目較少,故在使用支持向量機(jī)進(jìn)行分類時,首先對特征使用主成分分析(Principle Component Analysis,PCA)和線性判別分析(Linear Discriminat Analysis,LDA)進(jìn)行降維處理.經(jīng)PCA和LDA降維后,使用SVM分類不會產(chǎn)生過擬合,且在相對低維的空間進(jìn)行分類效果會更好.另外,考慮到使用原始波形數(shù)據(jù)維度太高,降維后信息損失過于嚴(yán)重,故在使用SVM方法時,未使用原始數(shù)據(jù)作為特征.
3.4.2 CNN分類模型
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一類包含卷積計算且具有深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),其具有平移不變性等多個優(yōu)點,對圖片、語音等時序數(shù)據(jù)具有很好的學(xué)習(xí)能力.在本文的任務(wù)中,由于CNN具有平移不變性,在使用幀級特征時,可以應(yīng)對由于語速、發(fā)音起止位置等因素的不一致帶來的影響.本文中使用的CNN結(jié)構(gòu)如圖2所示,其中“@”前數(shù)字表示該層特征通道的數(shù)目,若某層無該符號,則代表該層只有1個通道.該結(jié)構(gòu)中,池化時選擇最大池化,激活函數(shù)使用修正線性單元(Rectified Linear Uint,ReLU)[19].
在使用CNN進(jìn)行分類時,本文對比使用了幀級雷達(dá)數(shù)據(jù)和段級統(tǒng)計參數(shù)兩種特征,若使用原始波形作為輸入,則輸入層中的N是所有樣本的最大時間長度,其余樣本補(bǔ)零為該長度;若使用統(tǒng)計參數(shù)作為輸入,則各樣本的輸入長度相等,即N為10.
由于數(shù)據(jù)庫中樣本數(shù)目有限,實驗使用5-折交叉驗證的方法進(jìn)行訓(xùn)練集和測試集的劃分,即對每個說話人的100個雷達(dá)數(shù)據(jù),隨機(jī)劃分為5組,保證這5組中樣本類別是均衡的(即每個命令詞都有2個樣本).實驗時每次從這5組中取一組作為測試集,剩余4組作為訓(xùn)練集,如此重復(fù)5次直至每一組都曾被挑選作為測試集,最后將5次測試結(jié)果的均值作為最終的評估結(jié)果.
實驗中構(gòu)建了以下三個模型用于對比分析:
1)SVM_seg:使用段級的統(tǒng)計參數(shù)作為特征.首先將各樣本的6個通道的10維統(tǒng)計參數(shù)拼接成一個60維特征向量,然后使用PCA與LDA進(jìn)行降維,經(jīng)實驗調(diào)試后,先使用PCA將該特征向量將至20維,然后繼續(xù)使用LDA將其降維至8維,最后使用SVM對降維后向量進(jìn)行分類;
2)CNN_seg:使用段級統(tǒng)計參數(shù)作為特征輸入,但輸入與SVM_seg不同,此處將每個通道的10維段級統(tǒng)計參數(shù)組合成10*6的矩陣;
3)CNN_frm:使用幀級的雷達(dá)數(shù)據(jù)作為特征輸入.首先計算所有樣本的最大長度N,然后其余樣本補(bǔ)至長度N,輸入即為N*6大小的矩陣.
基于上述三個模型,每個模型均進(jìn)行單話者建模、多話者建模實驗.其中單話者建模指的是訓(xùn)練集和測試集均使用單個說話人的數(shù)據(jù),每個說話人分開進(jìn)行實驗;而多話者建模指的是訓(xùn)練集和測試集中同時含有兩個說話人的訓(xùn)練數(shù)據(jù).使用5-折交叉驗證進(jìn)行實驗,每個模型、每種實驗方式均重復(fù)1000次以獲得一個平均結(jié)果.
4.2.1 單話者建模命令詞識別結(jié)果
表3為在單話者建模實驗中,兩個說話人使用各模型的分類準(zhǔn)確率情況.其結(jié)果顯示,在單話者建模實驗中,CNN_seg模型的結(jié)果最差,SVM_seg其次,而CNN_frm模型的結(jié)果最好,對兩個說話人的命令詞識別準(zhǔn)確率都在90%以上.CNN_seg的識別結(jié)果不盡如人意,相對于CNN_frm,此模型只是使用的輸入數(shù)據(jù)不同,說明在此模型配置下,數(shù)據(jù)之間的模式不再那么容易區(qū)分,其原因可能是在提取統(tǒng)計參數(shù)時丟失了部分與命令詞標(biāo)簽相關(guān)的信息;SVM_seg的識別準(zhǔn)確率在80%左右,這個結(jié)果雖比CNN_frm稍差,但是也表明本文命令詞數(shù)據(jù)庫中的數(shù)據(jù)具備一定模式,使用傳統(tǒng)的SVM方法也可以取得一定性能;CNN_frm模型的結(jié)果最好,說明CNN可以充分利用幀級特征的優(yōu)勢,從而達(dá)到最優(yōu)的分類效果.
表3 單話者建模命令詞識別準(zhǔn)確率(%)Table 3 Recognition accuracy of single-speaker modeling(%)
圖3是說話人1各模型某次測試結(jié)果對應(yīng)的歸一化混淆矩陣圖,在混淆矩陣圖中,縱向表示真實標(biāo)簽,橫向表示預(yù)測標(biāo)簽,圖中數(shù)字為預(yù)測準(zhǔn)確率.首先,三個模型都具有較明顯的對角趨勢,但混淆程度各有不同,CNN_frm模型的結(jié)果近乎對角陣,而CNN_seg模型的結(jié)果比較分散.其次,對比CNN_seg與SVM_seg兩個模型,可以看出雖然兩者都有一定的誤分類結(jié)果,但是CNN_seg在混淆矩陣圖上更為分散,以“上升”與“左邊”兩個標(biāo)簽為例,這兩個標(biāo)簽在測試過程中都出現(xiàn)了4個不同的預(yù)測結(jié)果;SVM_seg系統(tǒng)則不然,其很大一部分誤分類都是被誤分類為“右方”.這兩個模型的原始輸入相同,但是后者首先進(jìn)行了PCA降維去除了40維之多的冗余信息,然后使用LDA再次降維至8維,使得其結(jié)果具有更小的混淆度.
圖3 各模型測試結(jié)果混淆矩陣圖Fig.3 Confusion matrix of three models
對比CNN_frm與CNN_seg兩個模型,可以明顯地看出使用幀級的雷達(dá)數(shù)據(jù)作為輸入的模型可以有效地避免上述問題,且能達(dá)到比傳統(tǒng)SVM方法更好的結(jié)果.前者的輸入是段級的統(tǒng)計參數(shù),這些統(tǒng)計參數(shù)在一定程度上丟失了原始雷達(dá)數(shù)據(jù)的時序性與部分模式信息.
4.2.2 多話者建模命令詞識別結(jié)果
多話者建模實驗的結(jié)果如圖4所示.對比表3和圖4可見在多話者建模實驗中,SVM的性能有較明顯地下降,而使用CNN的模型仍保持和單話者建模實驗中相近的水平,從而再次證明CNN模型可以較好勝任本文的命令詞識別任務(wù).
圖4 多話者建模命令詞識別結(jié)果Fig.4 Recognition accuracy of multi-speaker modeling
SVM性能下降的一個可能原因是兩個說人在命令詞數(shù)據(jù)模式上具有較大的差別,SVM并沒有足夠的能力同時學(xué)習(xí)到兩個說話人的發(fā)音動作特征.為驗證這個猜想,本文設(shè)計了一個話者交叉的多人建模補(bǔ)充實驗,該實驗使用一個說話人的全部數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),另一個說話人的全部數(shù)據(jù)作為測試數(shù)據(jù),仍使用前述的CNN_frm模型,結(jié)果顯示測試集分類正確率僅為20%左右,此實驗證明兩個說話人的模式差異性較大.在多人建模實驗中,雖然測試集和訓(xùn)練集都包含了相同的2個說話人,但是SVM模型的性能卻由于兩個說話人模式的差異性出現(xiàn)一定的下降;而CNN模型卻幾乎沒有性能損失,可見CNN模型可以同時學(xué)習(xí)兩個說話人各自的特征模式.
綜合單話者建模實驗與多話者建模實驗結(jié)果,可以得出一個在本文任務(wù)中性能最佳的模型,即CNN_frm,該模型無論在單話者建模還是多話者建模任務(wù)中,都保持了90%以上的分類正確率.實驗結(jié)果證明本文構(gòu)建的發(fā)音動作檢測系統(tǒng)確實能檢測到發(fā)音相關(guān)的參數(shù),而后續(xù)提出的基于CNN與幀級雷達(dá)數(shù)據(jù)的模型可以從中提取出與命令詞相關(guān)的模式并很好地將它們進(jìn)行分類.
本文構(gòu)建了一個基于多普勒微波雷達(dá)的發(fā)音動作檢測系統(tǒng),并基于此系統(tǒng)錄制了一個含有兩個說話人共200個樣本的命令詞識別數(shù)據(jù)庫.基于此數(shù)據(jù)庫,設(shè)計了三個模型進(jìn)行對比實驗,通過對比實驗得出了一個基于CNN和原始數(shù)據(jù)的命令詞識別分類模型,該模型在命令詞識別任務(wù)上可以達(dá)到90%以上的準(zhǔn)確率.多話者建模實驗的結(jié)果顯示,不同人的發(fā)音動作數(shù)據(jù)模式之間差異較大,對于如SVM之類學(xué)習(xí)能力不夠的傳統(tǒng)方法,會嚴(yán)重影響其分類性能,而本文構(gòu)建的CNN模型可以較好的同時學(xué)習(xí)到多個說話人的數(shù)據(jù)模式.后續(xù)計劃包括錄制更多說話人數(shù)據(jù)、研究話者無關(guān)的命令詞識別方法等.