?

基于word2vec的語音識別后文本糾錯

2020-11-17 06:55張佳寧嚴冬梅
計算機工程與設計 2020年11期
關鍵詞:音頻語義語音

張佳寧,嚴冬梅,王 勇

(天津財經大學 理工學院,天津 300222)

0 引 言

隨著在線會議、慕課及自媒體視頻等的興起,離線長音頻生成字幕的需求呈現爆炸式增長,傳統的以人為主的技術已經不能滿足需求,將語音識別技術(automatic speech recognition,ASR)運用于字幕制作是大勢所趨。然而實際應用中,由于環境噪音、語音質量、方言和說話方式以及ASR系統詞匯量等多因素的影響,會不可避免地導致ASR的錯誤[1]。

許多研究人員為降低語音識別錯誤率做了大量研究。Graves A[2]通過增加詞與詞之間的停頓提高正確率;Fujiwara K[3]通過提出一種更適于人發音的語音字母表改進了語音輸入;Che J等通過分析語音識別錯誤的案例,提出一種特有的基于漢語語音、語言特征的文本校正和意圖識別方法[4]。但這些研究[2-4]都聚焦在短句實時識別,與長音頻的ASR結果有很大不同。

Ogawa A等[5,6]提出一種使用深度雙向回歸神經網絡進行ASR誤差檢測和識別率估計的方法;Rahhal Errattahi等[7]利用變量神經網絡(V-RNN)模型進行錯誤檢測和錯誤類型分類。但這些研究[5-7]都是針對分類任務的,用有限的規則去約束復雜多變的語言顯然不合理。

Geonwoo Park等[8]提出一種用于常規ASR系統的拼寫錯誤校正后處理模型,但由于誤識別詞的候選集僅由語音識別產生的備選詞構成,導致該方法嚴重依賴ASR的識別結果。

針對上述研究中存在的問題,本文提出一種基于word2vec的糾錯方法,即利用word2vec建立語義和語境詞典,使用百度公開的深度語言模型,解決語音識別后得到的文本與原始音頻不符的問題。

1 基于word2vec的語音識別后文本糾錯

1.1 基于word2vec的語義相似度

計算機在處理詞語時會用一種數學化的形式表示詞語,稱為詞語的向量化。word2vec與獨熱編碼(One-Hot Encoder)的目的都是把詞映射到n維空間。但不同于One-Hot Encoder,為了防止因為數據稀疏帶來的維數災難問題,word2vec將詞轉化成了稠密向量。

word2vec由Tomas Mikolov等提出[9,10],它是在神經網絡語言模型(neural network language model,NNLM)基礎上建立的。word2vec用Huffman樹作為最后一層輸出層,僅考慮“局部上下文”來學習有意義的詞向量。

詞在轉化為向量時,意思相近的詞會被映射到空間中相近的位置。word2vec根據這一特性,使用夾角余弦[11]來反映詞語間的關聯程度。夾角余弦的計算方法如式(1)所示,空間中的兩個詞的語義越相似,它們的夾角余弦值也就越接近于1

(1)

式中:W1,W2為詞向量,W1i,W2i分別表示W1,W2的各分量。

在語義上越接近的詞,出現在同一語境的可能性越大,因此本文在進行語境檢測時使用了基于word2vec的語義相似度計算方法。

1.2 語境關鍵詞的提取

情景語境指說話人說話當時當地所處的環境。無論在何種環境中,某一時刻的說話內容總是圍繞一個特定主題展開的,本文稱之為語境核心詞(簡稱核心詞)。如“指針”是C語言的代表,若再提到“繼承”、“友元”、“類”就會聯想到C++語言。關鍵詞是指在特定語境含有特定意義的詞,范圍大于核心詞。

考慮到算法的擴展性、用戶友好性,本文參考李躍鵬等[12]的方法,使用預訓練好的word2vec模型結合少量語境核心詞構建關鍵詞集。

語義相似度表明了詞與詞在語義上的相關程度,與核心詞在語義上距離比較近的詞,也是對于整個語境比較重要的詞。因此,關鍵詞集由與核心詞語義相似度相近的詞組成。具體計算方法如式(2)和式(3)

(2)

n_c表示cores中詞的總數,corei表示核心詞集cores中的第i個核心詞,wordj表示語料庫中第j個詞,tmp_KeyScorej表示wordj與核心詞集cores語義相似度的均值

retention_factorsj=tmp_KeyScorej-β

(3)

retention_factorsj表示wordj的保留因子;β是一個可調閾值參數,它限制著retention_factorsj。當β值比較大時,retention_factorsj相應就比較小,所對應的wordj被保留在關鍵詞集的概率也就比較??;反之,則wordj被保留在關鍵詞集的概率就比較大。

求得詞集后,對詞集tmp_keys進行排序,并將結果保存到最終的關鍵詞詞集keyword_set。關鍵詞詞集keyword_set可以分成兩部分,第一部分由出現在當前語境的詞組成,第二部分由未出現在當前語境的詞組成。第一部分按照對糾錯的貢獻性又可以劃分成兩組,第一組為對糾錯有貢獻的,第二組為對糾錯沒有貢獻的。關鍵詞詞集keyword_set中最后真正有用的,只有第一部分中的第一組中所含的詞。在每次查找時,如果不對關鍵詞詞集keyword_set加以約束,詞集中所有詞就都會被遍歷。這不僅沒有提高糾錯正確率,還產生了較高時間代價。為了提高查詢關鍵詞集的效率,參考Salihefendic A等[13]的方法,本文對關鍵詞進行了排名,在糾錯時對keyword_set中的詞投票,具體計算方法如式(4)和式(5)

(4)

其中,wi表示待修改文本中第i個詞,w_pyi表示wi的拼音,keyword_seti表示keyword_set中與w_pyi對應的詞,xi表示待修改文本中第i個詞的拼音的貢獻度

(5)

其中,word_frei表示keyword_set中的第i個詞wordi的詞頻;α1、α2是可調的參數,表示隨著連續語音的識別,word_frei隨著時間的變化。

更新keyword_set中詞的詞頻后,對keyword_set中詞進行約束,規定將小于某一閾值的詞停用。

1.3 最終混淆集的生成

1.3.1 深度語言模型

語言模型描述的是在語言學中詞與詞在數學上的關系,它在文本糾錯中起著至關重要的作用。在過去的自然語言處理中,N-Gram模型因其簡單、易用、有效的特點,一直發揮著重要的作用[14]。但是隨著N元文法的增加,模型參數會變得很大,對于長距離的語境信息不能很好地利用。此外,數據稀疏也一直是N-Gram不可避免的問題。DNNLM則是在深度學習的基礎上建立的,它不僅比 N-Gram 能利用更多的上下文信息,而且在訓練中采用了詞向量,減少了數據稀疏性對于模型的影響。

訓練一個好的語言模型需要十分龐大的正確語料以及一定軟硬件支持。過去這項工作在國內一直由研究者或者相關領域的企業所有,市場上很難獲得一個訓練好的模型的接口。2017年百度免費開放了依托海量優質數據和最新技術訓練的DNNLM,為研究者提供了一個實用便捷的工具。本文在模型中使用DNNLM對輸入文本中的詞進行判斷,從而得出該詞出現在當前文本中的概率。

1.3.2 混淆集的縮減

考慮到語音識別時一些字的音會發生變化,混淆集中的替換詞不能只包含同音詞,初始混淆集需要采用PYCN生成。在采用PYCN生成混淆集時,由于原始詞拼音的不確定性,使得生成的初始混淆集tmp_con中詞的數量眾多。例如:使用“雞蛋”生成混淆集時,最終會得到“幾單”、“忌憚”等100多個搜索結果。而DNNLM為了覆蓋范圍更全面、結果更合理,模型一般都很大,如果將這些結果都輸入到模型中進行查詢,時間開銷將會非常大。為了解決這一問題,本文利用語境知識縮減混淆集中詞的數量。本文先從測試集中選取了85個測試實例,然后又從3個領域中選取了85個詞進行了實驗。實驗結果如圖1和圖2所示。

圖1 使用NNLM計算句子得分時間開銷

圖2 使用word2vec計算詞語間相似度時間開銷

圖1是使用DNNLM計算句子得分的時間開銷,橫坐標表示輸入句子的數量,縱坐標表示使用的時間,單位為s。圖2是使用word2vec計算詞語間相似度的時間開銷,橫坐標表示輸入詞的數量,縱坐標表示使用的時間,單位為ms。

由圖1、圖2可知,使用word2vec計算80個詞與詞的語義相似度花費的時間僅為0.0020 s,使用DNNLM查詢80句話的時間開銷已經達到25 s,計算語義相似度的時間開銷要遠遠小于計算語句語言模型得分的。核心詞表示了當前語境的主要內容,語境中出現的其它詞在理論上不應該與核心詞在語義上相距太遠??梢?,利用語義詞典查詢詞與詞的語義相似度,將混淆集中與語境相距太遠的詞篩除,來縮小混淆集中詞的數量,不僅不影響糾錯結果,還減少了查詢語言模型的次數,提高了糾錯效率。因此,為了減小模糊集的數量,可以對tmp_con中的詞與核心詞進行語義相似度計算,從而排除一些不合語境的詞。計算語境得分的計算方法如式(6)所示

(6)

tmp_conj表示文本詞集tmp_con中的第j個元素,con_scorej表示tmp_conj的在當前語境的得分。

只要con_scorej的得分小于閾值ε,就認為tmp_conj出現在當前文本不合理,將tmp_conj從混淆集tmp_con中移除。重復這一過程,得到最終的混淆集confusion_set,將候選詞依次帶入DNNLM中計算文本得分,重排序,選出最合適的文本。

1.4 整體流程

整體流程如下。

步驟1 對輸入的音頻進行預處理,將處理后的音頻輸入語音識別系統中,將音頻轉化成文字。

步驟2 將語音識別后待處理的文本輸入到糾錯檢錯系統,對文本進行第一次處理,去除無意義的語氣詞、口頭禪和一些使用語音識別工具常見的錯誤。

步驟3 對第一次處理后的文本進行第二次處理,利用關鍵詞進行檢錯糾錯,并且更新關鍵詞詞表。

步驟4 對第二次處理的結果進行處理,然后利用NNLM對句子中的每個詞進行打分,將分數明顯區別于其它詞語的詞添加到“誤識別”的列表中,對誤識別的詞進行糾錯。

2 實驗與結果分析

2.1 語義相似度詞庫

訓練基于word2vec的語義相似度模型,需要大量語義上正確的文本。語義的基礎詞庫方面,本文使用了維基百科提供的中文語料和網上爬取的新聞語料,共有3 G。對語料進行預處理,使用NLPIR漢語分詞系統進行分詞。調用了Gensim的word2vec模型[15]進行訓練,得到語義的基礎詞庫。

2.2 評價指標

在對算法性能的評價中,采用了召回率(Recall,又稱查全率),準確率[16](Precision,又稱查準率)和F1值作為評價標準,來判斷模型中算法的有效性。計算公式見式(7)、式(8)和式(9)

(7)

(8)

(9)

2.3 實 驗

2.3.1 語音識別

實驗中語音識別的音頻包括有3個來源:①現場教學錄音,《管理學原理》中“控制”一章的教學視頻,時長為1個小時;②遠程錄播課,“學習強國”和“馬克思主義大講堂”中關于馬克思主義原理的內容,時長為50 min;③有聲圖書,《錢不要存在銀行》中的第一、二章內容,時長為1 h 10 min。語音識別工具調用了百度語音的SDK。

如表1語音識別結果所示:實驗中把誤識別詞分成3類:第一類,識別后詞語拼音沒有發現變化;第二類,識別后詞語長度發生變化;第三類,識別后詞語長度不變,但拼音發生變化。所選的音頻一是教師在課堂上直接錄制的,雖然語音聽上去吐字清晰,語速也適當,但從視頻中分離的音頻仍然含有各種雜音,比如老師的翻書聲、話筒的嘶嘶聲、學生的竊竊私語聲。語音識別的最終結果吞音、吐音現象很明顯,在誤識別的詞集中,僅有26.24%是替換錯誤,例如“就是所有的活動、所有的工作都是需要受到控制的,所有的人都需要受到控制,不是說你是領導就不受控制,你是部門主管就不受控制,那不行?!北蛔R別成了“活動,所有的工作是需要適當控制的,所有的人都說你是領導就不受控制,你是部門主管就不行?!?。所選的第二個和第三個音頻則雖然是在安靜環境下錄制的,但也存在一定雜音。

表1 語音識別結果

2.3.2 檢錯糾錯

實驗中,為了使用核心詞擴展關鍵詞,每個音頻都選取了5個對于它所處語境具有代表意義的詞來構建核心詞庫,將每個核心詞代入word2vec模型中,選擇與核心詞語義最相近的詞,排序去重后構建出關鍵詞集。例如,音頻②的核心詞與部分關鍵詞見表2。

表2 核心詞與關鍵詞

為了驗證本文所提出方法的有效性,實驗中采用了3種方法進行對比。方法一,傳統2_Gram+3_Gram糾錯方法;方法二,沒有使用語境的DNNLM方法;方法三,本文提出的使用語境的DNNLM方法。實驗結果見表3。

表3 3種方法的準確率、召回率以及F1值/%

由表3中3種方法的準確率、召回率以及F1值可知,本文提出的方法在3個測試集上的準確率、召回率和F1值都要明顯優于傳統N-Gram和未使用語境知識的DNNLM方法。

通過對比傳統N-Gram、未使用語境的DNNLM和使用語境的DNNLM得到的實驗數據,驗證了本文中使用的深度語言模型在檢錯糾錯方法的明顯有效性,在此不再分析。對比使用語境與未使用語境的DNNLM方法,可以驗證語境詞對檢錯糾錯效果。對表3的實驗結果進行計算,(方法三數據-方法二數據)/方法二數據,得到見表4。

使用語境的糾錯方法對比未使用語境的,其準確率、召回率、F1值都有了較大提高。由表4結果可得:在使用語境知識后,測試集中語句的原始結構被打亂,進一步定位了句子的范圍,為后續使用深度語言模型進行檢錯奠定了基礎,從而提高了算法檢錯糾錯能力。

表4 使用語境與未使用語境的DNNLM實驗結果對比/%

為了驗證利用語境詞典可以提高糾錯效率,分別對使用了語境詞典和沒有使用語境詞典兩種情況的時間進行了差值計算,時間提高的計算方法見式(10)

Time_difference=no_use_time-use_time

(10)

no_use_time表示沒有使用語境詞典查錯糾錯花費的時間,use_time表示使用了語義詞典查錯糾錯花費的時間。

實驗中隨機從測試集中選取了86個例子。圖3為有、無語境知識進行文本糾錯的時間差,橫坐標表示輸入句子的數量,縱坐標表示沒有使用語境知識和使用語境知識進行文本糾錯的時間差,單位是s。從圖3中可知,在利用DNNLM檢錯糾錯時,利用語境知識比沒有利用語境知識快了600 s。對3個測試集進行計算效率的測試,音頻①、音頻②和音頻③的時間差分別為721 s,367 s,541 s。語境知識可以有效地提高檢錯糾錯效率,尤其在語句比較長的情況下,語境知識可以很好地縮減混淆集的規模,從而將文本糾錯的速度大幅提高。

圖3 有無語境知識的時間差

2.4 實驗結果分析

在2.3的實驗中,使用了最新的ASR技術對長音頻文件進行語音識別后文本糾錯。實驗結果表明:對于上文中現場教學、遠程錄播和有聲圖書音頻在ASR下產生的文本,本文提出的基于word2vec的糾錯方法,相比于使用傳統語言模型的方法和不使用語境信息的糾錯方法,不僅能夠提高糾錯的準確率、召回率和F1值,還能通過縮減混淆集中詞的數量,提高計算的效率。

在實驗中,還發現以下3種情況。第一,說話人在講課、演講、發言時的說話方式與朗讀新聞或者文學著作時是有差別的。在識別這些偏口語化的長音頻時,在查錯階段,語言模型會查出許多本身不是錯誤,但不是很書面的詞的“錯”。第二,說話人在說話時,其語速、音調在不同時刻可能是不一樣的,致使語音識別時會因為音頻信號的突然改變而出現吞音、吐音的現象,從而使識別后的詞與原始詞存在較大差別,使得測試集中很多錯誤實驗方法檢測不出來。這為后期文本糾錯帶來了一定的挑戰。第三,不同地域語言發音存在差異,相同詞語在不同地域的讀音也會略有差異。

由于存在以上3種情況,即使使用最新的ASR技術,識別后的文本也已經和原始文本有了很大出入,而本文的實驗分析是采用原始文本作為正確文本的對比樣本,所以,雖然與其它方法相比,準確率與召回率都有了較大提高,但其絕對值仍然比較低,需要繼續提高ASR水平。

3 結束語

本文從現有ASR技術出發,提出一種基于word2vec的語音識別后文本糾錯方法。主要貢獻點:①提出使用公開深度語言模型進行檢錯;②提出結合少量語境核心詞利用word2vec生成關鍵詞集;③提出使用word2vec縮減混淆詞集數量。實驗結果表明:本文提出的方法,對不同類型、不同領域的長音頻語音識別后文本糾錯是有效的,對實際應用中長語音的語音識別有一定現實意義。

盡管如此,長音頻的語音識別后文本糾錯仍然有很大提升空間,今后的研究可以將個人化發音特色加入PYCN方法中,考慮個性化的混淆集生成方法。

猜你喜歡
音頻語義語音
語言與語義
魔力語音
基于MATLAB的語音信號處理
基于MQ3與MP3的價廉物美的酒駕語音提醒器
必須了解的音頻基礎知識 家庭影院入門攻略:音頻認證與推薦標準篇
對方正在輸入……
基于Daubechies(dbN)的飛行器音頻特征提取
音頻分析儀中低失真音頻信號的發生方法
批評話語分析中態度意向的鄰近化語義構建
“社會”一詞的語義流動與新陳代謝
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合