天天看點

【技術揭秘】任務型語音對話中的糾錯系統

來源 阿裡語音AI 公衆号

1.背景

任務型語音對話系統主要由以下的子產品組成,分别是語音識别(ASR)、自然語言了解(語義了解, NLU)、對話管理(DM)、自然語言生成(NLG)和語音合成(TTS)。

【技術揭秘】任務型語音對話中的糾錯系統

圖 1任務型語音對話系統互動流程

語音識别是任務型對話系統互動任務喚醒後的首要環節,也是後續子產品處理的基礎。然而在語音互動過程中,說話人的口音、環境噪音,或者語句内容本身的同音多詞等因素,會造成語音識别錯誤。圖1展示的串行流程的語音對話系統中,識别錯誤會逐級傳遞放大,并累積至後續鍊路,最終造成對話任務的失敗。

【技術揭秘】任務型語音對話中的糾錯系統

圖 2錯誤累積圖示

本文主要詳細介紹語音對話中的糾錯系統。糾錯系統旨在對錯誤的語音識别結果進行魯棒了解和修正,給業務後續搜尋提供更準确的輸入,以及改善識别展示結果。

【技術揭秘】任務型語音對話中的糾錯系統

圖 3糾錯示例

糾錯系統将主要應用在以下業務中:

智能語音電視,使得人們可以通過語音對話技術來控制電視機,包括使用語音來搜尋播放歌曲、視訊、進行各種指令控制以及查詢資訊服務等,從繁瑣的遙控器文字輸入中解脫出來。

高德語音助手,秉承AI賦能出行業務的目标,通過語音互動的方式高效搜尋地點規劃路線、查詢多種内容服務、操作各種出行設定,讓使用者在導航過程中解放雙手,降低行駛過程中操作螢幕的風險。

2.研究現狀

在文本糾錯任務上, 學術界目前的主流是使用端到端模型, 輸入是原始文本,輸出是糾錯後的文本。最近ICASSP2020的論文[1], 使用基于BERT的神經網絡翻譯(NMT)模型對語音識别結果進行糾正。這樣的方式避免了人工特征提取的步驟,依靠端到端模型“直接”完成糾錯任務。ACL2020的論文 [2],通過聯合訓練基于BiGRU的檢測網絡和基于BERT的修正網絡,預測輸入序列每個位置對應的糾正詞。這些模型都需要大量高品質的訓練資料保障模型效果。同時,端到端的模型無法直接更新糾錯詞庫,需要重新訓練模型或增加額外子產品。

另一個方向是工業界普遍采用的分階段糾錯架構,通常分為錯誤檢測、候選召回、糾錯排序、糾錯結果評估等多個階段。分階段子產品化的設計,友善各子產品單獨優化,落地的效果比較好。友商的糾錯系統,有的是基于通用領域的糾錯,有的是針對文法、拼寫錯誤場景的糾錯,而我們的糾錯任務面向任務型對話垂直領域的語音識别文本,需要針對我們實際的業務需求設計糾錯架構。

3.問題和痛點

在系統的分析了我們的糾錯任務面臨的問題和痛點之後, 我們做了相應的糾錯系統設計, 如下表總結。我們的目标是建構高效、易複用、可閉環的糾錯系統,解決系統和業務上的問題和痛點。

【技術揭秘】任務型語音對話中的糾錯系統

4.糾錯系統介紹

4.1整體架構

整體上我們采用分階段的糾錯架構,來解決任務型語音對話中的識别錯誤問題。糾錯系統主要有三個子產品組成,分别是實體詞抽取、糾錯候選召回和糾錯候選排序。糾錯系統的最終輸出,可以用于後續鍊路的搜尋,以及修正語音識别回顯文字。

【技術揭秘】任務型語音對話中的糾錯系統

圖 4糾錯系統整體架構

4.2實體詞抽取

實體詞抽取子產品負責抽取句子中的實體詞, 完成錯誤定位。任務型對話系統的語音識别輸入通常是短文本,意圖都是限定領域的。一個常見的使用者輸入通常包含多個組成部分,包括動詞、實體詞、語氣詞等。其中,動詞和實體詞是句子中的關鍵資訊。動詞變化少,ASR識别較少出錯,而實體詞量級巨大,往往是ASR識别錯誤最多的部分。是以,我們可以将錯誤定位的任務轉化為實體詞抽取任務。

【技術揭秘】任務型語音對話中的糾錯系統

圖 5實體詞抽取子產品輸入輸出

我們使用BERT模型作為實體詞抽取模型。具體的,我們首先采用AliNLP工具對輸入語句進行分詞和詞性标注,并引入業務相關的詞典資訊,對每個詞标注詞典資訊。BERT的輸入特征包含詞資訊、詞性資訊、詞典資訊以及位置資訊。

我們首先采用中文維基資料進行BERT預訓練,任務分别是句子填空和下一句預測,再使用标注語料在我們的任務上進行fine-tune。雖然BERT是命名實體抽取任務的state-of-the-art (SOTA) 模型,但是在我們的實體詞抽取任務中,最初隻達到了83.04% F1 score。分析錯誤case,發現問題主要集中在語音識别錯誤的情況下,而這恰恰是糾錯系統需要解決的場景。是以,針對這個問題,我們對訓練資料進行增強。我們使用業務NLU文法規則 (JSGF) 展開 (圖7) 來豐富訓練資料,将訓練資料量級提升至百萬級别。然後我們模拟真實語音識别的錯誤分布,引入了約20%包含識别錯誤的資料。識别錯誤的樣本中,替換錯誤約占77%,删除錯誤占18%,插入錯誤占5%。進行資料增強後,我們的訓練資料分布基本與線上實際分布一緻,重新訓練調優後,實體詞抽取F1 score從 83.04% 優化至95.58%。

【技術揭秘】任務型語音對話中的糾錯系統

圖 6實體詞抽取實驗結果

【技術揭秘】任務型語音對話中的糾錯系統

圖 7使用業務規則生成訓練資料

【技術揭秘】任務型語音對話中的糾錯系統

圖 8語音識别錯誤分布

4.3糾錯候選召回

糾錯候選召回子產品用來召回可能的糾錯結果。根據不同業務的需求,我們建立了三種可選的召回鍊路。

第一種是基于本地自建的召回方式。經典的召回算法有基于編輯距離和基于反向索引的方式。基于編輯距離的算法需要周遊詞庫中的所有詞條,非常耗時。即使使用基于優化搜尋空間的BK-tree算法[3],在選取編輯距離等于2的條件下,仍需要計算約20%詞條的編輯距離。而業務實體詞庫中的詞條數量基本都是百萬以上級别的,這樣的算法遠遠達不到接入的性能要求。基于反向索引的算法可以有效解決效率問題,傳統方法使用分詞後的詞彙作為索引來存儲。但是糾錯系統中的召回步驟,搜尋串往往是包含錯誤的,分詞後查詢難以比對正确的詞條。是以,我們采用基于拼音索引的方式來存儲,即使包含錯誤,查詢操作仍具有泛化性。為了保證召回數量可控,我們提出了一種基于可回退的拼音n-gram反向索引算法,如圖9所示,建立索引時使用各階拼音n-gram作為鍵值,召回時優先查詢高階鍵值,無法滿足數量門檻值時回退到低階鍵值查詢,保證召回數量。圖9展示了建立索引時的流程:擷取詞典條目後,使用業務規則 (例如圖10)對詞條進行泛化以及擷取别名,随後通過我們提出的基于可回退的拼音n-gram倒排序算法,以各階拼音n-gram作為鍵值存儲詞條。

【技術揭秘】任務型語音對話中的糾錯系統

圖 9可回退的拼音n-gram反向索引算法建立索引流程

【技術揭秘】任務型語音對話中的糾錯系統

圖 10業務泛化規則

對比經典的搜尋算法,我們的算法在召回速度和數量上均達到了最優。

【技術揭秘】任務型語音對話中的糾錯系統

圖 11召回算法對比。視訊名詞庫約50萬條,query=小豬倍琦

第二種召回方式是使用開源的Elastic Search引擎進行召回。我們采用詞條的拼音名作為索引項,按照詞條長度以及城市資訊對索引表進行分片,多機房部署服務,降低網絡開銷。最終在保證召回效果的情況下,我們将ES搜尋耗時降低到10ms以内,滿足了業務接入需求。

第三種召回方式是使用業務方自帶的搜尋接口,比如高德地名查詢、蝦米音樂查詢、優酷視訊查詢等。在不增加額外開發工作的情況下,可以進一步豐富我們的召回鍊路。

【技術揭秘】任務型語音對話中的糾錯系統

圖 12搜尋召回處理流程

圖12展示了處理搜尋召回的流程。對于實體詞抽取結果,我們根據一定的業務規則進行預處理,生成多個候選結果,提供給糾錯排序子產品處理。

4.4糾錯候選排序

糾錯候選排序子產品,根據各種特征,對所有召回結果做一個排序,得到最終比對結果提供給後續業務使用。

【技術揭秘】任務型語音對話中的糾錯系統

圖 13糾錯候選排序子產品流程

圖13展示了糾錯候選排序的整體流程。糾錯系統上線前,最大的問題是資料冷啟動。對此,我們首先建構了一種基于規則的pointwise排序算法。核心思想是定義一系列比對先驗規則,綜合構成比對計算函數,對每一個召回結果計算得分,并根據得分進行整體排序。

給定使用者語音識别結果

【技術揭秘】任務型語音對話中的糾錯系統

,對每個召回結果

【技術揭秘】任務型語音對話中的糾錯系統

,我們計算比對度

【技術揭秘】任務型語音對話中的糾錯系統

其中

【技術揭秘】任務型語音對話中的糾錯系統

是手工調整的比對系數,

【技術揭秘】任務型語音對話中的糾錯系統

是根據衆包資料總結出來的比對先驗規則,主要有以下層面:

  • 拼音層面:聲母近似(平翹舌等)、韻母近似(前後鼻音等)、整體近音、方言等
  • 字層面:編輯距離、公共子串、公共子序列等
  • 業務層面:PV、城市資訊等

對每個比對先驗規則

【技術揭秘】任務型語音對話中的糾錯系統

,我們将其得分歸一化至0-1區間,系數

【技術揭秘】任務型語音對話中的糾錯系統

求和值為1,最後得到的比對度得分

【技術揭秘】任務型語音對話中的糾錯系統

分布于0-1區間。

由于規則算法需要建構大量的比對規則并手工調整系數,我們接下來使用了基于模型的pointwise排序算法,對每個召回樣本進行二分類,選取正例結果對應機率作為置信度,參與整體樣本排序。同樣的,由于上線前我們沒有真實的訓練資料,我們采樣選取了數百萬條實體詞條,模拟語音識别錯誤,生成對應的模拟使用者輸入結果。通過規則排序算法進行自動标注,按照正負例1:10的比例選取約十萬條資料用于最終的模型訓練。

我們将上述比對先驗規則作為模型的特征輸入,分别對比了LR、SVR、MLP、Wide & Deep等模型。由于整體資料量資料偏少,在我們的測試集上,深度模型的效果并不佳,相比之下SVR模型取得了最好的效果,并且顯著優于規則算法。

【技術揭秘】任務型語音對話中的糾錯系統

圖 14糾錯候選排序算法對比

4.5 語音識别回顯優化

糾錯後的實體詞,一方面可以用于業務搜尋,另一方面可以優化語音識别的回顯結果。在與使用者實際發音差異較小的情況下,改寫語音識别回顯内容,能夠提高結果的一緻性,削弱使用者對語音識别錯誤的感覺。

在糾錯排序子產品中獲得最終top1結果後,我們并不能直接将其替換語音識别的原始内容,因為原始語音和糾錯詞條的發音可能未必一一對應,我們可以看一個例子。

【技術揭秘】任務型語音對話中的糾錯系統

圖 15語音識别回顯優化的例子

在這個例子中,使用者的語音輸入是“菏澤魯星醫院”,而比對的詞條是“菏澤市魯心醫院”。識别的錯誤是将“心”識别成了“星”,但是比對詞條中還有被使用者省略的“市”這個字。使用詞條直接替換會導緻識别結果和使用者真實發音不一緻,這是回顯優化需要盡量避免的情況。在這裡,我們提出了一種基于拼音相似的公共子序列算法,通過查詢原始串和替換串的拼音,找出拼音相似的最長連續路徑。在實際業務中,我們應用了這個算法,相比直接限制原始串和替換串拼音需一一對應的方式,提升了相對約10%的識别回顯改寫率。

5.業務結果

糾錯系統已經在多個業務上落地,均取得了不錯的效果。

電視線業務,是将語音對話技術應用于電視機,避免繁瑣的大屏遙控器文字輸入,可以直接用語音搜尋歌曲、視訊,進行指令控制等。在這個項目中,歌手名、演員名、音樂名、視訊名都是百萬乃至千萬級的資料。我們支援了人名、視訊名、歌曲名等多個槽位的糾錯能力,提升了絕對1.3%的全鍊路對話成功率。

高德語音助手,顧名思義,是高德地圖app中的語音助手。在app中可以通過語音互動的方式查詢地點、規劃路線、查詢限号、天氣等。在高德語音助手項目中,每天90%的使用者請求是查詢地點和規劃路線,而全國的地點名量級上億,地名識别很容易發生錯誤。在這個項目中,我們支援了地名的糾錯能力,提升了絕對1.0%的全鍊路對話成功率。在語音識别回顯優化上,提升了絕對2.1%的語音識别回顯準确率。

釘釘找人項目,是在釘釘上通過語音找人,比如說“打電話給xxx”,可以友善進行溝通。集團中人名、花名、備注名等說法複雜,語音識别也往往不準确。我們支援了人名類等糾錯能力,使得在親密度清單(top200)人名的識别準确率由88.1%提升至94.5%。

6.未來展望

接下來我們會繼續優化糾錯系統,主要包括以下幾個方向的工作:

1.新業務的快速領域遷移能力,例如使用一些few-shot learning算法。

2.嘗試引入更多特征,例如語音識别的聲學特征以及使用者個性化的特征。

3.嘗試研究結合END2END模型,增強糾錯系統的整體性能。

參考文獻

[1] Oleksii Hrinchuk and Mariya Popova and Boris Ginsburg. “Correction of Automatic Speech Recognition with Transformer Sequence-to-sequence Model”. In Proceedings of IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), 2020.

[2] Shaohua Zhang, Haoran Huang, Jicong Liu, Hang Li. “Spelling Error Correction with Soft-Masked BERT“. In Proceedings of Annual Meeting of the Association for

Computational Linguistics (ACL) , 2020.

[3]

https://en.wikipedia.org/wiki/BK-tree

智能語音産品官網連結:

https://ai.aliyun.com/nls
【技術揭秘】任務型語音對話中的糾錯系統

繼續閱讀