徐揚 張嘉寶 楊滿玉 李晶 聶云麗



摘要:漢語拼音的模糊匹配在關鍵詞匹配、語音糾錯等場景占據著重要地位,而傳統的模糊匹配方法無法計算不同聲母、韻母之間的聽覺相似度,只能簡單地將其作為相同和不同的兩種情形處理,這在實際使用中,容易受方言、發音習慣等因素影響匹配正確率。文章針對該問題,提出了一種基于梅爾頻率倒譜系數(MFCCs)和加入懲罰系數的動態時間序列規整(DTW)的方法,計算漢語拼音中各部分的相似度。MFCCs能夠提取聲音頻譜中符合人耳聽覺特性的特征,而DTW方法能夠計算時間序列的相似度。根據實驗表明,該方法能較好地區分出漢語拼音中發音相似的音標,能夠提高各種拼音模糊匹配場景的匹配性能和準確率。
關鍵詞:拼音模糊匹配;拼音相似度;梅爾頻率倒譜系數;動態時間序列規整
中圖分類號:TP18? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)14-0001-04
隨著互聯網的飛速發展,漢字拼音的模糊匹配在關鍵詞匹配、漢字糾錯等諸多場景都有著重要應用。傳統的拼音模糊匹配通常使用基于拼音編輯距離[1-2]、基于SOUNDEX的音碼相似度[3-4]等方法。陳何峰等人[5]還根據英文的關鍵詞模糊集構造法(Gram-based),提出了新的拼音模糊集合。但是這些方法都存在模糊性不強、在計算不同聲母、韻母之間的發音相似性時,只能將其作為相同和不同兩種情況處理的問題。
針對以上問題,本文提出了一種基于MFCCs和DTW的拼音相似度計算方法,能夠很好地根據具體情形的漢語發音音頻文件,計算出不同拼音之間的聽覺相似度,大大提高了各種拼音模糊匹配場景中的匹配率和準確度。
1 算法描述
1.1 MEL頻率倒譜系數(MFCC)
MFCC是一種基于人耳聽覺機制的特征提取方法。相比于LPCC方法,MFCC具有更好的特征提取效果[6]。人耳對不同頻率聲音的感知能力并非呈現嚴格的線性關系。根據人類聽覺感知的實驗,人耳對低頻(小于1KHz)的感知能力大致呈現線性關系,而對高頻(大于1Khz)的感知能力大致呈現對數關系。根據這一特性,在對聲音進行相似度研究時,需要使用公式(1),將線性的頻率(Hz)刻度轉換為Mel刻度:
[Melf=1125ln(1+f/700)]? ? ? ? ? ? ? ? ? ? ? ? ?(1)
MFCC參數的提取通常包含以下步驟[7]:
1.1.1 預加重
由于語音信號會受到聲門激勵和口鼻輻射的影響,需要將原始語音信號通過如下的一個高通濾波器:
[Hz=1-μz-1]
以補償高頻分量的損失,并凸顯高頻的共振峰,其對應的時域差分方程為:
[S(n)=x(n)-μ*x(n-1)]? ? ? ? ? ? ? ? ? ? ? ? ? (2)
式中[μ]取值為0.9~1,本文取值[μ=0.97]。
1.1.2 分幀
為了方便信號分析,需要把總的音頻信號[S(n)]切分為許多小段[Sin],每一小段稱為幀,其中包含N個采樣點,N叫幀長。如果最后一幀不夠N個樣本點,則在后面補0。在語音信號的處理中,一幀的時間長度要小于一個音素的長度,音素的持續時間約為50ms~200ms。而每一幀又必須要包含多個周期,男聲語音的基頻在100Hz左右,女聲在200Hz左右,即10ms和5ms。所以每一幀的時間長度取值應在20ms~50ms之間。在對幀做偏移時,還需要將幀與幀之間重疊一部分,以避免幀與幀之間的特性變化太大。對于16000Hz的語音信號,通常取幀長N=512,即對應的時間長度為512/16000×1000=32ms。在本研究中,取每幀時長為32ms,幀移為16ms。
1.1.3 加窗
對每一幀信號[Sin]乘上漢明窗[Wn],以減小吉布斯效應的影響,減弱FFT以后旁瓣大小以及頻譜泄露。加窗后的信號:
[S'in=Sin*W(n)]? ? ? ? ? ? ? ? ? ? ? ? ? ?(3)
其中[Wn=0.54-0.46cos2πn/(N-1)],
[0≤n≤N-1,N]為幀長。
1.1.4 離散傅里葉變換(DFT)
對每一幀加窗后的信號[S'in]做N=512的離散傅里葉變換:
[Sik=n=1NS'i(n)e-j2πkn/N,1≤k≤N]? ? ? ? ? ? ?(4)
將時域的音頻信號轉換至頻域。變換后,由[Sik]估計功率譜[Pik]:
[Pik=1NSik2]? ? ? ? ? ? ? ? ? ? ? ?(5)
每一幀有N/2+1=257個點。
1.1.5 Mel濾波器組
將FFT變換后的能量譜,根據公式(1)把實際頻率轉換為Mel頻率(m),再通過L=26個Mel濾波器,其中1KHz以下的10個濾波器線性相隔,1KHz以上的16個濾波器對數相隔,每個濾波器為長度等于257的向量,如圖1所示:90F6AA26-219C-4467-A8F8-715C6B3DFC79
第[l]個三角形濾波器的下限頻率[o(l)]、中心頻率[c(l)]、上限頻率[h(l)]與相鄰濾波器的關系如下:
[cl=hl-1=o(l+1)]
其中每個三角濾波器的輸出:
[ml=k=olhlWlk Pik? ? ? l=1,2,…,L]? ? ? ? ? ? ? ? ?(6)
[Wlk=k-olcl-ol,o(l)≤k≤c(l)hl-khl-cl,c(l)≤k≤h(l)]? ? ? ? ? ? ? ? ? ? ? ? ?(7)
根據奈奎斯特(Nyquist)采樣定理,16KHz的語音信號頻率范圍為0~8KHz,而人類只能聽到20Hz以上的聲音,所以對20Hz~8KHz根據式(1)轉換到Mel尺度,20Hz對應31.69Mel,8KHz對應2834.99Mel。
1.1.6取對數和倒譜運算
由于人耳對聲壓的反應一般呈對數關系,在獲得Mel頻譜后,還需要進行一次取對數和倒譜運算,將頻域信號變回時域信號。在MFCC中,通常使用離散余弦變換(DCT)代替反傅里葉變換進行倒譜運算:
[ci=2Nl=1Llgm(l)cos{(l-12)iπL}]
其中低倒譜系數常用于檢測音元,高倒譜系數常用于檢測音高,不同系數之間的變化不相關。在本研究中,只提取前9階倒譜系數。
1.1.7 差分參數提取
以上計算的倒譜參數只包含了語音參數的靜態特征,還需要通過兩次差分計算,獲得語音參數的動態(delta)特征,以提高系統的識別性能:
[dt=n=1Nn(ct+n-ct-n)2n=1Nn2]? ? ? ? ? ? ? ? ? ? ? ? ? (8)
式中,[dt]表示從第t幀的前后[ct+n、ct-n]得到的一階差分(delta)系數,本文取[N=2]。二階差分(delta-delta)系數使用同樣的方法,對[dt]再進行一次差分運算。因此,本文中完整的一個MFCCs包含27個維度,其中9維MFCC,9維一階差分系數,9維二階差分系數。
1.2 動態時間歸整(DTW)求相似度
在語音信號處理中,語音時間序列的長度大部分是不相等的,時間序列存在非對齊、局部形變、噪聲干擾的問題。比如序列局部發生壓縮、拉伸時,一對一比較法無法解決該問題[9],傳統的歐氏距離無法有效求取不同語音信號的相似度。而DTW方法可以通過尋找波形對齊的點,進而更加準確地計算出距離。
1994年,Berndt等人通過引入DTW方法[10],有效解決了離散時間序列的偏移問題:
[DTWQ,C=minWk=0KωkK]? ? ? ? ? ? ? ? (9)
其中[W=ω0,ω1,…,ωk,…,ωK]表示規整路徑矩陣(warping Path Matrix),[W]的第[k]個元素定義為[Wk=(i.j)k],[δ]是距離度量函數,本文取以下公式:
[Wk=λ*δ(i,j)=λ*(xi-yj)2]? ? ? ? ? ?(10)
在計算漢語拼音的DTW相似度時,為了適應聲母、韻母的發音特性,并在一定程度上解決DTW算法中可能出現的病態對齊現象[11],本文對[Wk]的計算加入了懲罰系數[λ]。當對聲母部分計算DTW相似度時,對時間序列[Q,C]的前[35]幀部分,取[λ=1],后[25]幀部分取[λ=0.7];當對韻母部分計算DTW相似度時,對時間序列[Q,C]的前[25]幀部分,取[λ=0.7],后[35]幀部分取[λ=1]。
[W]滿足以下3個約束條件:
(1)邊界條件:
[ω0=x0,y0,ωK=(xm,yn)]? ? ? ? ? (11)
即路徑規劃必須從網格矩陣[W]的左下角出發,右上角結束。
(2)連續性條件:
若[ωk-1=a',b'],則路徑規劃的下一個點[ωk=a,b]須滿足:
[a-a'≤1,b-b'≤1]? ? ? ? ? ? ? ? ? ? ? ?(12)
即[W]上的每個點只能和相鄰點對齊匹配。
(3)單調性條件:
若[ωk-1=a',b'],則路徑規劃的下一個點[ωk=a,b]須滿足:
[0≤a-a',0≤b-b']? ? ? ? ? ? ? ? ? ? ? ? ?(13)
即[W]上的點必須隨時間單調進行規劃。
針對漢語拼音的特點,DTW在本文的具體實現步驟如下:
1)假設兩個時間序列[Q=x0,x1,xi,...,xm],[C={y0,y1,yj,...,yn}],其中[m、n]分別是音頻文件A、B的分幀數。90F6AA26-219C-4467-A8F8-715C6B3DFC79
2)使用距離度量函數[δ]計算[Q、C]中每個離散時間點[(xi,yj)]的距離(Dist),構造一個大小為[m×n]的網格距離矩陣[W]:
[[λδ(xm,y0)] [λδ(xm,y1)] … [λδ(xm,yn)] … … … … [λδ(x1,y0)] [λδ(x1,y1)] … [λδ(x1,yn)] [λδ(x0,y0)] [λδ(x0,y1)] … [λδ(x0,yn)] ]
3)根據網格矩陣[W],找出從[δ(x0,y0)]到[δ(xm,yn)]之間滿足約束條件的最短路徑,其和值即為DTW距離。
分別求得語音A、B的MFCCs后,對每一個維度計算DTW距離,相似度取距離的倒數。
2 實例應用分析
2.1 拼音語音數據的建立
在對語音數據分析時,為了盡可能地減小不同發音人、環境噪音、發音速度等影響,本研究采用了語音合成(TTS)技術[12],使用科大訊飛的TTS系統,設定相同發音人和發音速度合成語音信號,對聲母和韻母部分分開研究。
對于聲母,每個聲母均與韻母u組合發音,如:怒(nu),鹿(lu),木(mu),兔(tu),經TTS合成獲得對應發音的16Khz波形文件(wav)。
2.2 MFCCs特征提取
以語音文件“nu.wav”為例,其發音時間共計892ms。
2.2.1 預加重
利用式(2),[μ=0.97],對輸入的語音文件進行預加重,如圖3所示:
2.2.2 分幀、加窗
對預加重后的語音信號進行N=512的分幀,并對每一幀加式(3)漢明窗,其時長為32ms,共計55幀,其中第4幀,如圖4所示。
2.2.3 對每一幀進行離散傅里葉變換
用式(4)、式(5),對上一步的每一幀的信號進行FFT,并計算功率譜,如圖5所示:
2.2.4 創建并通過26個梅爾(Mel)濾波器組
對20Hz~8KHz根據式(1)轉換到Mel尺度,20Hz對應31.69Mel,8KHz對應2834.99Mel。對于26個Mel濾波器,使用28個點對其平均分配:
[31.7, 135.5, 239.3, 343.2, 447.0, 550.8, 654.6, 758.5, 862.3, 966.1, 1069.9, 1173.8, 1277.6, 1381.4, 1485.3, 1589.1, 1692.9, 1796.7, 1900.6, 2004.4, 2108.2, 2212.0, 2315.9, 2419.7, 2523.5, 2627.3, 2731.2, 2835.0]
對應的頻率(Hz):
[20.0, 89.6, 165.9, 249.7, 341.5, 442.2, 552.6, 673.8, 806.5, 952.2, 1111.8, 1287.2, 1479.2, 1689.9, 1921.1, 2174.4, 2452.3, 2757.0, 3091.4, 3457.9, 3859.8, 4300.5, 4784.4, 5314.5, 5895.8, 6533.4, 7233.2, 8000.0]
代入式(7)生成26個Mel濾波器,如圖6所示:
使用公式(6),將每一幀FFT后的信號通過Mel濾波器組,其中第4個Mel濾波器的對數輸出,如圖7所示:
再經過DCT倒譜運算得到12階MFCC系數,并對2.2.3小節中所得的功率譜取對數,作為MFCC系數的第1階,得到13階MFCC系數。經對比驗證,本文只取前9階能得到更好的效果,如圖8所示:
2.2.5 二階差分參數提取
用公式(8),提取出一階差分(delta)系數和二階差分(delta-delta)系數,與2.2.4小節中的9階系數組成27維的MFCCs系數。為了更直觀地觀察其特點,本文展示了其中第22維特征如圖9所示。由圖9可明顯看出,對于聲母n、l、m、t而言,n和l具有較高的相似度,而m與n、l也具有一定的相似度,t則和n、m、l差異較大。
2.3 DTW求相似度并歸一化
對n和其余聲母的MFCCs求DTW相似度[x],并歸一化[x'=x-min(x)maxx-min (x)]。在使用DTW方法時,還可以結合Tralie等人的分治算法[13],提高路徑規劃的速度。n,l第22維MFCCs網格矩陣[W]如圖10所示,其中白色實線為最短路徑。
為了使數據更加直觀,在歸一化后對每個數據乘以100,得到n和其余聲母的相似度,如表1所示:
由同樣方法可得l和其余聲母相似度,如表2所示:
由表1、表2可知,在各聲母與韻母“u”協同發音時,與聲母n相比,l具有最高的相似度(89.5),m具有較高相似度(68.9),r具有些微相似度(52.3)。其余聲母和n的相似度較低(小于50)。在不需要較高模糊度的拼音匹配場景中,可認為小于50的聲母和n不具有相似性。
2.4? 結果分析
若現有漢字人名“羋華(mi3 hua2)”,由于環境噪音、發音不標準或常用詞統計等因素影響,被計算機錯誤錄入為“李華(li3hua2)”,而待匹配漢字中僅有“羋華”和“畢華”。
若使用傳統基于SOUNDEX的音碼模糊匹配方法,分別計算聲母、韻母部分相似度:
[聲母 韻母 ]
由于聲母l和m、b并不屬于一組模糊音,“李”和“羋”“畢”的相似度都將計算為50%:
聲母不同[0×12 + ]韻母相同1[×12=0.5]90F6AA26-219C-4467-A8F8-715C6B3DFC79
而使用本文的方法,由于l和m具有61.0的相似度,l和b具有20.2的相似度,結合音碼方法可得:
“李”“羋”:[0.610×12 + 1×12=0.805]
“李”“畢”:[0.202×12 + 1×12=0.601]
“李”和“羋”的相似度為80.5%,“李”和“畢”的相似度為60.1%,明顯提高了模糊匹配的區分度,將在某些場合下能取得更好的模糊匹配效果。
3 結束語
本文詳細闡述了以MFCCs和DTW算法為基礎的拼音相似度計算方法,很好地提高了拼音模糊匹配的匹配率和區分度。但該方法依然存在一定局限性,如漢語發音存在明顯的協同發音現象,若需要較高準確率,則需要對所有發音方式計算發音相似度,這將增大樣本需求和計算難度。
未來的工作可以引入語言學方面的知識以及漢語發音的統計結果,對其給予一定權重,加入拼音相似度的計算結果中。還可以使用基于統計數據的神經網絡方法,替代本文中的DTW方法,使拼音相似度的結果更具有普遍性。
參考文獻:
[1] 曹犟,鄔曉鈞,夏云慶,等.基于拼音索引的中文模糊匹配算法[J].清華大學學報(自然科學版),2009,49(S1):1328-1332.
[2] 刁興春,譚明超,曹建軍.一種融合多種編輯距離的字符串相似度計算方法[J].計算機應用研究,2010,27(12):4523-4525.
[3] 陳鳴,杜慶治,邵玉斌,等.基于音形碼的漢字相似度比對算法[J].信息技術,2018,42(11):73-75.
[4] 周昊,沈慶宏.基于改進音形碼的中文敏感詞檢測算法[J].南京大學學報(自然科學),2020,56(2):270-277.
[5] 陳何峰,林柏鋼,楊旸,等.基于密文的中文關鍵詞模糊搜索方案[J].信息網絡安全,2014(7):69-74.
[6] 王讓定,柴佩琪.語音倒譜特征的研究[J].計算機工程,2003,29(13):31-33.
[7] Müller M.Informationretrieval for music and motion[M].Berlin:Springer,2007.
[8] 趙力.語音信號處理[M].2版.北京:機械工業出版社,2009.
[9] 任守綱,張景旭,顧興健,等.時間序列特征提取方法研究綜述[J].小型微型計算機系統,2021,42(2):271-278.
[10]BerndtD,Clifford J. Using dynamic time warping to find patterns in time series[C]// Workshop on Know ledge Know ledge Discovery in Databases,1994:359-370.
[11] 夏寒松,張力生,桑春艷.基于LDTW的動態時間規整改進算法[J].計算機工程,2021,47(11):108-120.
[12] 張小峰,謝鈞,羅健欣,等.深度學習語音合成技術綜述[J].計算機工程與應用,2021,57(9):50-59.
[13] TralieC,DempseyE.Exact,parallelizable dynamic time warping alignment with linear memory[J].arXiv preprint arXiv:2008.02734,2020.
收稿日期:2022-01-30
作者簡介:徐揚(1996—),男,四川內江人,碩士,主要研究方向為信號處理和大數據應用;張嘉寶(1996—),女,湖北荊門人,碩士,研究方向為地球物理信息大數據;楊滿玉(1998—),女,陜西商洛人,碩士,研究方向:地球物理信息大數據;李晶(1998—),女,湖北武漢人,碩士,研究方向為地球物理信息大數據;聶云麗(1997—),女,云南曲靖人,碩士,研究方向為地球物理信息大數據。90F6AA26-219C-4467-A8F8-715C6B3DFC79