李全兵,文 釗,田艷梅,詹茂豪,余秦勇,楊 輝
(1.中國電子科技網(wǎng)絡(luò)信息安全有限公司,四川 成都 610041;2.提升政府治理能力大數(shù)據(jù)應(yīng)用技術(shù)國家工程實驗室,貴州 貴陽 550022;3.中電科大數(shù)據(jù)研究院有限公司,貴州 貴陽 550022;4.電子科技大學(xué) 信息與軟件工程學(xué)院,四川 成都 610054)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,語音逐漸成為人們在日常共享信息和交流的主要方式,例如在QQ、微信等社交網(wǎng)站上與朋友聊天,以前人們以文字、圖片來傳遞信息,如今主要通過語音和視頻來交流信息,這樣既方便又快捷。語音關(guān)鍵詞檢測(spoken keyword detection,SKD)是指從連續(xù)語音流中識別或檢測出一個或多個特定關(guān)鍵詞。迄今為止,已有大量文獻對語音關(guān)鍵詞識別做了研究,總的來說語音關(guān)鍵詞識別方法主要分為以下幾種:
(1)基于模板匹配的關(guān)鍵詞識別[1]。該方法的思想是通過比對模板特征與待識別語音特征的相似性來實現(xiàn)關(guān)鍵詞識別。query-by-example(QBE)是模板匹配中主要的檢測技術(shù),利用滑動匹配的思想檢測關(guān)鍵詞。模板特征可用高斯混合模型、隱馬爾可夫模型、人工神經(jīng)網(wǎng)絡(luò)、梅爾頻率系數(shù)和線性預(yù)測系數(shù)等表示。Zhang Y等人用高斯后驗概率作為模板特征,并結(jié)合動態(tài)時間規(guī)整算法(dynamic time wrapping,DTW)的變體segmental DTW實現(xiàn)語音關(guān)鍵詞的檢出[2]。文獻[3-4]結(jié)合self-organizing map和高斯后驗概率特征,利用sub-sequence DTW實現(xiàn)關(guān)鍵詞的檢測。Dhananjay等人[5]利用CNN強大的特征提取能力,將CNN引用到模板匹配算法中,使得準(zhǔn)確率有了顯著提升。由文獻[6]可知,DTW算法的時間和空間復(fù)雜度均為O(n2),因此n的長度不能太長,也就是在連續(xù)語音中使用此方法,識別速度也相對較慢。
(2)基于大詞匯量連續(xù)語音識別(large vocabulary continuous speech recognition,LVCSR)[7]的關(guān)鍵詞識別方法。這種需要將語音信號解碼成詞序列或音素網(wǎng)格[8-9],然后在此基礎(chǔ)上搜索關(guān)鍵詞,搜索方法有兩種:基于混淆網(wǎng)絡(luò)(confusion network,CN)和基于狀態(tài)轉(zhuǎn)換器(finite state transducer,F(xiàn)ST)。在文獻[10]中,Chiu等人提出將FST和CN組合在一起進行關(guān)鍵詞檢測,實驗表明組合后的搜索方法優(yōu)于任何單一的搜索策略[9]。針對集外詞(out of vocabulary,OOV)[11]問題,Chen等人利用G2P(grapheme-to-phoneme)方法和代理關(guān)鍵詞的概念有效地解決了OOV問題[12]。在文獻[13]中,侯一民等人介紹了幾種具有代表性的深度學(xué)習(xí)模型,并對其在語音識別中的應(yīng)用進行了簡單的說明。語音識別的聲學(xué)模型除了可以使用DNN-HMM模型外[14],還可以使用其他的神經(jīng)網(wǎng)絡(luò),比如循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)[15]和DNN-RNN[16]。文獻[17]中,作者將自編碼器深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)應(yīng)用于語音識別中,實現(xiàn)了語音孤立詞的識別。文獻[18]中,針對低資源情形下,語音識別系統(tǒng)性能不佳的問題,提出了一種基于i-vector特征的LSTM遞歸神經(jīng)網(wǎng)絡(luò)語音識別系統(tǒng)。
(3)端到端的語音關(guān)鍵詞識別?;诙说蕉说年P(guān)鍵詞檢測系統(tǒng)通常包括三個部分:特征提取模塊、神經(jīng)網(wǎng)絡(luò)模塊和輸出后驗得分的計算模塊[19-21]。在識別階段,關(guān)鍵詞檢測系統(tǒng)首先提取語音特征,之后將特征送入訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型中,輸出各個關(guān)鍵詞和非關(guān)鍵詞的后驗概率,最后對后驗概率以一定的窗長進行平滑,平滑后的后驗得分如果超過預(yù)先設(shè)定的閾值或者選取平滑后多個關(guān)鍵詞中最大的后驗得分,就認(rèn)為識別出了某個關(guān)鍵詞。這種基于端到端的關(guān)鍵詞檢測系統(tǒng),主要應(yīng)用于語音喚醒任務(wù)中,在連續(xù)語音中不適用。
啟發(fā)于端到端的語音關(guān)鍵詞識別,該文將生成式對抗網(wǎng)絡(luò)應(yīng)用于連續(xù)語音關(guān)鍵詞識別中,特定為小眾且無文字的語言設(shè)計一種基于音頻的關(guān)鍵詞識別方法,并為GAN設(shè)計一個定位關(guān)鍵詞的目標(biāo)函數(shù),以此追蹤定位出關(guān)鍵詞的具體位置。
生成式對抗網(wǎng)絡(luò)(GAN)是Goodfellow等[22]在2014年提出的一種生成式模型,其優(yōu)化過程是一個極小極大博弈(minimax game)問題,優(yōu)化目標(biāo)是達到納什均衡[23],得到全局最優(yōu)解。GAN由一個生成器G和一個判別器D構(gòu)成,G獲取真實樣本數(shù)據(jù)的概率分布生成新的數(shù)據(jù),D作為分類器,對輸入數(shù)據(jù)進行分類。
目前,GAN被廣泛應(yīng)用到圖像和視覺領(lǐng)域,已經(jīng)可以生成數(shù)字、人臉,構(gòu)成各種逼真的室內(nèi)外場景,根據(jù)輪廓圖恢復(fù)圖像,從低分辨率圖像生成高分辨率圖像等[24],GAN也已經(jīng)開始被應(yīng)用到語音和自然語言處理[25-26]問題的研究中。
GAN的判別器的損失函數(shù)如公式(1)所示:
LD=Ex[log(D(x))]+Ez[log(1-D(G(z)))]
(1)
生成器的損失函數(shù)表達式如公式(2)所示:
LG=Ez[log(1-D(G(z)))]
(2)
Arjovsky等[27]從理論上闡述了原始GAN存在訓(xùn)練不穩(wěn)定、梯度消失等問題。由于Wasserstein距離相對KL散度與JS散度具有優(yōu)越的平滑特性,理論上可以解決梯度消失問題,可以提供有意義的梯度。因此,Arjovsky等人用Wasserstein距離代替原始GAN目標(biāo)函數(shù)中的KL散度、JS散度。WGAN的目標(biāo)函數(shù)由Wasserstein距離產(chǎn)生,Wasserstein距離定義如式(3)所示:
(3)
LWG=-Ex~pg[fw(x)]
(4)
判別器的損失函數(shù)如式(5)所示:
LWD=Ex~pg[fw(x)]-Ex~pr[fw(x)]
(5)
式(4)和式(5)中的fw(x)表示判別器。
經(jīng)過生成式對抗網(wǎng)絡(luò)的簡單介紹,在語音關(guān)鍵詞識別任務(wù)中,該文采用WGAN來實現(xiàn)關(guān)鍵詞的識別。
由于端到端的關(guān)鍵詞識別算法包括特征提取模塊、神經(jīng)網(wǎng)絡(luò)模塊和輸出后驗得分的計算模塊,因此,該文使用WGAN識別語音關(guān)鍵詞也由三個模塊組成,即:特征提取模塊、WGAN神經(jīng)網(wǎng)絡(luò)模塊和關(guān)鍵詞識別模塊,基本思想如圖1所示。
圖1 WGAN識別關(guān)鍵詞過程
在識別階段,首先提取語音特征,之后將特征送入訓(xùn)練好的WGAN模型中,輸出經(jīng)過處理后的各個幀屬于關(guān)鍵詞特征的后驗概率,最后依據(jù)生成序列分析語音中是否存在關(guān)鍵詞。
特征提取模塊,該文使用梅爾頻率系數(shù)作為語音信號的特征,主要從定位損失函數(shù)、模型訓(xùn)練和關(guān)鍵詞識別等方面來介紹WGAN識別關(guān)鍵詞的基本思想和方法。
由于所設(shè)計的方法需要獲取關(guān)鍵詞的位置信息,因此需要為WGAN制定一個目標(biāo)定位損失函數(shù)。在這之前需要了解標(biāo)簽和生成序列這兩個名稱。文中的標(biāo)簽是按照以下步驟制作的:
(2)將關(guān)鍵詞區(qū)間對應(yīng)的幀全記為1,表示該區(qū)域存在關(guān)鍵詞特征,其余區(qū)間的幀記為0,最終得到大小為1×M的標(biāo)簽。
(3)由于語音信號時長T大小不一,使得M也不同,最終導(dǎo)致標(biāo)簽大小不一致。為了解決這個問題,獲取所有語音的標(biāo)簽,從中選出最長的標(biāo)簽作為標(biāo)桿,將其余標(biāo)簽序列的末尾填充0至與標(biāo)桿一致。
生成序列是WGAN的生成器G輸出的序列經(jīng)過以下步驟處理得到的:
(1)假設(shè)G的輸出值為y={y1,y2,…,yM},其中yi表示第i幀特征是關(guān)鍵詞特征的概率。
(2)若yi≥0.5時,則yi置為1,否則將yi置為0,這樣就得到了只有值為0和1且大小為1×M的生成序列。
為了更形象地描述標(biāo)簽和生成序列,如有以下生成序列:{000000011111101010110000},則標(biāo)簽序列為{000001111111111100000000},可以看出標(biāo)簽中包含關(guān)鍵詞特征的幀區(qū)間全部為1,不含關(guān)鍵詞的區(qū)間全為0。在生成序列中關(guān)鍵詞所在區(qū)域,除了1之外,還有少數(shù)的0,因此為了使得生成序列更加真實,該文為G定義了一個定位損失函數(shù),如下:
(6)
綜上,在語音關(guān)鍵詞識別任務(wù)中WGAN的G的損失函數(shù)如式(7)所示:
(7)
由于判別器D的作用仍是分類,所以在語音關(guān)鍵詞檢測任務(wù)中,D的損失函數(shù)不變。
音頻關(guān)鍵詞識別算法中,生成式對抗網(wǎng)絡(luò)的G和D的結(jié)構(gòu)與LeNet[28]類似,在語音關(guān)鍵詞識別任務(wù)中,WGAN的G有10個卷積層,用以充分獲取關(guān)鍵詞特征,G的結(jié)構(gòu)與LeNet最大的區(qū)別是前者不含全連接層和Sigmoid層,G經(jīng)過最后一層卷積層的輸出值是大小為1×M矩陣,在將其傳入D之前需要做一個簡單的變換,即使其變成大小不變的向量。D包含7個卷積層、3個全連接層,不包含Sigmoid層。文中每層卷積層經(jīng)過了卷積、池化、BatchNorm、ReLu和Dropout操作。
WGAN的訓(xùn)練過程如圖2所示。
圖2 音頻關(guān)鍵詞識別訓(xùn)練流程
訓(xùn)練模型的時候需要預(yù)先設(shè)置網(wǎng)絡(luò)訓(xùn)練步數(shù)N,若訓(xùn)練步數(shù)達到N則訓(xùn)練結(jié)束,否則繼續(xù)訓(xùn)練。在訓(xùn)練網(wǎng)絡(luò)的過程中,通過前向傳播獲得誤差并判斷誤差是否小于閾值E,若誤差超過閾值則依據(jù)誤差反向傳播更新G和D的參數(shù),直至誤差小于E后進行下一步訓(xùn)練。由于一個良好的D不僅可以監(jiān)督G生成效果更好的生成序列,還能加快模型的訓(xùn)練速度。因此在訓(xùn)練WGAN時,一般先訓(xùn)練D,當(dāng)D的參數(shù)更新若干次之后,將D的參數(shù)固定,之后才開始訓(xùn)練G。G和D的參數(shù)更新通過反向傳播算法實現(xiàn)。
基于音頻的關(guān)鍵詞識別算法的模型訓(xùn)練好之后,就可檢測音頻中是否存在關(guān)鍵詞,若生成序列中有連續(xù)的若干個值為1(如:{0000011111100000000100101}),則定義它為一個連通區(qū)域為{111111}。
若生成序列中存在連通區(qū)域,還不能判斷語音中有關(guān)鍵詞,此時還需要判斷連通區(qū)域的長度是否超過閾值Th。若生成序列中存在連通區(qū)域長度大于Th的情況,則視為語音中是存在關(guān)鍵詞的,否則認(rèn)定語音中不存在關(guān)鍵詞。假設(shè)生成序列為y={y1,…,yi,…,yj,…,yM},其中y1~yi-1的值為0,yi~yj的值為1,且j-i≥Th,yj+1~yM的值為0,根據(jù)生成序列與音頻之間的對應(yīng)關(guān)系,把連通區(qū)域映射到音頻,從而得到關(guān)鍵詞在語音中的定位結(jié)果,關(guān)鍵詞在語音中的確切位置如公式(8)所示:
(8)
對于閾值Th的大小要依據(jù)關(guān)鍵詞的情況而定,比如設(shè)定的關(guān)鍵詞語音平均持續(xù)時長為1秒,那么閾值Th應(yīng)設(shè)置在4~10這個范圍內(nèi)(因為1秒的音頻數(shù)據(jù)可生成大約10幀長度為22維的特征)。若語音信號的語速較快,則閾值Th的值可設(shè)置一個較小的值(0~4之間的任意一個值),否則Th的值應(yīng)大于4。
文中自行建立了語料庫,所包含的語言有普通話、四川話和粵語。共設(shè)定10個中文關(guān)鍵詞,分別為:一帶一路、互聯(lián)網(wǎng)時代、民族尊嚴(yán)、一國兩制、人民代表大會、國家主席、中華人民共和國、體制改革、環(huán)境治理、自然災(zāi)害。語音來源包括錄音及網(wǎng)絡(luò)廣播兩種方式。在安靜環(huán)境下錄音,擬定包含關(guān)鍵詞的語句內(nèi)容,每個關(guān)鍵詞涉及的語句內(nèi)容有10條,分別用普通話、四川話和粵語朗誦若干次。參與錄音的人數(shù)為30人,其中男生20人,女生10人,年齡分布均在18歲到26歲之間,這50個志愿者均會四川話和粵語。從網(wǎng)絡(luò)上下載的廣播,有的片段有關(guān)鍵詞,有的片段沒有關(guān)鍵詞,兩者之間的比例為8∶2。
根據(jù)上述方法得到語音的均為WAV格式,單聲道,采樣頻率16 kHz。文中設(shè)置的每個關(guān)鍵詞發(fā)音時長平均在1~2秒內(nèi),含關(guān)鍵詞語音(句子)長度均為5~15秒。語音中含有普通話、四川話和粵語三種關(guān)鍵詞語音文件。普通話、四川話和粵語分別包含5 600條人工采集數(shù)據(jù)和4 400條網(wǎng)絡(luò)語音數(shù)據(jù)作為訓(xùn)練集,各類別的方言語音分別使用400條人工采集數(shù)據(jù)和200條網(wǎng)絡(luò)語音數(shù)據(jù)作為測試集。
這些關(guān)鍵詞都是一些名詞。在獲得音頻之后,根據(jù)2.1小節(jié)中的標(biāo)簽制作方法制作標(biāo)簽,并以與音頻對應(yīng)的名稱單獨保存在一個文件夾內(nèi)。
文中使用Python的深度學(xué)習(xí)庫Tensorflow編程實現(xiàn)WGAN,經(jīng)過一系列實驗,WGAN的一些超參數(shù)設(shè)置如下:學(xué)習(xí)速率為0.000 3,Dropout正則化的保留概率keep-prob設(shè)置為0.5,優(yōu)化算法使用RMSProb。實驗的硬件配置為:Intel core CPU @ 2.6 GHz+Nvidia GeForce GTX 1080 Ti (11 GB) 以及32 GB RAM,軟件環(huán)境為:Ubuntu 16.04及Python3.5.0。
文中采用準(zhǔn)確率、召回率、錯誤接受率和錯誤拒絕率[29]作為評估關(guān)鍵詞識別的性能指標(biāo)。TP表示本屬于正例的樣本被正確預(yù)測為正例的樣本數(shù),F(xiàn)N表示正例被錯誤判別為負(fù)例的樣本數(shù),TN表示負(fù)例被正確判斷為負(fù)例的樣本數(shù),F(xiàn)P表示負(fù)例被錯誤判斷為正例的樣本數(shù)。
準(zhǔn)確率,衡量某一檢索任務(wù)判斷正確的概率,其定義如公式(9)所示:
(9)
召回率,表示所有正例中被判斷為正例的概率,其定義如式(10)所示:
(10)
錯誤接受率,表示不包含關(guān)鍵詞的樣本中,錯誤檢測出有關(guān)鍵詞樣本所占比例,其定義如公式(11)所示:
(11)
錯誤拒絕率,表示在有關(guān)鍵詞的語音樣本中,沒有檢測到管檢測的語音樣本所占比例,其表達式如公式(12)所示:
(12)
WGAN模型在自制的語料庫上進行訓(xùn)練。圖3展示了G和D的損失值隨著訓(xùn)練步數(shù)的變化情況,圖中是每隔50步統(tǒng)計一次數(shù)據(jù)得到的值。
分析圖3知道,WGAN模型的生成器大概在2.5w步時得到了收斂,繼續(xù)訓(xùn)練生成器,它的損失值有所波動,但不影響總體變化趨勢。判別器直到3w步左右收斂,繼續(xù)訓(xùn)練網(wǎng)絡(luò)損失值也無明顯變化,因此文中將訓(xùn)練到3w步時得到的模型作為最優(yōu)模型。
(a)生成器損失值變化情況 (b)判別器損失值變化情況
為了設(shè)置合適的閾值Th,觀察Th的值在0~10之間,模型識別關(guān)鍵詞的準(zhǔn)確率的變化情況,在普通話這個數(shù)據(jù)集上的實驗結(jié)果如圖4所示。
圖4 準(zhǔn)確率與Th值之間的關(guān)系
從圖4分析可知,當(dāng)Th的值設(shè)置過低時(0~4),準(zhǔn)確率低于0.7,當(dāng)Th的值逐漸增加時,accuracy也在逐漸上升,直到Th的值為8時達到了頂點,Th再繼續(xù)增大,準(zhǔn)確率反而降低。因此,文中將連通區(qū)域的閾值Th設(shè)置為8。
此模型是用普通話、四川話和粵語三種語言的音頻訓(xùn)練得到的,因此,它在這三種語言的測試集上進行驗證,其結(jié)果如表1所示。
表1 三種語言的測試結(jié)果
根據(jù)表1的結(jié)果表明,WGAN可以識別四川話和粵語這兩種方言,并且識別準(zhǔn)確率和召回率均到達了80%,說明WGAN是有能力識別連續(xù)語音中的關(guān)鍵詞的,并且可以識別四川話和粵語這兩門方言中是否存在關(guān)鍵詞。
此外,文中還提到WGAN模型可以準(zhǔn)確獲取關(guān)鍵詞的時間信息,因此,含關(guān)鍵詞的語句內(nèi)容為“隨著社會的快速發(fā)展,我國已進入了互聯(lián)網(wǎng)時代”,其中“互聯(lián)網(wǎng)時代”為關(guān)鍵詞,WGAN檢測該段語句內(nèi)容的語音得到的結(jié)果為:關(guān)鍵詞在音頻中開始出現(xiàn)時間和結(jié)束時間分別為8.5秒和9.8秒。
從上述實驗結(jié)果可知,生成式對抗網(wǎng)絡(luò)不僅能識別語音中的關(guān)鍵詞,還可以定位出關(guān)鍵詞在語音中的具體位置。
與模板匹配算法的對比見表2。
表2 與模板匹配算法對比結(jié)果
據(jù)表2的結(jié)果分析,文獻[1]中的快速模板匹配的準(zhǔn)確率略低于WGAN模型,WGAN識別關(guān)鍵詞的速度比它快了將近4倍。雖然文獻[5]中的模板匹配方法準(zhǔn)確率是三個方法中最好的,但是其花費的時間卻是文中所提方法的2倍。這就表明,基于WGAN的音頻關(guān)鍵詞識別方法識別速度比模板匹配快。
接下來,與文獻[14]中的基于DNN-HMM的識別方法進行比較,其實驗結(jié)果如表3所示。
表3 與語音識別算法對比結(jié)果
通過實驗對比可以看到,基于語音識別的關(guān)鍵詞識別方法的準(zhǔn)確率可高達0.931,但僅僅比所研究的方法高了0.034,而WGAN識別關(guān)鍵詞的錯誤接受率FAR卻比語音識別低了0.015,因此可得出這樣的結(jié)論:WGAN識別關(guān)鍵詞的性能與基于DNN-HMM的語音識別的性能相差無幾。
此外,本小節(jié)還做了一組魯棒性實驗,以驗證所提方法的抗噪能力。對普通話這個數(shù)據(jù)集的測試集加入信噪比(signal-to-noise ratio,SNR)分別為20 dB、15 dB、10 dB和5 dB的高斯白噪聲,查看模型在不同強度的噪聲情形下識別關(guān)鍵詞的能力,實驗結(jié)果如圖5所示。
圖5 模型準(zhǔn)確率與噪聲之間的關(guān)系
可以看到,在噪聲不大的情況下,WGAN識別關(guān)鍵詞的準(zhǔn)確率基本上與安靜環(huán)境下相差不大,但當(dāng)噪聲的信噪比變?yōu)?5 dB時,準(zhǔn)確率嚴(yán)重下降,當(dāng)SNR為5 dB時,準(zhǔn)確率低至0.365。這個表明,基于WGAN的音頻關(guān)鍵詞識別方法具有微弱的魯棒性。
通過分析基于語音識別的關(guān)鍵詞識別技術(shù),發(fā)現(xiàn)該方法的工作量大,對無文字語言的關(guān)鍵詞識別不適用,并且無法獲得關(guān)鍵詞的具體位置。針對這些問題,提出了一種基于WGAN的音頻關(guān)鍵詞檢測方法,利用WGAN的生成器生成定位關(guān)鍵詞的掩碼序列,用于分析音頻中有無關(guān)鍵詞以及關(guān)鍵詞的位置信息。在包含普通話、四川話和粵語的混合數(shù)據(jù)集上訓(xùn)練了WGAN模型,從準(zhǔn)確率、召回率、錯誤接受率和錯誤拒絕率分析了所提方法的性能。雖然模板匹配算法也能識別出無文字語言的關(guān)鍵詞,但是其識別速度低于文中所提方法。另外,WGAN識別關(guān)鍵詞的性能與基于DNN-HMM的語音關(guān)鍵詞識別方法相差不大。這就說明基于WGAN的音頻關(guān)鍵詞識別方法可作為無文字語言關(guān)鍵詞識別方法的一種替代方法。由于所研究的方法可以獲得關(guān)鍵詞的位置信息,因此,文中所提方法在隱私保護等領(lǐng)域具有應(yīng)用前景。由于基于WGAN的音頻關(guān)鍵詞識別方法抗噪能力低,下一步的工作將研究如何提升模型的魯棒性。