葉碩,彭春堂,杜珍珍,賀娟
(武漢郵電科學研究院,湖北 武漢 430000)
語音作為人類主要的通信手段,是信息獲取的主要來源,無論是民用還是軍事,一直以來都受到世界各國的高度重視[1]。隨著互聯(lián)網技術的發(fā)展,智能終端中以語音為主的交互越來越多,人們對移動設備的語音識別能力有了更高的要求。筆者設計了一種基于動態(tài)時間規(guī)整(Dynamic Time Warping, DTW)[2]的孤立詞語音識別系統(tǒng):以Mel頻率倒譜系數(shù)(Mel Frequency Cepstrum Coefficient, MFCC)為核心,使用DTW算法對孤立詞語音進行識別,通過小波變換對原始信號進行處理,提高孤立詞在一定噪聲環(huán)境下的識別精度,并借助MATLAB完成仿真。
語音信號作為一種非平穩(wěn)信號,其形成和感知的過程是一個復雜信號的處理過程[3],本質上來說,就是模式匹配的過程。語音識別的性能主要受到2個方面的影響: 一個是由環(huán)境噪聲在前端隨語音信號輸入而產生的影響;另一個是建立的模型與語音實際的特征統(tǒng)計特性有差異而產生的影響[4]。
該系統(tǒng)識別過程包括預處理、特征提取、語音訓練和語音識別4個部分,框圖如圖1所示。在預處理階段對輸入的語音信號進行濾波降噪、預加重、端點檢測、分幀處理;在特征提取階段對信號進行頻域分析,所得參數(shù)作為語音模板,存儲記錄以完成語音訓練;在語音識別階段,提取輸入語音信號的特征,與存儲的語音模板比較,通過DTW算法進行匹配,最后根據(jù)識別決策輸出相應的識別結果。
圖1 語音識別系統(tǒng)框圖
人耳對不同頻率的感受不同,人耳的聽覺頻率范圍通常在20Hz~20kHz,但人類的語音頻率通常在300Hz~3.4kHz,因此,對于混疊在語音信號中的噪聲,可以設計帶通濾波器,將低于300Hz高于4kHz的頻率事先濾除。
在發(fā)聲過程中,人類話音的高頻部分往往被弱化,因此需要設計一個高通濾波器,來補償語音信號受發(fā)聲系統(tǒng)所壓抑的高頻部分,使信號的頻譜變得平坦。通過傳遞函數(shù)為H(z)=1-αz-1的濾波器對其濾波,其中α為預加重系數(shù),α∈[0.9,1]。通過該系統(tǒng)完成對語音信號高頻部分的加重,實現(xiàn)對高頻分量的提升[2]。
對預加重完成的語音進行分幀操作, 提取短時特性。設定幀長為30ms, 為避免相鄰幀的變化過大,在相鄰2幀之間設計一段重疊區(qū)域。設定幀移為20ms,然后將每幀信號與窗函數(shù)相乘, 用于減少起始和結束處信號的不連續(xù)性。
一段完整的語音信號,可以分為:靜音、語音、詞匯停頓、語音、靜音幾個階段。
端點檢測的作用是區(qū)分語音部分和非語音部分,將語音信號中存在語音的部分標記出,方便后續(xù)特征參數(shù)提取。端點檢測一般計算每一幀語音信號的過零率和能量,只有當該幀信號的過零率和能量同時超過設定門限時,才認定該幀具有有效的語音輸入。而一段語音信號通常還會摻雜環(huán)境噪聲,其干擾將對特征參數(shù)的提取造成直接影響。
孤立詞端點檢測不準確,通常有內外2個原因。外部原因在于噪聲干擾,內部原因在于發(fā)音特點。由于語音輸入環(huán)境多變,噪聲的干擾又分為突發(fā)噪聲干擾與持續(xù)噪聲干擾。
針對突發(fā)噪聲,部分突發(fā)噪聲也具有能量高,過零率高的特點,但通常其持續(xù)時間較短。當某一幀語音信號具有高能量、高過零率時,考察其持續(xù)時間,若持續(xù)時間低于人類單個語音表述的長度,則判定為環(huán)境突發(fā)噪聲,繼續(xù)對該幀信號以后的語音進行分析,否則判定為語音輸入,標記端點。
圖2 小波分解結構圖
針對持續(xù)噪聲干擾,在算法中加入小波變換進行降噪。語音信號是一種非平穩(wěn)信號,而傅里葉變換只能得知一段信號總體上包含哪些頻率分量,不能得知各個頻率分量出現(xiàn)的時刻,其結果可能導致2個在時域相差較大的信號在頻域可能一樣,小波變換能有效解決這一問題。
正交變換具有去除信號相關性、集中信號能量的功能,而小波變換能將信號的頻譜分解到不同的頻率范圍從而得到其子帶信號,因此,可以使用正交小波變換把信號的能量集中到某些頻帶的少數(shù)系數(shù)上,將其他頻帶上的小波系數(shù)置零,即可達到有效抑制噪聲的目的[5]。
圖2為小波變換的3層分解,cA1、cA2、cA3為分解各層的信號,cD1、cD2、cD3為分解各層的細節(jié)信號,噪聲通常包含其中。若將cD1、cD2、cD3的分解系數(shù)置零或以門限閾值形式對該小波系數(shù)進行處理,然后重構小波,即得到降噪之后的信號。
圖3為使用小波降噪前后的端點檢測結果的時域對比圖,其中橫坐標為時間,縱坐標為歸一化后的語音信號振幅??梢钥闯?,語音信號的持續(xù)時間大約為0.4s,經小波去噪后,語音信號的紋波噪聲已被較好地去除,端點檢測更加準確。
圖3 端點檢測結果
圖4 語音‘9’的時域展示圖
對于內部原因,現(xiàn)行普通話發(fā)音具有平、揚、轉、降4個聲調,在這4個聲調中,‘轉’的聲調與其他3個略有不同,持續(xù)時間相對較長,且話音存在振幅的低谷,極容易被判斷成詞匯間的停頓,造成一個音被分成兩部分的情況,這對特征參數(shù)提取而言是致命的。圖4為語音‘9’的時域展示,可看見明顯的話語低谷與環(huán)境噪聲。為克服這一問題,在算法中加入延時判決。
‘轉’音的低谷存在于起始端點之后,當端點檢測到低谷時,判斷在此之前是否存在起始端點,若存在,進行延時,再檢測能量與過零率,若高于門限,則認為此處低谷處于‘轉’音內部,不進行端點標記,否則,認為語音結束,標記端點。
特征提取是指從說話人的語音信號中獲得一組能夠描述語音信號特征參數(shù)的過程[6]。所獲得的特征參數(shù)需要滿足如下要求:具有良好的獨立性,能有效代表語音特征,計算簡便能實現(xiàn)實時識別[2]。
目前,在語音識別中較為常用的特征參數(shù)有:線性預測倒譜系數(shù)(Linear Prediction Cepstrum Coefficient, LPCC)、Mel頻率倒譜系數(shù)(Mel FrequencyCepstrum Coefficient,MFCC)。其中,LPCC從人的發(fā)聲模型角度出發(fā),體現(xiàn)了每個人特定的聲道特性[7],但其求得的倒譜系數(shù)中往往包含語音高頻部分的大部分噪音,這會對語音信號的特征提取造成不利影響,極端情況下甚至可能導致特征提取失敗。人耳聽到的聲音高低與聲音頻率成對數(shù)關系,滿足公式:
式中,f為聲音頻率,Hz。MFCC將線性頻標轉化為Mel頻標,屏蔽了大部分高頻噪聲的干擾,強調了語音的低頻信息,而低頻信息對語音的清晰度影響最大,因此該種方法有利于識別信息,所得參數(shù)在無任何前提假設情況下均可使用[5]。
差分倒頻譜參數(shù)反映了倒頻譜參數(shù)在時間上的變化,在實際的語音識別中,使用MFCC的差分倒頻譜參數(shù)能有效提高系統(tǒng)的識別性能。因此將MFCC與其一階差分參數(shù)合并,共同構成輸入語音的觀察矢量,將語音的觀察矢量作為參考模板存儲下來,完成語音訓練。
目前的孤立詞語音識別算法,除了動態(tài)時間規(guī)整算法,還有隱馬爾可夫模型(Hidden Markov Model,HMM)。
HMM是一種用參數(shù)表示的,用于描述隨機過程統(tǒng)計特性的概率模型,一般分為連續(xù)HMM(CHMM)、半連續(xù)HMM(SCHMM)以及離散HMM(DHMM)[8]。
DTW算法基于動態(tài)規(guī)劃(DP)思想,雖然一種語音的發(fā)音快慢可能變化,但其語音中邏輯的先后不可改變,DTW算法能克服這種因發(fā)音習慣的不同而導致的語音信號與模板不匹配問題,在識別孤立詞語音時具有較高的準確率。雖然2種算法在孤立詞語音識別中準確率大致相當,但HMM算法需要在訓練階段提供大量的語音數(shù)據(jù)用以建立參數(shù)模型,而DTW算法在訓練中幾乎不需要額外的計算,因此采用DTW進行設計。
當需要識別的語音信號到來,完成預處理、特征提取后,形成待測的測試模板,將測試模板與參考模板的各個幀號分別作為橫坐標與縱坐標,構筑二維直角坐標系,格點(ni,mj)即是測試模式中某一幀與訓練模式中某一幀的交匯點。
通過DP算法尋找一條通過該網絡中若干格點的路徑,為了使路徑不至于過傾斜,約束路徑斜率在0.5到2的范圍內,假設當前位于格點(ni,mj),則下一個通過的格點(ni+1,mj+1)只能是下列3種情況之一:(ni+1,mj+2)、(ni+1,mj+1)、(ni+1,mj)。所選的路徑必須從左下角出發(fā),在右上角結束。
DTW算法通過分配2個N×M的矩陣d、D來記錄幀匹配距離和積累距離,幀匹配距離矩陣d(i,j)即為測試模板的第i幀與參考模板的第j幀間的距離,D(n,m)即為最佳匹配路徑所對應的匹配距離。
該系統(tǒng)將12階MFCC參數(shù)和其一階差分參數(shù)合并后,得到一個含有24個分量的特征向量,將其參數(shù)作為觀察矢量,用TXT文檔記錄。
考慮到男女聲音特性差別,錄入10男10女共20組語音,每組為相同的10個孤立詞,以數(shù)字0到9為發(fā)音模板,生成觀察矢量。
測試開始前,進行判決匹配距離的閾值設定。在室內環(huán)境中,說話人錄入0到9的語音信號,記錄正確匹配時輸入語音與模板的距離,得到共10個距離數(shù)值,然后從中取出最大與最小距離值。重復0到9的語音錄入10次,將得到的10個最大值與10個最小值,分別求平均??梢哉J為,正確識別條件下,所有匹配距離都應當落在該最值區(qū)間內,適當放寬區(qū)間,形成閾值區(qū)間。
測試開始,通過MATLAB的recordblocking函數(shù)錄入2.4s語音,經預處理、端點檢測后,完成對待識別的語音信號的特征參數(shù)提取。遍歷TXT文檔,將其特征參數(shù)與文檔中數(shù)據(jù)按照DTW算法進行匹配,找到最短匹配距離,進行識別決策。
判決匹配距離的大小,如果過大,則認為語音模板中沒有該語音,將該特征參數(shù)存儲,并輸出特定字符用于提示;若匹配距離在可接受范圍內,則認為匹配成功,輸出匹配結果。
表1為特定人孤立詞0到9的語音識別結果,男女各10人在室內室外分別測試100次,統(tǒng)計成功識別次數(shù)并取平均。其中,原始語音識別記錄的為單純的特征提取、匹配結果,其他項記錄的是在語音特征提取過程中加入算法后的結果。
表1 孤立詞語音識別結果
測試結果表明,在無強噪聲干擾的條件下,系統(tǒng)能較好實現(xiàn)孤立詞識別,而在端點檢測中加入延時判決與小波降噪,能夠使系統(tǒng)準確判別的次數(shù)略有上升。
筆者所設計的系統(tǒng),較好地實現(xiàn)了特定人孤立詞的語音識別,通過預濾波與較為準確的端點檢測,使系統(tǒng)具有了一定的抗干擾能力,符合設計要求。
語音識別作為一門交叉學科,目前的研究還面臨著許多問題,如何在信道質量較差情況下降低信道噪聲干擾、如何提高語音識別系統(tǒng)的學習能力、如何在訓練數(shù)據(jù)資源匱乏甚至缺失的條件下進行低資源語音識別、如何實現(xiàn)多語言語音混合識別,這些都需要以后逐步研究解決。隨著人工智能的發(fā)展,基于深度神經網絡的聲學模型也正在逐步取代傳統(tǒng)的識別手段,給語音識別技術帶來革新。