陳立鵬 陳小龍 宋詩凡 陳楨衍
(天津工業大學 軟件學院,天津 300387)
人類的感知過程是多模態的[1],樣本可以通過不同通道的信息加以描述,每一通道的信息定義為一種特定的模態[2]。相比于單一模態,多模態能更準確地描述出樣本的特征。
早在公元前4 世紀,多模態的相關概念和理論即被用以定義融合不同內容的表達形式與修辭方法[3-4]。多模態學習從1970 年起步,經歷了幾個發展階段后,在2010 年之后全面步入深度學習階段。多模態學習可以劃分為以下五個研究方向:多模態表示學習、模態轉化、對齊、多模態融合、協同學習[5]。
多模態技術常被應用到語義識別中,通常結合圖片、文本、語音等,判斷說話人的語義,語音識別技術最早可以追溯到1952 年,當時Davis[6]等人研究出了可以識別10 個英文數字發音的實驗系統。從那時起到現在,語音識別給我們帶來了很多方便[7]。現階段家教平臺眾多,大學生家教由于價格便宜,性價比高受到了一些家長的青睞,但是大學生家教還未形成規范的體系,在上課期間可能發生意外情況卻無法報警或及時告知能幫助他們的人,針對這一現象,本文提出一種基于多模態語義分析的語音識別報警系統。
本系統基于Python Tensorflow環境實現了語音識別報警功能,部署本系統的應用在工作場景進行實時錄音,當檢測到一方對另一方發出具有威脅性或者求救性的語音時實施報警,為避免當事人因無意識地觸發詞庫關鍵詞而導致系統錯誤地報警,因此需要實時監測被監聽者的語音情緒,當被監聽者用恐懼或是傷心的語氣觸發求救關鍵詞立刻觸發報警系統,所以實現本系統的關鍵在于兩大模塊,分別是:情感分析模塊以及語音關鍵詞喚醒模塊。
情感描述方式主要有兩種類型:一種是維度描述方法例如Schlosberg[9]等提出的三維情感,該種描述可以從三個維度描述情感,同時可以體會出情感的微妙變化;而另外一種則是對情感實施離散分類,就像Chen[8]等提出的MFCCG-PCA 情感識別模型,該模型實現了害怕、高興、驚訝、中性、悲傷、生氣這六種情感的離散化分類,該種描述無法體會到情感的微妙變化。
作者在構建該語音識別警報系統時選擇離散式的情感描述方式,因為該系統只需要檢測被監聽者發出求救信號時的情感狀態,不需要體會被監聽者的情感變化。
在早期Wang[10]等利用支持向量機來預測語音情感,Zhao[11]等分析了不同情感的時間構造、振幅構造、基頻構造和共振峰構造等語音特征。
近年來由于深度學習的發展人民普遍應用深度學習的方法來對語音情感進行預測,Geng[15]等提出了卷積神經網絡CNN 來預測語音情感,Li[12]等提出了改進MFCC 融合特征的憤怒情緒判斷方法,Zhu[13]等利用了AlexNet 預訓練的網絡結合FNC 全卷積神經網絡實現了對不同情緒的預測,Xue[14]等結合了卷積神經網絡CNN 以及雙向循環神經網絡BiGRU 提出了TSTNet 語音情感識別模型。
由于作者需要實現實時分析語音情感的系統,并且訓練好的模型為了保證運算速度會部署在性能足夠強大的服務器上,考慮到數據在網絡上的傳播時延會顯著的影響模型的響應速度,因此訓練模型時必須選取計算時間足夠短的網絡結構。在保證至少85%的正確率的前提下,作者選擇了Geng[15]等提出的CNN 卷積網絡結構作為用來實現本系統的語音情感分類器,盡管有比該類模型更加優秀的選擇,但考慮到計算時間的要求CNN 卷積網絡結構是最好的選則,因為其它網絡的網絡結構過于復雜,計算量要比CNN 模型大得多,經作者測試在同一硬件條件下CNN 網絡的計算速度要比TSTNet 快2s。因此作者最終選擇了CNN 卷積神經網絡作為語音情感分類器。
由于本系統被研發出來是希望應用于中文環境中的,因此作者進行模型訓練時只選取了CASⅠA 中文語音情感數據庫,該數據庫中共收錄了總共1200 條分別由四位播音員錄制的害怕、高興、驚訝、中性、悲傷、生氣這六種情感的語音數據,每條語音數據長度在[1s, 2s]這個區間。
每一條數據首先被統一成音長2s,采樣率16000Hz 的數據,之后作者對原始數據進行了隨機語音增強以及混入自然噪音,并將數據增強后的語音數據集喂入Pascual[16]等提出的語音增強對抗神經網絡中再做進一步的數據增強。作者最終通過隨機語音增強以及混入自然噪音加上對抗神經網絡數據增強的方式得到了12000 余條語音數據。之后將所有數據樣本進行預加重、數據分割、加漢明窗、提取MFCC 后就可以將數據送入神經網絡中進行模型訓練。
作者建立該模型使用了五個卷積模塊(如圖1 所示),第一個卷積模塊只有一個卷積層和一個Relu 層,第二個卷積模塊擁有一個卷積層、一個正則化層、一個Relu 層、一個Dropout 和一個最大池化層,第三個和第五個卷積模塊和第一個相同,第四個卷積模塊和第二個一樣,作者試驗過多種卷積網絡結構經過驗證發現該種結構的效果最好。

圖1 CNN 網絡結構圖
在神經網絡中第一個卷積模塊被用來提取音頻數據的二維特征頻域×時序,再將該二維特征作為輸入數據喂入其余四個卷積模塊中,在本系統中作者輸入大小設置為63×1,內核設置為2×2,卷積核的跨度為1×2,其余所有卷積核均為1×1。同時為了提高深度網絡的運算速度并且保證訓練時數據分布一致,作者還在網絡中使用了批歸一化[17]。
氣象站位于甘肅酒泉市金塔縣境內,地處東經98°30'00",北緯 40°19'58.8",北靠黑山,地處戈壁,地勢平坦,場地開闊。金塔縣位于甘肅省河西走廊中段北部邊緣,東、北與內蒙古額濟納旗毗連,西面與甘肅嘉峪關、玉門、肅北接壤,南與酒泉市和張掖地區的高臺縣為鄰。
經過批歸一化處理過后神經網絡最終輸出結果為:

經過作者驗證,該模型可在1s 左右的時間計算結果準確率可以達到87.43%。
語音關鍵詞檢測是指從連續語音流中識別或檢測出一個特定關鍵詞[18]。在檢測到詞庫關鍵詞后喚醒后續的程序,這就是本模塊的基本工作內容。
語音關鍵詞識別的方法:
作者在構建語音關鍵詞喚醒模塊時分為以下兩個步驟:
a.基于模板匹配的關鍵詞識別[21]
基本算法框架包括語音信號預處理,端點檢測,特征參數提取,模板庫參考模板建立,模板匹配識別等基本單元[19-20]。
首先將一段用人聲說出的詞匯錄音下來,通過算法制作成可識別的詞匯模板。設計出算法對語音進行預濾波、ADC、分幀、端點檢測、預加重、加窗、特征提取、特征匹配。算法模塊加載了詞匯模板后,檢測出有效語音,根據人耳聽覺感知特性,計算每幀語音的MFCC。然后采用DTW 算法與特征模板相匹配,最終輸出識別結果。
本文將“模板”替換為RNN 循環神經網絡,這樣做可以提高2%的識別精度。
人工神經網絡的基本結構與訓練方法:在人工神經網絡中,神經元結點的輸入首先經過加權線性組合,然后通過激活函數(Activation function)激活[24]。
Sigmoid 函數:
激活函數有很多種本文作者使用Sigmoid 函數,因為該模塊可以看作二分類系統模塊,即符合關鍵詞與不符合關鍵詞。

由于語音是與時序有關的信號,語音中過去和將來的狀態信息都會影響到此時的狀態,為了解決這種時序問題Grave在文獻[25]中設計了如圖2 所示的雙向循環神經網絡。

圖2 雙向循環神經網絡[26]


當前層通過t=1 到T 的迭代,根據式(4)計算隱藏層的后向序列,


建立好網絡之后就可以進行迭代訓練了,最后語音識別喚醒模塊的準確率為91%。
作者使用兩種模型后端融合的方式來實現該語音識別報警系統的模態融合,具體操作(如圖3 所示)為將語音關鍵詞喚醒模塊作為語音情感分析的啟動模塊,語音關鍵詞喚醒模塊(以下簡稱S)將被安裝到客戶端上,一旦被監聽者觸發關鍵詞庫中的關鍵詞,S 就會通過網絡將監聽到的關鍵詞語音片數據段送到位于服務端的情感分析模塊上(以下簡稱E),之后E 會針對這一段語音進行情感分析,一旦S 傳遞的語音片段屬于悲傷、恐懼這一類的負面情感,E 會通過網絡向位于客戶端的S 發出報警信號,同時E 也會向后臺管理人員發出報警,S 在接到E 的報警信號后會大聲地發出警報聲音恫嚇施暴者,并且還會通過網絡向E 發送被監聽者所處的位置,以便于在確認被監聽者真正遭受人身威脅時向警方提供關鍵信息。

圖3 雙模態融合圖
結果分析:
情感識別模塊的準確率為87.43%,關鍵詞識別模塊的準確率為91%,在建立好圖4 的系統結構之后,通過在分別為安靜無聲的環境中進行播放帶有恐懼情感的“救命”錄音的方式進行測試以及在有不規則背景噪音的環境中進行播放帶有恐懼情感的“救命”錄音的方式進行測試,兩個場景分別執行50次測試,最終測得安靜無聲的環境中該系統識別的正確率為88%,而在有不規則噪音的環境中測試的成功率為80%。
本文從系統功能出發,首先介紹了該語音識別報警系統的系統結構,包括語音情感分析模塊和語音關鍵詞喚醒模塊,隨后又分別針對兩大模塊介紹了其實現原理,包括基于對抗神經網絡的數據增強,基于CNN 模型、RNN 模型的Tensorflow預測模型的搭建與訓練,同時還簡要介紹了加速訓練的批歸一化算法。
經過實景測試表明該系統可快速判斷求救語義并做出及時的反應,經過多次人工實驗表明,在安靜無聲的環境中該系統識別的正確率為88%,而在有不規則噪音的環境中識別的成功率為80%,因此對實際應用具有一定的指導意義。