S(n)=s(n)-a·s(n-1)
其中,權(quán)系數(shù)選取經(jīng)驗(yàn)值a=0.937 5。短時(shí)處理指的是將原始語音信號(hào)進(jìn)行分幀加窗。這樣做的依據(jù)是在很短的一段時(shí)間內(nèi),可以假定聲音信號(hào)是穩(wěn)定的。
特征提取方面主要采用了在孤立詞語音識(shí)別方面有廣泛應(yīng)用的MFCC算法來提取語音信號(hào)的特征[4],而最后的距離判定方法采用了DTW算法。之所以采取MFCC算法與DTW算法相結(jié)合來進(jìn)行相同語音內(nèi)容的說話人識(shí)別,是因?yàn)檎Z音內(nèi)容相同,則2個(gè)語音序列必然開始和結(jié)束于相同的字符,雖然不同人的發(fā)音習(xí)慣導(dǎo)致了語音時(shí)間有所差異,但是這種程度上的差異可以通過DTW算法來彌補(bǔ)[5-6]。因此,通過上述過程來進(jìn)行相同語音內(nèi)容的說話人識(shí)別是可行的。具體實(shí)施步驟如下:首先對(duì)所有的語音樣本進(jìn)行MFCC特征提取,然后提取測(cè)試樣本的MFCC特征,最后使用DTW算法衡量2個(gè)MFCC特征序列之間的距離,作為判斷依據(jù)。
本次實(shí)驗(yàn)中,共采用4個(gè)實(shí)驗(yàn)組,每組含測(cè)試樣本1個(gè)和待匹配樣本20個(gè)。而在每組的20個(gè)待匹配樣本中,有1個(gè)來自于和本組測(cè)試樣本來源相同的說話人的語音采樣,其余19個(gè)均為不同的說話人提供的語音樣本。測(cè)試時(shí)首先提取本組所有待匹配樣本的MFCC特征,然后用測(cè)試樣本的MFCC特征與組內(nèi)所有待匹配樣本的MFCC特征進(jìn)行DTW算法的距離計(jì)算[7],最后根據(jù)距離結(jié)果進(jìn)行樣本的判定。計(jì)算的結(jié)果如表1所示。

表1 相同說話人的識(shí)別結(jié)果Tab.1 Result of the speaker recognition of the same speakers
通過4組樣本的距離數(shù)據(jù)對(duì)比,選取判斷的閾值為4組的測(cè)試樣本與相同來源樣本之間距離平均值的 1.5 倍,即w=41.5 作為判斷閾值。在該閾值的判斷下,相同語音內(nèi)容的說話人識(shí)別可以得到較好的判斷結(jié)果。
2 不同語音內(nèi)容的說話人識(shí)別
在不同語音內(nèi)容的說話人識(shí)別方面,特征提取的部分同上述相同語音內(nèi)容的說話人識(shí)別過程。但是對(duì)于相同語音內(nèi)容的說話人識(shí)別,兩個(gè)語音時(shí)間序列的主要不同之處體現(xiàn)在人的發(fā)音習(xí)慣上,雖然略有差異,但是這種時(shí)間上的差異并不明顯。而在不同語音內(nèi)容的說話人識(shí)別方面,由于語音內(nèi)容的不同,因此待區(qū)分的樣本時(shí)間長度也不同。由于最終本文采用的是累積距離度量的方式,所以在語音樣本長度大于最低有效長度的情況下,持續(xù)時(shí)間越長,兩個(gè)樣本之間的距離累積則必然越大。因此,若進(jìn)行不同語音內(nèi)容的說話人識(shí)別,則必須保證無論輸入任何長度大于有效長度的語音內(nèi)容,其輸出的待匹配模板的長度必須是一致的。因此,在依據(jù)不同長度的語音樣本進(jìn)行距離計(jì)算時(shí),應(yīng)首先對(duì)樣本的MFCC矩陣進(jìn)行降維,以保留該矩陣中有效成分最大的幾個(gè)維度,再進(jìn)行聚類以減少其中向量的個(gè)數(shù)加快計(jì)算的速度。通過上述方式,使得輸入的語音樣本最終都成為維度相同的模板,從而進(jìn)行模板匹配以完成樣本的分類。此處,降維算法選取主成分分析(principal component analysis, PCA)算法,而聚類算法采用K-means++算法。
根據(jù)前述分析,提取MFCC特征之后需要按照分量的重要性進(jìn)行加權(quán)[7],然后按照特征值占比規(guī)則進(jìn)行降維。為了確定降維的程度,首先對(duì)所有數(shù)據(jù)按照組別進(jìn)行降維測(cè)試,結(jié)果見圖2。

圖2 不同語音內(nèi)容的降維測(cè)試Fig.2 Dimension reduction for distinct speech contents
圖2中所有虛折線代表在處理的過程中,該語音樣本提取MFCC之后的MFCC向量個(gè)數(shù),所有實(shí)折線表示該語音樣本若要滿足特征值占比原則,至少需要保留的特征值個(gè)數(shù)。通過圖2可以發(fā)現(xiàn),要滿足特征值占比原則,特征值個(gè)數(shù)至少為5個(gè)。因此,在后續(xù)的識(shí)別降維過程中,統(tǒng)一取奇異值分解后按大小排序的前5個(gè)特征值對(duì)應(yīng)的特征向量作為主成分的投影向量對(duì)原數(shù)據(jù)進(jìn)行降維。
之后,對(duì)降維后的數(shù)據(jù)進(jìn)行聚類。由于聲音樣本的MFCC特征向量的個(gè)數(shù)均位于200左右,因此選擇聚類中心個(gè)數(shù)為50個(gè)進(jìn)行聚類。然后采用DTW算法應(yīng)用于聚類后的聚類中心向量,計(jì)算兩個(gè)MFCC時(shí)間序列之間的距離。測(cè)試中,以說話人A作為樣板對(duì)象,使用包括A在內(nèi)的4位說話人的聲音樣本依次與A的聲音樣本進(jìn)行對(duì)比。在兩個(gè)不同閾值設(shè)定的前提下,計(jì)算結(jié)果見表2。

表2 說話人在不同閾值下的識(shí)別率Tab.2 Speaker Recognition rates to different thresholds
結(jié)果表明,當(dāng)閾值從 187.325 1 調(diào)節(jié)至 194.085 時(shí),說話人A的識(shí)別率從60%上升為80%,而其他幾位說話人的識(shí)別率則有一定程度的下降。特別地,D的識(shí)別率從50%下降至20%。顯然該方法無法對(duì)說話人D進(jìn)行較好的識(shí)別,而對(duì)另外2位說話人的識(shí)別有一定的效果。
3 結(jié) 論
本文主要針對(duì)相同語音內(nèi)容和不同語音內(nèi)容兩個(gè)類別的說話人語音識(shí)別進(jìn)行了探究,其中涉及到的所有算法均采用Python語言實(shí)現(xiàn),大大的縮短了程序的實(shí)現(xiàn)時(shí)間,并且便于調(diào)試和維護(hù),同時(shí)也具有較強(qiáng)的可移植性。在相同語音內(nèi)容的說話人識(shí)別方面,采用MFCC結(jié)合DTW算法完成樣本的分類。在不同語音內(nèi)容說話人識(shí)別方面,致力于尋找一種方法,將不同時(shí)間長度的語音樣本整合為相同或相近維度的特征模板。在實(shí)際探究中發(fā)現(xiàn),先進(jìn)行降維然后聚類,以保證不同語音樣本特征矩陣維度相近或相同,然后再進(jìn)行匹配,是一個(gè)值得繼續(xù)研究的方向。
在相同語音內(nèi)容的說話人識(shí)別方面,MFCC特征結(jié)合DTW算法得到了較好的識(shí)別效果。而在不同語音內(nèi)容的說話人識(shí)別方面,先進(jìn)行PCA降維和K-means++聚類,然后進(jìn)行DTW算法識(shí)別,卻未有非常出色的表現(xiàn),總結(jié)原因可能有以下兩點(diǎn):
(1) K-means++算法中依靠距離聚類的算法不能處理非球形簇的情況[8],而MFCC向量本身的分布有可能不是球形簇。
(2) PCA算法雖然可以使用低維數(shù)據(jù)代替高維數(shù)據(jù),但是畢竟是一種無監(jiān)督學(xué)習(xí)算法,且貢獻(xiàn)率小的主成分也可能含有樣本差異的重要信息。
針對(duì)上述兩點(diǎn),提出日后研究的改進(jìn)方案如下:
(1) 更換其他聚類算法,例如,采用基于密度的DBSCAN聚類算法[7]。
(2) 采用未降維的原始數(shù)據(jù)進(jìn)行計(jì)算或采用其他降維算法如:監(jiān)督型線性降維算法(linear discriminant analysis, LDA)或者采用非線性降維算法(locally linear embedding, LLE)。