程 振,蔣 作,潘文林,馬孟星
(1.云南民族大學(xué) 電氣信息工程學(xué)院,云南 昆明 650500;2.云南民族大學(xué) 數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,云南 昆明 650500)
口吃是一種交流障礙,世界衛(wèi)生組織將其定義為:“一種言語節(jié)奏的紊亂,即口吃者因?yàn)椴蛔灾鞯穆曇糁貜?fù)、延長或中斷,無法準(zhǔn)確表達(dá)自己所想表達(dá)的內(nèi)容”.口吃主要表現(xiàn)在說話過程中句子開頭的發(fā)音困難,患者說話節(jié)律異常,表達(dá)不暢,整個過程中反復(fù)停頓.世界上約有1%的人受口吃困擾,給患者在工作和社交造成極大不便.口吃在2.5~6歲之間的兒童發(fā)病率高達(dá)5%,其中20%的兒童口吃患者,因沒有被正確對待和治療,會逐步發(fā)展為成年階段的口吃,最終成為終生口吃.因此,在兒童早期發(fā)現(xiàn)并解決語言障礙問題則至關(guān)重要.目前臨床醫(yī)學(xué)和心理學(xué)對兒童口吃做了大量的研究,其工作集中在兒童患者口吃的病因、病理機(jī)制、心理疏導(dǎo)、口吃矯正方法等方面.
然而在自然語言處理領(lǐng)域,針對兒童口吃語音識別研究及相應(yīng)語料資源的構(gòu)建較少.為解決稀缺口吃語料庫的問題,文中對21名5~8歲的兒童進(jìn)行了語音采集,再使用語音合成技術(shù)將該數(shù)據(jù)集合成兒童口吃語料庫,并對該語料庫進(jìn)行標(biāo)注.然后基于語料庫,使用ResNet模型識別口吃語段,并對識別結(jié)果進(jìn)行分析.
醫(yī)學(xué)領(lǐng)域?qū)τ趦和诔缘睦碚撗芯渴稚钊耄瑸樽匀徽Z言處理的領(lǐng)域奠定了基礎(chǔ),但是兒童口吃語料資源的匱乏限制了兒童口吃類型識別的研究.因此,國內(nèi)外研究者對口吃語音語料庫的構(gòu)建和口吃語音識別展開了相應(yīng)的研究.
1995年,Howell等[1]創(chuàng)新地開啟口吃自動識別研究,并于2009年創(chuàng)建了倫敦大學(xué)學(xué)院口吃演講檔案—UCLASS.UCLASS包含139名參與者的音頻樣本,參與者是患有不同嚴(yán)重程度的口吃患者,年齡在8到18歲之間.目前大多數(shù)的口吃研究都圍繞該語料庫展開[2],但因其標(biāo)注只包含采集時的地點(diǎn)、性別等信息,未對語音內(nèi)口吃發(fā)生的時間和類型進(jìn)行標(biāo)注,對口吃類型的檢測效果甚微.最近, Kourkounakis Tedd等[3]在2020年創(chuàng)建了LibriStutter語料庫,該語料庫是由加拿大女王大學(xué)的AIIM實(shí)驗(yàn)室創(chuàng)建,并對該語料庫進(jìn)行了口吃類型的標(biāo)注和相應(yīng)的識別研究.
針對漢語口吃語料庫的工作較少,F(xiàn)ang[4]使用了由天津醫(yī)科大學(xué)提供的50個口吃患者的400段口吃語音作為研究數(shù)據(jù).Zhang等[5]采集了由北京林教授言語訓(xùn)練中心的59名口吃患者的錄音作為研究數(shù)據(jù).由于以上的口吃研究語料不針對兒童口吃研究,不能直接用于兒童口吃識別工作,因此文中將構(gòu)建一個基于兒童語音的口吃語料庫.
早期的研究中,研究者們集中在區(qū)分口吃的可行性上,對一組特定的口吃詞進(jìn)行訓(xùn)練和測試.Howell等[6]第一次嘗試使用一組預(yù)定的單詞訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)定位口吃,從這些數(shù)據(jù)中提取音頻的自相關(guān)特征、光譜信息和包絡(luò)參數(shù),每一個都被用作一個完全連接的人工神經(jīng)網(wǎng)絡(luò)(ANN)的輸入.結(jié)果表明該模型在嚴(yán)重口吃下的分類效果最好,最大檢測率為82%.Ravikuma等[7]使用了多種音節(jié)重復(fù)分類器,包括隱馬爾可夫模型(HMM)和使用梅爾頻率倒序系數(shù)(MFCC)特征的支持向量機(jī)(SVM)[8].在使用支持向量機(jī)對15名參與者進(jìn)行口吃類型分類時獲得了最佳結(jié)果,準(zhǔn)確率達(dá)到94.35%.在中國口吃檢測研究中,Zhang等[9]通過建立HMM的發(fā)音質(zhì)量評估框架,并基于改進(jìn)的算法使重復(fù)性口吃的檢測錯誤率降低18%.在Chee[10]發(fā)表的口吃識別研究綜述中表明,限于當(dāng)時技術(shù)條件和算力的匱乏,HMM在口吃識別研究領(lǐng)域表現(xiàn)最佳.
近年,隨著計算機(jī)算力的提升,自動語音識別(ASR)和自然語言處理(NLP)等深度學(xué)習(xí)技術(shù)的發(fā)展,深度學(xué)習(xí)在口吃分類和識別方面效果顯著,逐漸成為口吃研究者采用的主流手段.其中Heeman[11]將語言病理學(xué)家的注釋與對應(yīng)詞合并,將基線提升了7.5%.Kourkounakis等[3]在2020年使用的FluentNet對LibriStutter語料庫的檢測準(zhǔn)確率達(dá)到了86.7%,在多類型口吃檢測中達(dá)到最優(yōu).
傳統(tǒng)的語音識別需要提取MFCC等特征信息訓(xùn)練聲學(xué)模型,然后根據(jù)語言中詞與詞的關(guān)系訓(xùn)練語言模型,保證得出正確語法的句子.但由于口吃語音的特殊性和受計算機(jī)視覺圖像識別的啟發(fā),本文將只關(guān)注聲學(xué)模型上的特征,將語音轉(zhuǎn)換成語譜圖,使用ResNet模型對語譜特征提取并識別.
本文首先對兒童語音進(jìn)行實(shí)地采集,然后采用語音合成技術(shù)生成口吃類型語音,再將其隨機(jī)填充到采集的兒童語音中,模擬真實(shí)口吃語音,最后對構(gòu)建口吃語音及真實(shí)口吃語音的語譜圖進(jìn)行相似度分析.
本文研究所用語料是與書丸子教育有限公司合作,對21名幼兒園兒童進(jìn)行語音采集所得.每名兒童被要求朗讀一段幼兒園教材的文章,語音以 16 kHz 采樣率、16 bit 量化的wav格式保存.
本文構(gòu)建的兒童口吃語料庫是在正常兒童語音的基礎(chǔ)上進(jìn)行合成口吃語音類型的填充,填充類型包括重復(fù)音、延長音和感嘆詞.其中語音的重復(fù)不僅是狹義上的語音重復(fù)即快速重復(fù)某一部分,而是廣義上的語音重復(fù),即可以將語音進(jìn)行重復(fù)再細(xì)分[12],具體的細(xì)分規(guī)則為[13]:音節(jié)重復(fù)(part-word repetition,PW)、字的重復(fù)(word repetition,WR)、短語重復(fù)(phrase repetition,PH).表1總結(jié)了語料庫的數(shù)據(jù)類型,并給出每個類型的例子.
表1 數(shù)據(jù)類型
本文通過對所有說話者的音頻進(jìn)行上述口吃類型的生成,對于給定的音頻文件,在每4秒的語音窗口中隨機(jī)插入一種口吃類型,并進(jìn)行相應(yīng)的標(biāo)注.兒童口吃語料庫具體構(gòu)建方法如下:
1)音節(jié)重復(fù)的構(gòu)建:實(shí)驗(yàn)將樣本中隨機(jī)挑選出的一個字的前一小部分重復(fù)1~3次.據(jù)VAN BORSEL J[14]研究表明音節(jié)的重復(fù)很少出現(xiàn)在詞的結(jié)尾,為保持聽起來自然,每個重復(fù)聲音之間會隨機(jī)添加100~300 ms 的空隙.
2)聲音拖長的構(gòu)建:將被隨機(jī)選中的字的后20%拉長5倍.由于將時間拉伸應(yīng)用于音頻會導(dǎo)致音高下降,因此需移動音高來重新調(diào)整,使其與原始音頻保持一致.
3)感嘆詞的構(gòu)建:其與上述情況不同,它需要添加原始音頻中沒有的填充詞(例如:“嗯”,“啊”),因此不能從現(xiàn)有的語音中產(chǎn)生.本文將從收集的多個常用填充詞樣本中分離出單個感嘆詞并進(jìn)行保存,從而形成一個感嘆詞庫.為模擬感嘆詞類型的口吃,實(shí)驗(yàn)從此庫中隨機(jī)選取感嘆詞插入語音中.同時為使語音聽起來更加自然,在感嘆詞后再加入一個短暫的間隙;最后使用與拖長音相同的調(diào)整音高方法匹配感嘆詞和原始音頻的音高.
為實(shí)現(xiàn)模擬自然口吃的最優(yōu)效果,本文通過上述步驟確保每種口吃類型被安插于語音中,并對每個生成的語音進(jìn)行標(biāo)注,使每個音頻文件都有一個相應(yīng)的CSV文件記錄該音頻的標(biāo)注信息,最終獲得具有125段語音的兒童口吃語料庫.圖1并排顯示了LibriStutter語料庫和構(gòu)建的兒童口吃語料庫相同口吃類型的語譜圖,為體現(xiàn)兩者類型相似度,本文隨機(jī)各抽取100個生成的樣本并計算對應(yīng)語譜圖的感知哈希相似度及漢明距離[15]的平均值,如表2所示.
圖1 語譜圖的對比
表2 LibriStutter和兒童口吃語料庫的感知哈希相似度及漢明距離的平均值
基于LibriStutter語料庫和構(gòu)建的兒童口吃語料庫,本文將對口吃的3種類型:重復(fù)(R)、拖長(P)、感嘆詞(I)和正常語音(N)進(jìn)行識別.為完成對口吃的分類,首先將音頻轉(zhuǎn)換生成語譜圖,然后將其輸入ResNet模型中,最后實(shí)現(xiàn)口吃識別.流程如圖2所示.
圖2 口吃識別流程圖
本文將兒童口吃的識別任務(wù)建模為識別各類口吃的任務(wù).輸入語譜圖數(shù)據(jù)M={m1,m2,…,mn},則模型需預(yù)測對應(yīng)的標(biāo)簽N={n1,n2,…,nn},其中ni∈{RPIN}.R代表對應(yīng)口吃的重復(fù)段,P代表口吃的延長段,I代表口吃的感嘆詞,N代表正常語音.
因?yàn)槁曇羰菚r變的短時平穩(wěn)信號,所以可以對語音信號進(jìn)行連續(xù)的短時傅里葉變換,將語音波形信號轉(zhuǎn)換成語譜圖,如圖3所示.標(biāo)注F-5-003_R含義為第5個女生(female)的第3段音頻中的重復(fù)類(R)口吃,其中橫軸表示時間,縱軸表示頻率,顏色的深淺代表能量的大小.
圖3 F-5-003_R語譜圖示例
為訓(xùn)練此次實(shí)驗(yàn)的模型,需對語音進(jìn)行分段處理,如若將整段語音直接進(jìn)行語譜圖變化,將整段語音映射到固定大小語譜圖后,每個詞對應(yīng)的特征分辨率將非常小,又因口吃持續(xù)時間不定,據(jù)統(tǒng)計一個詞的發(fā)聲時長約為 400 ms,對語音段經(jīng)過 0.7 s、1 s、1.5 s和 2 s 等不同時長的切割嘗試,最終確定2秒的段長最為適合,這樣的時間間隔中既會包括口吃也會有正常語音,又不會因?yàn)闀r間過長而導(dǎo)致特征失真.將語音按時間剪切成相應(yīng)的語音段,最終剪切出LibriStutter語料庫中的口吃語音段 8 838 個,兒童口吃語料庫中的語音段879個,共計 9 717 個2秒的語音段.最終將裁剪后的LibriStutter語料庫和兒童口吃語料庫的語音段分別進(jìn)行標(biāo)注并導(dǎo)出,各選取其中的60%作為訓(xùn)練集,20%作為開發(fā)集,20%作為測試集.口吃語音及標(biāo)簽的對應(yīng)關(guān)系如圖4所示.
注:聲音重復(fù)(黃色),延長音(綠色),感嘆詞(紫色)
本實(shí)驗(yàn)采用ResNet模型[16]對語譜圖進(jìn)行特征提取,其模型由一系列殘差塊組成,如圖5(a)所示,每個殘差塊可由(式1)表示為:
xl+1=h(xl)+F(xl,Wl).
(1)
表3 網(wǎng)絡(luò)模型參數(shù)表
圖5 殘差塊結(jié)構(gòu)及殘差網(wǎng)絡(luò)結(jié)構(gòu)圖
(2)
當(dāng)數(shù)據(jù)進(jìn)行反向傳播時,使用優(yōu)化函數(shù)為隨機(jī)梯度下降法(SGD),其中梯度更新步驟如(式3)所示:
(3)
其中,J(w)是代價函數(shù),N是樣本個數(shù),x(i)是第i個樣本,y(i)是x(i)相對應(yīng)的目標(biāo),α是學(xué)習(xí)率.
本文實(shí)驗(yàn)均基于TensorFlow1.14框架用Python語言實(shí)現(xiàn),實(shí)驗(yàn)環(huán)境:16 GB 內(nèi)存的Windows10操作系統(tǒng);CPU 為Intel(R)Core(TM)i3-4160 CPU @ 3.60 GHz;GPU為 8 GB 顯存的NVIDIA GeForce GTX 1070 Ti.
訓(xùn)練前,使用PIL庫的Image.open函數(shù)將圖片讀取并resize成100×100×3的尺寸大小,再將圖片轉(zhuǎn)換成計算機(jī)便于讀取的二進(jìn)制npy文件.訓(xùn)練過程中,設(shè)置模型的參數(shù)為:批次數(shù)32,輪次100;選擇SGD作為參數(shù)更新方法,其中學(xué)習(xí)率 為2×10-3,衰減率為5×10-3,動量為0.9.經(jīng)過100次網(wǎng)絡(luò)迭代后模型趨于收斂.
由于使用神經(jīng)網(wǎng)絡(luò)模型識別口吃的研究工作相對較少,本文對神經(jīng)網(wǎng)絡(luò)模型的構(gòu)建進(jìn)行探索,本次實(shí)驗(yàn)分別使用AlexNet、VGG-16 以及ResNet模型,為體現(xiàn)實(shí)驗(yàn)準(zhǔn)確性和對比的目的實(shí)驗(yàn)?zāi)P投际褂蒙鲜鱿嗤某瑓?shù),對兒童口吃語料庫和LibriStutter兩個語料庫分別進(jìn)行實(shí)驗(yàn),其結(jié)果如表4所示.根據(jù)表中的實(shí)驗(yàn)結(jié)果可得,ResNet最終測試準(zhǔn)確率穩(wěn)定在93.07%和91.19%,表現(xiàn)均優(yōu)于其他2種模型,檢測準(zhǔn)確率比FluentNet提升4.49%.
表4 口吃分類平均準(zhǔn)確率
圖6為ResNet在兒童口吃語料庫和LibriStutter兩個語料庫上的訓(xùn)練情況,圖中兒童口吃語料庫用橙色實(shí)線表示,LibriStutter語料庫用藍(lán)色實(shí)線表示.從圖6(a)中可發(fā)現(xiàn),在訓(xùn)練初期,交叉熵驗(yàn)證損失值較高,且存在明顯的震蕩,但隨著迭代次數(shù)的增加,2個語料庫的損失值均逐漸收斂.從圖6(b)中可得,在初期的迭代過程中仍存在震蕩,但分別在第25次迭代和第10次迭代之后,兒童口吃語料庫和LibriStutter庫兩個語料上的交叉熵驗(yàn)證準(zhǔn)確率趨于穩(wěn)定.從圖中訓(xùn)練情況可知,ResNet網(wǎng)絡(luò)在兒童口吃類型識別中能夠較好地提取語譜圖特征.
圖6 基于ResNet模型的口吃語譜圖交叉驗(yàn)證準(zhǔn)確率及損失變化折線圖
本文為解決國內(nèi)可用口吃語料庫稀缺和輔助口吃類型識別問題,構(gòu)建了兒童口吃語料庫.使用該語料庫和LibriStutter庫的語音作為實(shí)驗(yàn)數(shù)據(jù),以 2 s 為間隔切割語音并轉(zhuǎn)為語譜圖,對卷積神經(jīng)網(wǎng)絡(luò)識別口吃類型進(jìn)行探究.實(shí)驗(yàn)結(jié)果表明,隨著卷積神經(jīng)網(wǎng)絡(luò)深度的增加,模型能夠有效的獲取語譜圖中的特征信息,在增加網(wǎng)絡(luò)深度時使用ResNet模型殘差結(jié)構(gòu)的捷徑反饋方式不僅能有效防止梯度消失和梯度爆炸的問題,還能夠提高網(wǎng)絡(luò)識別精度,在中文口吃數(shù)據(jù)集上的檢測準(zhǔn)確率達(dá)到了93.07%,在LibriStutter數(shù)據(jù)集上檢測準(zhǔn)確率比FluentNet提升了4.49%.在接下來的工作中,將對數(shù)據(jù)資源做進(jìn)一步的擴(kuò)充,以保證模型的穩(wěn)健性和可靠性,并基于該資源對兒童口吃識別進(jìn)行深入研究.