谷歌語音識別新進展:利用序列轉導來實現多人語音識別和說話人分類
從WaveNet 到Tacotron,再到RNN-T,谷歌一直站在語音人工智能技術的最前沿。近日,他們又將多人語音識別和說話人分類問題融合在了同一個網絡模型中,在模型性能上取得了重大的突破。對於自動理解人類音頻的任務來說,識別“誰說了什麼”(或稱“說話人分類”)是一個關鍵的步驟。
例如,在一段醫生和患者的對話中,醫生問:“你按時服用心髒病藥物了嗎?”患回答道:“Yes”。這與醫生反問患者“Yes?”的意義是有本質區別的。
傳統的說話人分類(speaker diarization,SD)系統有兩個步驟。在第一步中,系統將檢測聲譜中的變化,從而確定在一段對話中,說話人甚麼時候改變了;在第二步中,系統將識別出整段對話中的各個說話人。這種基礎的多步方法(相關閱讀:https://ieeexplore.ieee.org/document/1202280/)幾乎已經被使用了20多年,而在麼長的時間內,研究者們僅僅在“說話人變化檢測”部分提升了模型性能。
近年來,隨著一種名為遞歸神經網絡變換器(RNN-T,https://arxiv.org/abs/1211.3711)的新型神經網絡模型的發展,我們現在擁有了一種合適的架構,它可以克服之前我們介紹過的說話人分類系統(https://ai.googleblog.com/2018/11/accurate-online-speaker-diarization.html)的局限性,提升系統的性能。在谷歌最近發布的論文“Joint Speech Recognition and Speaker Diarization via Sequence Transduction”(論文地址:https://arxiv.org/abs/1907.05337)中,它們提出了一種基於RNN-T的說話人分類系統,證明了該系統在單詞分類誤差率從20 %降低到了2%(性能提升了10倍),該工作將在Interspeech 2019上展示。
傳統的說話人分類系統
傳統的說話人分類系統依賴於人聲的聲學差異識別出對話中不同的說話人。根據男人和女人的音高,僅僅使用簡單的聲學模型(例如,混合高斯模型),就可以在一步中相對容易地將他們區分開來。然而,想要區分處音高可能相近的說話者,說話者分類系統就需要使用多步方法了。首先,基於檢測到的人聲特徵,使用一個變化檢測算法將對話切分成均勻的片段,我們希望每段僅僅包含一個說話人。接著,使用一個深度學習模型將上述說話人的聲音片段映射到一個嵌入向量上。最後,在聚類階段,會對上述嵌入聚類在不同的簇中,追踪對話中的同一個說話人。
在真實場景下,說話人分類系統與聲學語音識別(ASR)系統會並行化運行,這兩個系統的輸出將會被結合,從而為識別出的單詞分配標籤。
傳統的說話人分類系統在聲學域中進行推斷,然後將說話人標籤覆蓋在由獨立的ASR 系統生成的單詞上。
這種方法存在很多不足,阻礙了該領域的發展:
(1)我們需要將對話切分成僅僅包含以為說話人的語音的片段。否則,根據這些片段生成的嵌入就不能準確地表徵說話人的聲學特徵。然而,實際上,這裡用到的變化檢測算法並不是十全十美的,會導致分割出的片段可能包含多位說話人的語音。
(2)聚類階段要求說話人的數量已知,並且這一階段對於輸入的準確性十分敏感。
(3)系統需要在用於估計人聲特徵的片段大小和期望的模型準確率之間做出艱難的權衡。片段越長,人聲特徵的質量就越高,因為此時模型擁有更多關於說話人的信息。這然而,這就帶來了將較短的插入語分配給錯誤的說話人的風險。這將產生非常嚴重的後果,例如,在處理臨床醫學或金融領域的對話的環境下,我們需要準確地追踪肯定和否定的陳述。
(4)傳統的說話人分類系統並沒有一套方便的機制,從而利用在許多自然對話中非藏明顯的語言學線索。例如,“你多久服一次藥?”在臨床對話中最有可能是醫護人員說的,而不會是病人說的。類似地,“我們應該什麼時候上交作業?”則最有可能是學生說的,而不是老師說的。語言學的線索也標誌著說話人有很高的概率發生了改變(例如,在一個問句之後)。
然而,傳統的說話人分類系統也有一些性能較好的例子,在谷歌此前發布的一篇博文中就介紹了其中之一(博文地址:https://ai.googleblog.com/2018/11/accurate -online-speaker-diarization.html)。在此工作中,循環神經網絡(RNN)的隱藏狀態會追踪說話人,克服了聚類階段的缺點。而本文提出的模型則採用了不容的方法,引入了語言學線索。
集成的語音識別和說話人分類系統
我們研發出了一種簡單的新型模型,該模型不僅完美地融合了聲學和語音線索,而且將說話人分類和語音識別任務融合在了同一個系統中。相較於相同環境下僅僅進行語音識別的系統相比,這個集成模型並沒有顯著降低語音識別性能。
我們意識到,很關鍵的一點是:RNN-T 架構非常適用於集成聲學和語言學線索。RNN-T 模型由三個不同的網絡組成:(1)轉錄網絡(或稱編碼器),將聲幀映射到一個潛在表徵上。(2)預測網絡,在給定先前的目標標籤的情況下,預測下一個目標標籤。(3)級聯網絡,融合上述兩個網絡的輸出,並在該時間步生成這組輸出標籤的概率分佈。
請注意,在下圖所示的架構中存在一個反饋循環,其中先前識別出的單詞會被作為輸入返回給模型,這使得RNN-T 模型能夠引入語言學線索(例如,問題的結尾)。
集成的語音識別和說話人分類系統示意圖,該系統同時推斷“誰,在何時,說了什麼”
在圖形處理單元(GPU)或張量處理單元(TPU)這樣的加速器上訓練RNN-T 並不是一件容易的事,這是因為損失函數的計算需要運行“前向推導-反向傳播”算法,該過程涉及到所有可能的輸入和輸出序列的對齊。最近,該問題在一種對TPU 友好的“前向-後向”算法中得到了解決,它將該問題重新定義為一個矩陣乘法的序列。我們還利用了TensorFlow 平台中的一個高效的RNN-T 損失的實現,這使得模型開發可以迅速地進行迭代,從而訓練了一個非常深的網絡。
這個集成模型可以直接像一個語音識別模型一樣訓練。訓練使用的參考譯文包含說話人所說的單詞,以及緊隨其後的指定說話人角色的標籤。例如,“作業的截止日期是什麼時候?”<學生>,“我希望你們在明天上課之前上交作業”<老師>。當模型根據音頻和相應的參考譯文樣本訓練好之後,用戶可以輸入對話記錄,然後得到形式相似的輸出結果。我們的分析說明,RNN-T 系統上的改進會影響到所有類型的誤差率(包括較快的說話者轉換,單詞邊界的切分,在存在語音覆蓋的情況下錯誤的說話者對齊,以及較差的音頻質量)。此外,相較於傳統的系統,RNN-T 系統展現出了一致的性能,以每段對話的平均誤差作為評價指標時,方差有明顯的降低。
傳統系統和RNN-T 系統錯誤率的對比,由人類標註者進行分類。
此外,該集成模型還可以預測其它一些標籤,這些標籤對於生成對讀者更加友好的ASR 譯文是必需的。例如,我們已經可以使用匹配好的訓練數據,通過標點符號和大小寫標誌,提升譯文質量。相較於我們之前的模型(單獨訓練,並作為一個ASR 的後處理步驟),我們的輸出在標點符號和大小寫上的誤差更小。
現在,該模型已經成為了我們理解醫療對話的項目(https://ai.googleblog.com/2017/11/understanding-medical-conversations.html)中的一個標準模塊,並且可以在我們的非醫療語音服務中被廣泛採用。
Via https://ai.googleblog.com/2019/08/joint-speech-recognition-and-speaker.html