曹冠彬 張二華 王凱龍
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 南京 210094)
漢字為單音節(jié)[1],語音切分技術(shù)就是將一段連續(xù)完整的語音,切分為一個(gè)個(gè)獨(dú)立的音節(jié)。在連續(xù)語音識(shí)別系統(tǒng)中,不可能對(duì)整個(gè)短語進(jìn)行訓(xùn)練和識(shí)別,因?yàn)樵~組或者短語的數(shù)量太大,必須將輸入的語音流切分為更小的組成部分如單個(gè)字或詞。
現(xiàn)有的連續(xù)語音自動(dòng)切分技術(shù)雖然能實(shí)現(xiàn)對(duì)連續(xù)語音的切分,但大多存在穩(wěn)定性差,易受噪聲影響等缺點(diǎn),例如基于時(shí)域參數(shù)或者頻域參數(shù)的切分方法[2~6]存在穩(wěn)定性差、易受環(huán)境噪聲影響等缺點(diǎn);基于模型的切分方法,如基于隱馬爾可夫模型的切分方法[7~8]需要進(jìn)行模型訓(xùn)練,訓(xùn)練時(shí)需要輸入人工切分好的數(shù)據(jù),不易實(shí)現(xiàn)自動(dòng)切分。本文結(jié)合聲學(xué)、語音學(xué)、語言學(xué)、信號(hào)處理和圖像處理等知識(shí),研究了漢語語音的多級(jí)切分方法,利用相干分析、多尺度分析和基音周期軌跡檢測(cè)等技術(shù)實(shí)現(xiàn)了漢語連續(xù)語音切分。
對(duì)于語音信號(hào)x(m),短時(shí)能量的定義如下:
其中,En表示第n幀語音信號(hào)的短時(shí)能量,N代表每幀語音包含的采樣點(diǎn)數(shù)。
短時(shí)平均過零率是指語音信號(hào)波形穿過時(shí)間軸的次數(shù)。為了減少隨機(jī)信道噪聲影響,將過零率修改為跨過正負(fù)門限T和-T的次數(shù),如式(2)所示。
2.2.1 語譜圖
語譜圖[9]反映語音的時(shí)頻特性,語譜圖的橫軸表示時(shí)間(幀序號(hào)),縱軸表示語音信號(hào)的頻率。語譜圖中像素點(diǎn)顏色深表示該點(diǎn)的語音能量較強(qiáng)。語譜圖的繪制步驟如下:
1)對(duì)語音信號(hào)進(jìn)行預(yù)處理,再根據(jù)式(3)求快速傅里葉變換。
2)根據(jù)式(4)將Xn(ω)轉(zhuǎn)換為振幅譜,R 表示Xn(ω)的實(shí)部,I表示Xn(ω)的虛部。
3)將振幅轉(zhuǎn)換為灰度圖像數(shù)據(jù)。振幅越大,像素點(diǎn)的灰度越深;反之越淺。
4)繪制語譜圖,因?yàn)閷?shí)數(shù)的振幅譜為偶函數(shù),關(guān)于中心對(duì)稱,所以繪制語譜圖時(shí)只需在每一幀的起始點(diǎn)位置的垂直方向上繪出前一半的點(diǎn)即可。
2.2.2 繪制基音周期軌跡
發(fā)音過程中伴有聲帶振動(dòng)的音稱為濁音;不伴有聲帶振動(dòng)的音稱為清音?;糁芷谑侵赴l(fā)濁音時(shí)聲帶振動(dòng)頻率的倒數(shù)?;糁芷谲壽E的繪制步驟如下。
1)對(duì)語音信號(hào)進(jìn)行預(yù)處理,根據(jù)式(3)求其頻譜,再求對(duì)數(shù)振幅譜lnH(ω)。再對(duì)對(duì)數(shù)振幅譜進(jìn)行一次逆傅里葉變換得到倒譜,倒譜的計(jì)算公式如式(5):
2)將倒譜數(shù)據(jù)從小到大排序,對(duì)前50%數(shù)據(jù)進(jìn)行低截止置為1,對(duì)高位1%倒譜數(shù)據(jù)進(jìn)行高截止置為0,取余下49%的數(shù)據(jù)的最小值h1和最大值h2,利用式(6)設(shè)置閾值T 將這49%的倒譜數(shù)據(jù)二值化,大于T置為0,小于等于T置為1。
3)與語譜圖類似,在每一幀的起始點(diǎn)位置的垂直方向上繪出前一半的點(diǎn)。
雙門限端點(diǎn)檢測(cè)技術(shù)[10~12]的基本思想就是利用短時(shí)能量和短時(shí)平均過零率這兩個(gè)時(shí)域特征參數(shù)對(duì)語音信號(hào)進(jìn)行切分。先統(tǒng)計(jì)濁音部分的短時(shí)能量,設(shè)定一個(gè)較高的門限參數(shù)EH,使得語音信號(hào)的能量包絡(luò)大部分都在此門限之上,根據(jù)背景噪聲能量確定一個(gè)較低的閾值參數(shù)EL;再統(tǒng)計(jì)清音和無聲段的短時(shí)平均過零率,確定短時(shí)平均過零率門限ZS。雙門限端點(diǎn)檢測(cè)技術(shù)的步驟如下:
1)對(duì)語音信號(hào)進(jìn)行預(yù)處理,求語音信號(hào)的短時(shí)能量E和短時(shí)平均過零率Z。
2)尋找符合E>EH的語音段記為N1N2,N1、N2表示初判語音段的起始和終止位置。
3)從N1往左搜索,尋找E>EL的語音段,確定左側(cè)的起始位置N3;同理確定右側(cè)的終止位置N4。
4)從N3往左和N4往右搜索,找到Z>ZS的語音段,確定新的起始點(diǎn)N5和終止點(diǎn)N6,N5N6就是檢測(cè)到的語音段。
基于倒譜的端點(diǎn)檢測(cè)技術(shù)[13~14]就是利用語音信號(hào)倒譜中的最大波峰的倒譜值與次大波峰的倒譜值的比值確定語音信號(hào)是否為元音段?;诘棺V的端點(diǎn)檢測(cè)算法的步驟如下:
1)對(duì)語音信號(hào)進(jìn)行預(yù)處理。
2)通過短時(shí)傅里葉變換獲得短時(shí)譜Xn(ω),對(duì)頻譜的模取對(duì)數(shù)再求其傅里葉逆變換得到倒譜c(n)。
3)計(jì)算最大波峰倒譜值與次大波峰倒譜值的比值,確定該幀是否為元音段,本文的閾值設(shè)定為2.25。當(dāng)比值大于等于設(shè)定的閾值時(shí)認(rèn)為該幀為元音幀。
本文將雙門限端點(diǎn)檢測(cè)技術(shù)和基于倒譜的端點(diǎn)檢測(cè)技術(shù)相結(jié)合,對(duì)連續(xù)漢語語音進(jìn)行切分。具體步驟如下:
1)對(duì)語音信號(hào)進(jìn)行雙門限端點(diǎn)檢測(cè)。
2)再用基于倒譜的端點(diǎn)檢測(cè)技術(shù)對(duì)元音段進(jìn)行檢測(cè)。
3)從1)的結(jié)果中先選出一段有聲段,尋找有聲段的起始和結(jié)束幀之間是否含有元音段,元音段的結(jié)束位置可以作為切分依據(jù)。
從圖1(a)可以看出對(duì)于含輔音的連續(xù)漢語音節(jié),結(jié)合雙門限和倒譜端點(diǎn)檢測(cè)技術(shù)能實(shí)現(xiàn)準(zhǔn)確的切分結(jié)果;但是對(duì)于不含明顯輔音音節(jié)的連續(xù)漢語音節(jié),該方法仍然不能實(shí)現(xiàn)準(zhǔn)確的切分,如圖1(b),“師恩難忘”被分成了“師”和“恩難忘”兩個(gè)部分。
圖1 基于雙門限和倒譜的綜合端點(diǎn)檢測(cè)結(jié)果示例
4.1.1 相干分析
共振峰指的是聲腔的共鳴頻率,對(duì)相同音節(jié)的漢字,其共振峰較穩(wěn)定或者緩慢變化,語譜圖較相似。當(dāng)語義發(fā)生變化時(shí),漢字的共振峰也會(huì)發(fā)生變化,這種變化從語譜圖上可以明顯看出,例如從圖2 可以看出相鄰兩個(gè)漢字的語譜圖在界限處有明顯的變化。在觀察大量的語譜圖后,發(fā)現(xiàn)在相鄰兩個(gè)不同語義的語音段之間,其語譜圖在兩個(gè)字的界限處會(huì)呈現(xiàn)明顯的不相似??梢岳眠@種明顯的不相似性來檢測(cè)漢字音節(jié)的分界線。
相干分析法是計(jì)算數(shù)據(jù)相似性的一種方法。Gersztenkon[15]提出了一個(gè)基于協(xié)方差矩陣特征值的方法,具有抗噪能力強(qiáng),分辨率高的優(yōu)點(diǎn)。相干分析的步驟如下:
1)對(duì)于m×n維矩陣A,求其n維協(xié)方差矩陣B。2)求協(xié)方差矩陣B的特征值λ1、λ2…λn。
3)根據(jù)式(7)計(jì)算相干系數(shù),k 值越大,表示數(shù)據(jù)越不相似。
對(duì)語譜圖進(jìn)行相干分析的步驟如下:
1)繪制語音信號(hào)的語譜圖,獲取語譜圖的灰度值矩陣。
2)獲取語譜圖的灰度值矩陣后選擇m×n 大小的窗口進(jìn)行相干分析,m 表示每一幀選擇m 個(gè)頻譜樣點(diǎn)數(shù)據(jù),n表示幀數(shù)。求該窗口數(shù)據(jù)的相干系數(shù)λ。
3)將窗口右移一幀,求當(dāng)前窗口的相干系數(shù)。依次計(jì)算,直到窗口到達(dá)語譜圖的最右端。
4)將(J-n+1)個(gè)相干系數(shù)中相鄰的系數(shù)連接起來得到相干系數(shù)曲線。
從圖2 可以看出在兩個(gè)元音的分界處相干系數(shù)較高。在相鄰字的語譜圖的界限處,相干系數(shù)有時(shí)出現(xiàn)明顯的極大峰值,可以作為切分的依據(jù)。圖2 顯示在圖1(b)的結(jié)果上加入相干分析后的端點(diǎn)檢測(cè)結(jié)果,明顯看出將“師恩難忘”四個(gè)字的語音信號(hào)分成了四個(gè)獨(dú)立的音節(jié)。
圖2 漢語“師恩難忘”的相干系數(shù)曲線和切分結(jié)果
4.1.2 多尺度分析
語譜圖上,語音信號(hào)的共振峰特征在不同頻率范圍內(nèi)的分布是不均勻的,導(dǎo)致提取特征信息的最佳位置不一致,因此需要用多個(gè)初始位置不同或者大小不同的窗口來進(jìn)行相干分析,以便適應(yīng)不同頻率范圍的變化。
圖3 漢語“那年”的語音信號(hào)的多尺度相干分析結(jié)果
本文的實(shí)驗(yàn)中我們選擇64×9(頻點(diǎn)范圍0~64,頻帶范圍0~2kHz)和128×9(頻點(diǎn)范圍0~128,頻帶范圍0~4kHz)兩個(gè)不同大小的窗口對(duì)語譜圖進(jìn)行相干分析。如圖3 所示,對(duì)比分析兩條曲線可以看出在“那”和“年”之間的連接處,64×9 的窗口無法表現(xiàn)出較高頻率的語譜圖的差異;128×9 的窗口因?yàn)榘酥懈哳l的頻譜差異,所以在相干系數(shù)曲線上有較明顯的波峰。
對(duì)于不同大小的窗口需要設(shè)置不同的閾值,本文的實(shí)驗(yàn)中,對(duì)64×9 的窗口設(shè)置的閾值為0.2;對(duì)128×9 大小的窗口,設(shè)置的閾值為0.15。當(dāng)相干系數(shù)大于設(shè)定的閾值時(shí)認(rèn)為該位置存在音節(jié)界限。對(duì)不同大小窗口的相干分析結(jié)果需要進(jìn)行綜合分析確定切分位置。綜合分析的基本思想:若兩條相干系數(shù)曲線中任意一條曲線在某一位置超過設(shè)置的閾值,就認(rèn)為該位置是兩個(gè)音節(jié)的分界線;若兩條相干系數(shù)曲線在同一大致位置都超過對(duì)應(yīng)的閾值,則取兩點(diǎn)的中間位置作為音節(jié)的分界線。
4.1.3 基音周期軌跡檢測(cè)
基音周期軌跡可以用來判斷元音段的位置,由于倒譜易受周期性復(fù)合噪聲的影響,有時(shí)會(huì)出現(xiàn)虛假的倒譜峰值,基音周期軌跡比基于倒譜的端點(diǎn)檢測(cè)結(jié)果更可靠。利用基音周期軌跡的檢測(cè)元音段的步驟如下:
1)獲取基音周期軌跡圖的像素值矩陣A(m×n),其中m表示幀長的1/2,n為語音幀數(shù)。
2)找出矩陣A 中含0(黑色像素點(diǎn))的行區(qū)間[a11,a12]…[an1,an2],如圖4 所示,其中[an1,an2]表示一組數(shù)據(jù),含義為第an1行到第an2行每行都含有值為0 的點(diǎn),元音段的基音周期軌跡肯定包含在某一個(gè)行區(qū)間內(nèi)。
3)對(duì)2)求出的行區(qū)間進(jìn)行篩選,找出平均含0值點(diǎn)大于5 的行區(qū)間,減少孤立像素點(diǎn)的干擾,例如圖 4 中的行段[a21,a22]明顯是孤立的像素點(diǎn)區(qū)間,需要除去。
4)用3)求出的行區(qū)間,例如圖6中的行段[a11,a12],組成新的矩陣 B,找出矩陣 B 中含 0 值的列區(qū)間[b11,b12]…[bn1,bn2]。
5)對(duì)步驟4)的列區(qū)間進(jìn)行合并,若相鄰列區(qū)間間隔小于一幀則合并為一個(gè)區(qū)間。
6)再次遍歷列區(qū)間,找出bi2-bi1≥l 的列區(qū)間,l為設(shè)定的閾值(l 需要根據(jù)完整元音段至少包含的幀數(shù)確定)。將列號(hào)轉(zhuǎn)為對(duì)應(yīng)的幀號(hào)即為所求基音周期軌跡區(qū)間。
基音周期軌跡檢測(cè)與基于倒譜的端點(diǎn)檢測(cè)的結(jié)果可以相互進(jìn)行校正。如圖4所示。
圖4 漢語“鄉(xiāng)村小學(xué)”的基音周期軌跡檢測(cè)
基音周期軌跡檢測(cè)到的元音段為[A,B]、[C,D]、[E,F(xiàn)]和[G,H],基于倒譜的端點(diǎn)檢測(cè)的結(jié)果為[I,J]、[K,L]、[M,N]和[O,P]。從圖4 可以看出兩種方法對(duì)“鄉(xiāng)”、“村”、“學(xué)”三個(gè)字的元音段的檢測(cè)結(jié)果相差不大,但是在“小”的元音段的檢測(cè)上,基于倒譜的端點(diǎn)檢測(cè)結(jié)果明顯沒有基音周期軌跡檢測(cè)結(jié)果準(zhǔn)確。
4.1.4 語譜圖灰度均值變化分析
漢語中輔音信號(hào)的能量一般集中在高頻部分,元音信號(hào)的能量集中在中低頻部分。通過觀察大量實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)音節(jié)變化時(shí),部分相鄰音節(jié)的界限處的像素點(diǎn)灰度分布會(huì)出現(xiàn)明顯變化,可以利用語譜圖上像素點(diǎn)灰度值的變化來尋找切分點(diǎn)。
具體實(shí)現(xiàn)方法:求時(shí)窗內(nèi)像素點(diǎn)的灰度均值,然后將時(shí)窗向右滑動(dòng),依次計(jì)算,直至語譜圖最右端,求相鄰窗口灰度均值的差值,然后歸一化處理。
語譜圖灰度均值變化曲線繪制步驟:
1)繪制語音信號(hào)的語譜圖,獲取灰度值矩陣。
2)選取m×n大小的時(shí)窗,m 表示窗口包含的頻率點(diǎn)數(shù),n表示幀數(shù)。求窗口內(nèi)像素點(diǎn)的灰度均值。
3)窗口水平右移,每次移動(dòng)n-1 幀的距離直至語譜圖最右端,獲取 k 個(gè)灰度均值 v1,v2…vk-1,vk,求相鄰兩個(gè)灰度均值之間差值的絕對(duì)值,然后歸一化得到k-1個(gè)數(shù)據(jù)。
4)將歸一化后的k-1 個(gè)數(shù)據(jù)中相鄰數(shù)據(jù)連接起來得到灰度均值變化曲線。
對(duì)“師恩難忘”的語音信號(hào)的語譜圖用128×9的窗口進(jìn)行分析后得到圖5 的灰度均值變化曲線,其中128 表示每一幀的第33~160 個(gè)數(shù)據(jù)點(diǎn)。因?yàn)樵谡Z譜圖上,0~1000Hz 頻帶范圍內(nèi)的像素點(diǎn)的灰度值分布較為均衡,無法體現(xiàn)灰度均值的變化;在1000Hz~5000Hz 頻帶范圍內(nèi)的像素點(diǎn)(第 33~160個(gè)數(shù)據(jù)點(diǎn))的灰度值隨語義變化較明顯,可以用來分析灰度均值的變化;當(dāng)頻率超過5000Hz時(shí),像素點(diǎn)的灰度值分布較為雜亂,會(huì)影響結(jié)果的準(zhǔn)確性。從圖5 可以明顯地看到在“恩”和“難”的界限處,灰度均值變化曲線出現(xiàn)了較高的極值,可以作為切分的依據(jù)。本文在大量觀察分析實(shí)驗(yàn)后,設(shè)定閾值0.15,當(dāng)灰度變化值大于0.15 時(shí)可以認(rèn)為對(duì)應(yīng)位置存在切分點(diǎn)。
圖5 漢語“師恩難忘”的灰度均值變化曲線
在4.1 節(jié)介紹了四種尋找切分點(diǎn)的思路,為了實(shí)現(xiàn)連續(xù)漢語語音切分,將4.1節(jié)的方法綜合起來,研究了多級(jí)切分方法,主要步驟如下:
1)利用雙門限端點(diǎn)檢測(cè)技術(shù)檢測(cè)到語音段[tn1,tn2]。
2)對(duì)1)的語音段利用基于倒譜的端點(diǎn)檢測(cè)技術(shù)找出元音段[l11,l12]…[lm1,lm2]。
3)利用基音周期軌跡檢測(cè)算法對(duì)2)的結(jié)果進(jìn)行校正得到校正后的元音段
4)元音段的末幀可以看作是一個(gè)切分點(diǎn),對(duì)于檢測(cè)到的最后一個(gè)元音段應(yīng)該與有聲段的結(jié)束幀tn2相吻合。獲得初步的切分結(jié)果
5)遍歷4)的切分結(jié)果,對(duì)連續(xù)元音幀數(shù)大于T的語音段(T 需要根據(jù)完整元音段一般包含的幀數(shù)m 來確定,T設(shè)置2m),利用多尺度相干分析檢測(cè)相干系數(shù)大于設(shè)定閾值的語音幀作為切分點(diǎn)。
6)遍歷5)的結(jié)果,對(duì)連續(xù)元音幀數(shù)大于T的語音段,利用語譜圖灰度均值分析找出灰度均值大于設(shè)定閾值的語音幀作為切分依據(jù)。
利用多級(jí)切分方法,通過相干分析、多尺度分析、基音周期軌跡檢測(cè)和語譜圖灰度分析將連續(xù)漢語語音切分為獨(dú)立的音節(jié)。通過對(duì)實(shí)驗(yàn)語音庫的語音文件進(jìn)行切分實(shí)驗(yàn),得到表1 的對(duì)比結(jié)果。從
表1 可以看出,對(duì)相同測(cè)試樣本,多級(jí)切分方法準(zhǔn)確率更高,比基于雙門限和倒譜的端點(diǎn)檢測(cè)技術(shù)和基于頻帶方差的切分方法分別高出33%和26%。
其中南京理工大學(xué)NJUST603 語音庫含男生210人,女生213人,T4語音文件為作家劉紹棠的文章《師恩難忘》,含593個(gè)漢字,本文的實(shí)驗(yàn)選取了5名男生,5名女生的T4語音進(jìn)行統(tǒng)計(jì)。
多級(jí)切分方法綜合了聲學(xué)、語音學(xué)、語言學(xué)的知識(shí),在分析漢語語音特征的基礎(chǔ)上利用雙門限端點(diǎn)檢測(cè)技術(shù)、基于倒譜的端點(diǎn)檢測(cè)技術(shù)、相干分析和基音周期軌跡檢測(cè)等方法對(duì)連續(xù)漢語語音進(jìn)行切分,獲得了較高的準(zhǔn)確率。實(shí)驗(yàn)中也發(fā)現(xiàn)一些問題需要去解決,例如對(duì)有些快速并且不清晰的發(fā)音如何確定音節(jié)的界限,這將是本文下一步的主要研究方向。