Google於 2019 年為其 Pixel 手機推出了安卓系統下的錄音軟體 Recorder,對標 iOS 下的語音備忘錄,並支援音訊檔案的錄製、管理和編輯等。在此之後,Google陸續為 Recorder 加入了大量基於機器學習的功能,包括語音識別,音訊事件偵測,自動標題生成,以及智慧瀏覽等。
不過當錄音檔案較長且包含多個說話人的時候,一部分 Recorder 的使用者在使用過程中會感到不便。因為僅憑語音辨識得到的文本,並不能判斷每句話分別是誰說的。在今年的 Made By Google 大會上,Google公佈了 Recorder 應用程式的自動說話人標註功能。此功能將即時為語音辨識的文字加上匿名的說話者標籤(例如 「說話者 1」 或「說話者 2」)。這項功能將大大提升錄音文本的可讀性與實用性。而這項功能背後的技術,稱為聲紋分割聚類(speaker diarization)。 Google在 2022 年的 ICASSP 會議上,首次介紹了其名為 Turn-to-Diarize 的聲紋分割聚類系統。
左圖:關閉了說話者標註的錄音文字。右圖:開啟了說話者標註的錄音文字。
Google的Turn-to-Diarize 系統包含了多個高度最佳化的模型和演算法,實現了在行動裝置上,以極少的運算資源完成對長達數小時的音訊進行即時聲紋分割聚類處理。系統主要包含三個組成部分:使用以偵測說話者身分轉換的說話者轉換偵測模型,以擷取每個說話者聲音特徵的聲紋編碼器模型,以及一個能夠有效率完成說話者標註的多階段聚類演算法。所有組成部分都完全運行在使用者的裝置上,不依賴任何伺服器連線。
Turn-to-Diarize 系統的架構圖。
這個系統的第一個組成部分是一個基於Transformer Transducer(T-T)的說話人轉換偵測模型。該模型能夠將聲學特徵序列轉換為包含了特殊字元 的文字序列。特殊字元 表示一個說話者轉換的事件。谷歌之前發表的論文曾經用諸如 或 的特殊字符來表示具體說話人的身份。而在最新的系統中,由於 字元不限於特定的身份,因此其應用也更加廣泛。
對於大多數的應用,聲紋分割聚類系統的輸出一般不會直接呈現給用戶,而是與語音辨識模型的輸出結合。由於語音辨識模型在訓練過程中已經針對詞錯率進行了最佳化,因此說話者轉換偵測模型對於詞錯率較為寬容,但更重視特殊字元 的準確率。在此基礎上,Google提出了一種新的基於字符的損失函數,實現了只需較小的模型,就能準確地檢測出說話人轉換事件 。
當音訊訊號被依照說話者轉換事件進行分割之後,系統透過聲紋編碼器模型對每個說話者片段擷取包含聲紋訊息的嵌入碼,即d-vector。谷歌在先前發表的論文中,一般都是從固定長度的音訊中提取聲紋嵌入碼。與之相比,這次的新系統有多項改進。首先,新系統避免了從包含多個說話者資訊的片段中提取聲紋嵌入碼,從而提升了嵌入碼的整體品質。其次,每一個聲紋嵌入碼對應的語音片段,其時長都比較長,因此包含了對應說話者較多的聲紋訊息。最後,此方法得到的最終聲紋嵌入碼序列,其長度較短,使得後續的聚類演算法計算代價較低。
聲紋分割聚類的最後一步,便是將前面幾步得到的聲紋嵌入碼序列進行聚類。由於使用者使用 Recorder 應用程式產生的錄音可能只有幾秒鐘,也可能長達 18 小時,因此聚類演算法面臨的關鍵挑戰便是能夠處理各種長度的聲紋嵌入碼序列。
為此,Google的多階段聚類策略巧妙地結合了幾種不同的聚類演算法各自的優勢。對於較短的序列,此策略採用聚合式分層聚類(AHC)。對於中等長度的序列,此方法採用譜聚類,並利用特徵值的最大間隔法,來準確估算說話者的數量。對於較長的序列,方法先用聚合式分層聚類來對序列進行預處理,然後再呼叫譜聚類,從而降低了聚類這一步驟的計算代價。而在整個流式處理的過程當中,透過對先前的聚類結果進行動態快取並重複利用,每一次聚類演算法的調用,其時間複雜度以及空間複雜度,上限都可以被設定為一個常數。
多階段聚類策略是針對裝置端應用的關鍵最佳化。因為在裝置端,CPU、記憶體、電池等資源通常都較為稀缺。該策略即使在處理過長達數小時的音訊之後,依然能夠維持在低能耗的狀態下運作。而此策略的常數複雜度上限,通常可以根據特定的設備型號進行調整,以實現準確率和性能之間的平衡。
多階段聚類策略的示意圖。
因為Turn-to-Diarize 是一個即時的串流處理系統,所以當模型處理完更多的音訊之後,其預測得到的說話者標籤也會變得更加準確。為此,Recorder 應用程式會在使用者錄音的過程當中,持續地對先前預測的說話者標籤進行校正,保證使用者在目前螢幕上看到的說話者標籤始終是更為準確的標籤。
同時,Recorder 應用程式的使用者介面還允許使用者對每一段錄音中的說話者標籤進行重命名,例如將「說話者2」 重新命名為「汽車經銷商”,從而方便使用者閱讀和記憶。
Recorder 允許使用者對說話者標籤進行重新命名,從而提升可讀性。
Google在最新的數款 Pixel 手機上推出了自研晶片 Google Tensor。而目前的聲紋分割聚類系統主要便運行在 Google Tensor 的 CPU 模組上。未來Google計劃將聲紋分割聚類系統運行到 Google Tensor 的 TPU 模組上,從而進一步降低能耗。此外,谷歌還希望藉助多語言的聲紋編碼器以及語音辨識模型,將這項功能擴展到英語以外的其他語言。
以上是谷歌Recorder實現說話者自動標註,功能性與iOS語音備忘錄再度拉大的詳細內容。更多資訊請關注PHP中文網其他相關文章!