是誰在說話?谷歌多人語音識別新系統錯誤率降至2%

機器之心發表於2019-08-17

識別「誰說了什麼」,也就是「說話人分類」任務是自動理解人類對話音訊的關鍵步驟。例如,在一個醫生與患者的對話中,「患者」在回答醫生的問題(「你經常服用心臟病藥物嗎?」)時說了「Yes」,這和醫生用反問的語氣說「Yes?」的含義截然不同。

傳統的說話人分類(SD)系統分為兩步,第一步是檢測聲譜中的變化,從而確定說話人何時發生切換;第二步是識別對話中的每個說話人。這一基本的多步方法幾乎已有 20 多年的歷史,而在此期間,只有說話人切換檢測得到了提升。

在最新的一項研究中,谷歌公佈了他們在說話人分類模型上取得的新進展。他們提出了一種基於 RNN-T 的說話人分類系統,將說話人分類錯詞率從 20% 降到了 2%,效能提升了十倍。

這一提升得益於 RNN-T 模型的最新進展,它為谷歌的新系統提供了一個適當的架構,能夠克服之前說話人分類模型的一些侷限。谷歌在一篇名為《Joint Speech Recognition and Speaker Diarization via Sequence Transduction》的論文中展示了這項研究,並將在 2019 年 Interspeech 大會上進行展示。

論文連結:https://arxiv.org/pdf/1907.05337.pdf

傳統的說活人分類系統有哪些侷限

傳統的說話人分類系統依賴人聲在聲學上的差異來區分對話中的不同說話人。男人和女人的聲音比較容易區分,他們的音高(pitch)存在很大差異,使用簡單的聲學模型就能加以區分,而且可以一步完成,音高相似的說話人則要透過以下幾個步驟進行區分:

  • 首先,基於檢測到的語音特徵,一個變化檢測演算法將對話均勻地分割成若干片段,希望每個片段只包含一個說話人。

  • 接下來,使用深度學習模型將來自每個說話人的聲音片段對映為一個嵌入向量。

  • 在最後一步的聚類過程中,將這些嵌入聚集在一起,以便在一場對話中跟蹤同一個說話人。

在實踐中,說話人分類系統與自動語音識別(ASR)系統並行,結合兩個系統的輸出給識別出的詞打上標籤。

是誰在說話?谷歌多人語音識別新系統錯誤率降至2%

傳統的說話人分類系統在聲學領域進行說話人標籤推理,然後將標籤覆蓋在由單獨的 ASR 系統生成的單詞上。

這一方法存在諸多侷限,已經阻礙了這一領域的發展。

第一,對話需要被分割成片段,而且每個片段只包含一個人的聲音。否則,嵌入就無法準確表徵說話人。但在實踐中,變化檢測演算法並不完備,導致分割出的片段包含多個人聲;

第二,聚類階段需要知道說話人的數量,而且這一階段對輸入的準確性非常敏感;

第三,聚類階段需要在用於估計語音特徵的片段大小和所需的模型準確度之間進行艱難的權衡。片段越長,語音特徵質量越高,因為模型擁有更多與說話人相關的資訊。這就造成模型可能將簡短的插入語歸入錯誤的說話人,由此產生非常嚴重的後果,如在臨床、金融語境下,肯定和否定回答都需要被準確追蹤;

最後,傳統的說話人分類系統沒有一個簡單的機制來利用在許多自然對話中特別突出的語言線索。例如,「你吃這個藥多長時間了?」在臨床對話場景中最有可能是醫護人員說的。類似地,「我們需要什麼時候交作業?」很可能是學生而不是老師說的。語言線索也會為說話人轉換提供訊號,如在一個問題之後。

為了克服以上缺陷,谷歌一直在致力於改進人聲分類系統,如去年 11 月釋出的利用監督學習的精確線上說話人分類系統(https://ai.googleblog.com/2018/11/accurate-online-speaker-diarization.html)。在那項工作中,RNN 的隱藏狀態追蹤說話人,克服了聚類階段的缺陷。本文提出的系統則採用了不同的方法並結合了語言線索。

是誰在說話?谷歌多人語音識別新系統錯誤率降至2%

谷歌新系統:整合語音識別和說話人分類

在這項最新發布的工作中,研究者開發出一個簡單的新型模型,該模型不僅實現了聲音和語言線索的無縫結合,而且將說話人分類和語音識別整合到同一個系統中。相較於同類別單一的識別系統,該整合模型不會大幅度降低語音識別的效能。

研究中最重要的一點是他們認識到 RNN-T 架構非常適用於整合聲音和語言線索。RNN-T 模型包含以下三種不同的網路:(1)轉錄網路(或稱編碼器),其作用是將聲幀對映到一個延遲表徵中;(2)預測網路,其作用是基於先前的目標標籤預測接下來的目標標籤;(3)聯合網路,其作用是整合前兩個網路的輸出,並在該時間步上生成一組輸出標籤的機率分佈。

是誰在說話?谷歌多人語音識別新系統錯誤率降至2%

注意,RNN-T 架構中存在一個反饋迴路,其中先前識別出的單詞作為輸入反饋回來,並且 RNN-T 模型能夠整合語言線索,如問題的結尾。

這一整合語音識別和說話人分類的系統可以同時推斷出誰在什麼時候說了什麼。由於損失函式的計算需要執行前向-後向演算法,包括輸入和輸出序列的所有可能對齊,所以在 GPU 或 TPU 等加速器上訓練 RNN-T 模型並非易事。不過,這一問題最近在前向-後向演算法的 TPU 友好型實現中得到了解決,將該問題重新定義為一種矩陣乘法序列。研究者還利用了 TensorFlow 中 RNN-T 損失的一種高效實現,從而使得模型開發能夠快速迭代,並且訓練了一個非常深的網路。

這一整合模型可以像語音識別系統一樣訓練。訓練參考的資料包括說話人的語音轉錄以及區分說話人的標籤。例如「作業什麼時候上交?」<學生>,「我希望你在明天上課前提交,」<老師>。當使用音訊和相應的參考轉錄文字示例訓練模型,使用者可以輸入更多對話錄音並獲得類似形式的輸出。

谷歌的分析表明,RNN-T 系統的效能提升會影響所有型別的錯誤率,包括說話人快速轉換、斷字、語音重疊時錯誤的說話人識別以及低質音訊。此外,與傳統系統相比,RNN-T 系統在對話中表現出了相對穩定的效能,每次對話的平均錯誤率方差顯著減小。

是誰在說話?谷歌多人語音識別新系統錯誤率降至2%

傳統系統與 RNN-T 系統的錯誤率比較,由人類註釋評分。

此外,該整合模型可以預測生成更多易閱讀的 ASR 轉錄所需的標籤。例如,研究人員已經成功透過匹配訓練資料中的標點符號和大寫提升了轉錄的水平。目前的輸出較先前的模型錯誤更少,這些模型都經過單獨的訓練,並會在 ASR 之後作為後處理步驟加入流程。

該模型現已成為谷歌「理解醫療對話專案」的標準組成部分,並在其他非醫療語音服務中得到了更廣泛的應用。

原文連結:https://ai.googleblog.com/2019/08/joint-speech-recognition-and-speaker.html

相關文章