張 峰,于 樂,張弘揚
(中國移動通信集團公司 信息安全管理與運行中心,北京 100053)
隨著科技發展和生活方式的改變,人們接觸到豐富的音頻資源,比如音樂、有聲書、視頻電話等。隨著這些音頻資源的日益增多,有害音頻如詐騙音頻、暴恐音頻、色情音頻等也越來越廣泛,如何從海量的音頻資源中找到有害音頻并將其清理,是監管部門及音頻內容運營企業的需求[1]。目前,學術界開展了多項音頻智能分析的工作[2]:唐海桃等[3]提出了一種前向注意力模型,通過引入多尺度模型來對不同等級的語音基元進行建模;劉虹和袁三男[4]提出了一種多尺度殘差深度卷積神經網絡的語音識別的算法,結合聯結時序分類算法,構建端到端中文語音識別系統。但是目前存在無法個性化適配模板、實時性欠佳等問題,為解決該問題,本文提出了一種基于音頻指紋的模板匹配算法。
音頻檢索分析主要是通過比較音頻指紋,獲得相似的音頻,而不是直接對音頻文件本身進行比較。將音頻指紋作為音頻數據的索引,這樣可以提升檢索效率,并且降低搜索的檢索量[5]。音頻檢索方法類似于搜索引擎的原理,只是檢索對象為音頻文件。音頻檢索包含兩個步驟:一是音頻指紋提取,二是音頻指紋檢索。在音頻指紋提取階段,通過算法對音頻數據進行分析,提取核心的能代表聲學特征的簽名信息,并將該簽名信息轉換為可作為索引的音頻指數存儲到音頻數據庫中;在音頻指紋檢索階段,系統首先將待檢索的音頻信息提取音頻指紋,然后在數據庫中進行比對檢索,如果數據庫中有匹配成功的音頻,則將命中的音頻數據返回用戶。
本文提出的不良音頻模糊檢索方法是基于音頻指紋模板匹配技術,適用于大規模高效音頻檢索,可以支撐電信級應用,例如錄播的涉黃、涉政、涉恐、詐騙電話識別等。
針對電信級大規模不良語音過濾應用需求,本文提出了一套基于模板匹配的不良音頻模糊檢索技術框架。本技術框架主要包含以下三個方面核心技術:一是基于音頻指紋的模板匹配技術,二是解決大規模語音過濾應用挑戰的超大規模樹狀音頻特征索引庫建庫方法,三是基于時間序列的不良音頻檢索技術。
模板匹配又稱為固定音頻檢測,目前主流的技術是采用基于音頻指紋的算法[6-8]。我們將研究高效地將音頻片段的“語譜圖”量化為取值為整數的“音頻指紋”的方法,然后在此基礎上進行哈希檢索[9-10],使計算量大大降低。
待檢索的音頻數據往往是海量規模,將音頻模板與數據所有的內容比較將花費大量時間[11-12],在實際應用中不可承受。為了減少需要對比的音頻片段數量,我們將研究如何找到和音頻模板片段較為接近的部分,只在這些部分進行詳細的搜索,這樣就能避免窮舉所有片段的問題。
研究采用分數投票和霍夫變換結合的方式,從音頻片段的近鄰還原整段音頻的檢索結果。根據音頻片段與近鄰之間的距離,尋找索引庫中連續一段與音頻模板距離小于閾值的音頻片段。
為實現基于音頻指紋模板匹配的不良音頻模糊檢索,主要采用以下三個算法:首先采用語音端點檢測算法對待測音頻進行預處理,去掉一些不必要的背景噪音[13];其次采用梅爾頻率倒譜系數特征提取算法對特征值進行提取;最后采用非對稱距離計算算法找到與被測音頻矢量距離最近的音頻。
采用基于交叉熵順序統計濾波的語音端點檢測算法[14],先將每幀語音劃分成若干子帶,然后計算每個子帶與背景噪聲之間的交叉熵。由于這樣得到的交叉熵在非平穩噪聲環境中其輪廓曲線的波動較大,不利于閾值的選擇,因此,將子帶交叉熵經過一組順序統計濾波器進行平滑處理。在平滑濾波過程中,使用前后L幀的子帶交叉熵的信息(可認為是語音的長時信息),可大大提高算法的檢測精度。
交叉熵是信息論中的概念,常用來衡量2個概率密度分布之間的相似性。比如說有2個概率密度分布函數分別為p1(x)和p2(x),那么它們之間的交叉熵為[14]:
(1)
當2個概率密度分布函數相同時交叉熵為0,其他情況都為正值。所以,交叉熵表示所測算的概率密度分布p2(x)與實際概率密度分布p1(x)之間的偏離程度。當概率密度分布函數p1(x)和p2(x)都服從高斯分布時,交叉熵可以簡單表示為:
(2)
通過分析交叉熵的計算過程,發現交叉熵只與概率密度分布的均值和標準差有關系。假設要處理的語音信號和噪聲信號的對數能量分布服從高斯分布,其中語音信號概率密度分布服從pS,均值和標準差分別為μS、σS;噪聲信號概率密度分布服從pN,均值和標準差分別為μN、σN。使用對稱交叉熵[14]作為測度:
ρS,N=H(pS‖pN)+H(pN‖pS)。
(3)
當pS、pN服從高斯分布時,對稱交叉熵為
(4)
若所檢測幀語音pS與噪聲pN之間的對稱交叉熵ρS,N較小,說明此時的信號為噪聲信號;否則為語音信號。
對每幀的語音信號進行處理,通過快速傅里葉變換(Fast Fourier Transform,FFT),將語音信號轉換為功率譜上的點Yi,其中0≤i≤NFFT。為了提升算法的準確率,將功率譜劃分成K個子帶,這些子帶互不重疊。由于某些噪音會集中在某個子帶上,所以這種劃分子帶的方法可以降低噪音的影響,從而提升算法的準確率。可以通過如下公式計算第n幀上第k個子帶上的頻譜的對數能量[14]:
(5)
假設劃分的每個子帶對數能量E(n,k)服從高斯分布,可根據以下公式[14]通過平滑窗來估計第n幀上第k個子帶的均值μ(n,k)和標準差σ(n,k)。
(6)
(7)
(8)
使用開始的M幀噪聲幀對噪聲的均值μN和標準差σN進行處理,為了提升準確率,在指紋檢索的過程中,可對噪音進行實時更新和處理。每個子帶的順序統計濾波器作用在一組長度為L的子帶交叉熵ρS,N(l-N,k),…,ρS,N(l,k),…,ρS,N(l+N,k)上,l是當前要分析的語音幀。假設語音開始的N是噪音,用來估算噪音的參數并初始化閾值。對這組子帶中的交叉熵進行升序排列,ρS,N(h)(l,k)是ρS,N(l-N,k),…,ρS,N(l,k),…,ρS,N(l+N,k)中第h個最大值。經過濾波平滑處理后的第l幀第k個子帶的交叉熵如下式所示:
ρS,N(h′)(l,k)=(1-λ)ρS,N(h)(l,k)+λρS,N(h+1)(l,k),(0≤k≤K-1),
(9)
其中h=?λL」(0<λ<1,L=2N+1)。λ稱為順序統計濾波器的采樣分位數。λ滿足高斯分布,為了提高算法語音檢測的正確率,根據實驗結果λ取為0.85。最后由下式[14]計算出第l幀的能量的交叉熵為:
(10)
經過子帶交叉熵計算和順序統計濾波的處理后,每幀信號都能夠得到能量的交叉熵,用ρS,N(l)來表示。如果ρS,N(l)大于閾值T,即認為第l幀為語音幀,否則判定為非語音幀。閾值T可以設定為固定值或動態調整的值,如果T能夠合理地動態變化,則能得到更好的識別效果。
采用了目前主流的梅爾頻率倒譜系數MFCC特征來進行特征提取。MFCC特征提取算法是一種基于人耳聽覺感知理論的特征提取方法,目前廣泛應用于語音識別領域[15]。該特征的提取流程[15]如圖1所示,包括預加重、分幀、FFT、濾波器、離散余弦變換、一二階差分、特征彎折。

預加重的目的是通過一高通濾波,提升高頻部分,去除直流分量和50 Hz工頻的干擾,讓音頻信號在高低頻譜上更加平滑,使低頻到高頻的頻帶中,能夠使用相同的信噪比來求頻譜。降低發聲過程中聲帶和嘴唇對聲音影響的同時,還可以突出高頻的共振峰。
通常將256或512個采樣點集成一個觀測單元,這樣的觀測單位成為N,每幀的覆蓋時間大概為20~30 ms。為了使相鄰的兩幀之間變化平滑,可將兩幀之間建立重疊部分,重疊部分可占每幀大小的50%或者30%。假設語音信號的采樣頻率為8 kHz,每幀的采樣點為256個,那么相應的時間長度為256/8 000×1 000=32 ms。其目的是利用語音的短時平穩特性,將輸入語音流分割成相對離散獨立的單元,加窗是通過加入平滑的窗函數以避免分幀引入的吉伯斯效應。
在時域上,信號的變換沒有特別明顯的特征,在實際研究過程中通常會將音頻信號轉換為頻域上的分布來觀察特征。不同的語音特征具有不同的能力分布。所以,每幀除了要乘上窗函數外,還需要進行FFT來得到信號在頻域上的能量分布特性,基于音頻信號的頻譜取模平方后得到語音信號的功率譜。
使用Mel三角窗濾波器主要可以解決兩個問題,一是可以降低算法的運算量,二是可以消除諧波的影響,通過對頻譜進行平滑處理,能夠突出原始語音的共振峰。研究發現,人耳對聲音的頻率具有一定的選擇性,就像一個濾波器組一樣,只關注于某些特定的頻率分量。濾波器在頻率軸上的分布不是均勻的,在低頻區域上分布密集,在高頻區域上分布稀疏,這也可以很好地解釋為何人耳對低頻聲音敏感,而對高頻聲音不敏感。相關學者根據上述研究,提出一種新的頻率尺度即梅爾頻譜[15],其與物理頻率間的對應關系為:
(11)
lg函數是非線性的,而且可以模擬人耳對聲音的感知特點,故對經過Mel頻標三角窗濾波器組后的頻譜作對數運算。通過離散余弦變換對數據進行降維分析,得到最終的特征參數,DCT變換的結果沒有虛部,能夠更好地計算。
語音信號是連續的,通過對信號進行分幀提取特征,雖能提取每幀的信息特征,但是無法還原幀與幀之間連續關系,為了解決這個問題,使用一階差分和二階差分的方法增加前后幀之間信息特征,這個特征可以體現語音信號在時域上的連續性。特征彎折采用的是二維DCT變換,目的是壓縮特征,提高對比計算速度。
經過上述各個過程,就完成了語音信號的特征提取。
假設輸入矢量為x,系統將搜索數據庫,找到與x最為匹配(距離最近)的音頻顆粒矢量,即:
NN(x)=argminy∈Yd(x,y)。。
(12)
公式中d為歐式距離的平方,即x與y各個分量的差的平方和。因為y保存到數據庫之前進行了乘積矢量量化,所以,實際上只能計算矢量之間的近似距離。在乘積矢量量化中,計算距離可以采取對稱距離與非對稱距離兩種。所謂對稱距離,指的是將x也進行量化,然后計算x與y量化中心之間的距離;而非對稱距離是求x與y量化后的向量之間各個分量差的平方和,用如下公式表示[11]:
(13)
其中j是矢量量化的分組。
經過上述公式算出結果后,再經過softmax換算,得到相似度分數。本方法中設定的相似度分數閾值是0.8,也可以根據情況進行調整。
對于大規模音頻特征庫,可根據音頻特征庫的倒排表結構[16-17],特征庫快速分層搜索與多候選匹配主要包括粗糙量化、計算距離、排序與多候選匹配4個操作:
1)粗糙量化:針對待查詢的矢量x進行特征提取,并對特征進行粗糙量化。可以采用分類方法,將x劃分到某一類中,常用的算法有最近鄰方法。同時,計算余量r(x)。
2)計算距離d(x,y):根據粗糙量化的分組結果,在每組中計算r(x)的特征子集與乘積矢量量化表之間的距離。具體計算方法可以參考非對稱距離的技巧,q(y)是矢量量化表中的某項,x與y之間的距離可以通過x與q(y)的距離進行估算。
3)排序方法:通過最大堆排序方法來進行排序和查詢,堆中的每個元素都表示數據中的某個數據y與x的距離,堆頂部的元素表示距離最大的y,通過與堆頂部元素進行比較,如果比對堆頂部元素小(距離遠)則替換堆頂元素,調整堆結構,直到判斷完所有的數據y。由此得到與x距離最小的那部分y。
4)多候選匹配方法:除了檢索x對應粗中心的倒排表,同時還檢索x近鄰的多個粗中心,在多個粗中心的倒排表上搜索y,更有可能找到x真正的近鄰。
基于音頻指紋模板匹配的不良音頻模糊檢索方法整體實現過程如圖2所示,首先用特征提取法把不良音頻段生成為模板,將待識別匹配的不良信息音頻添加至匹配索引,然后將待識別音頻解析為8 kHz采樣率,16 bit位寬的PCM數據,最后對解析后的數據進行模板匹配。
為實現基于音頻指紋模板匹配的不良音頻模糊檢索,在此搭建了不良音頻識別引擎子系統。系統結構如圖3所示,自下而上包括數據接入層、數據處理層以及應用層。數據接入層主要包括在線流式數據、wav文件、文件索引等。數據處理層主要包括靜音段過濾、噪音段過濾、矢量量化、乘積矢量量化、殘差量化、語譜特征提取、索引建立等。應用層主要包括相似度評估、遺忘窗口管理、置信度管理、音頻存儲、日志上報等。另外,本系統的底層技術主要以特征提取、非對稱距離計算等為基礎。

系統不僅支持離線識別,還支持多并發在線流式識別,匹配過程采用非對稱距離計算算法,并采用基于時間序列投票機制,在保證計算速度的同時也保證了識別準確率。另外,系統可以在不重新啟動的情況下,進行模板的注冊、生效、失效、刪除等功能,大大提高了整體系統的實用性。
為了評價本算法,選取了18 389段不良音頻進行測試,結果如表1。

表1 測試結果
從測試結果看,本算法測試效果好,準確率保持在98.57%以上,召回率也保持在98.0%以上,說明應對大規模不良音頻,可采用本方法進行有效的模糊檢索。
科技的高速發展使得人們能夠更加便捷的獲取各類信息,在海量涌入的信息中,參雜著很多不良信息,如包含暴力恐怖、宗教極端、色情等有害的音頻信息荼毒著眾多用戶。因此設計一種方法來識別并篩除此類不良信息便尤為重要。目前,在語音識別領域的研究工作中有許多難點,首先是輸入無法標準統一,其次是噪聲的困擾以及模型的有效性。本文針對通過網絡等媒介傳播的不良音頻信息,提出了一種基于音頻指紋模板匹配的不良音頻模糊檢索方法,采用了語音端點檢測、梅爾頻率倒譜系數特征提取、非對稱距離計算、大規模音頻特征庫快速分層搜索技術與多候選匹配等算法,可高效準確地在大規模不良音頻中識別出特定的不良音頻,可支持電信級應用,例如詐騙電話識別等。為驗證該方法的效果,選取了多段不良音頻進行測試,結果的準確性較好,可向實際應用系統推廣。未來,將根據業務需求及技術演進方向,進一步研究增強音頻指紋提取的抗干擾能力,適時調整方法,在提升算法高效性和準確性的同時,使算法具備更強的抗干擾能力。