來源 阿里語音AI 公眾號
一、背景
說話人日誌(speaker diarization)也叫說話人分離,它是從一個連續的多人說話的語音中切分出不同說話人的片段,並且判斷出每個片段是哪個說話人的過程。藉助說話人日誌技術可以完成對音頻數據流的結構化管理,具有廣泛的應用價值,例如可以利用分離結果進行說話人自適應,以提高語音識別的準確率;可以輔助會議、電話數據進行自動轉寫構建說話人的音頻檔案;也可以利用說話人分離技術,實現語料庫的自動跟蹤和標註。
說話人日誌技術解決的是兩個方面的問題:“誰在說話”和“在什麼時候說話”,如圖1所示。“誰在說話”通常可以由說話人識別方法來解決,“在什麼時候說話”可以通過說話人分割和說話人聚類來解決。
圖1
在客服質檢業務中,針對單通道合錄語音通話,通常需要區分哪些發音來自客戶,哪些發音來自客服,因此需要在說話人分割聚類的結果上為類別打上標籤。在客服質檢業務中,發音人的語音很難提前獲取,客服人員流動性較大,通過聲紋識別的方式,提前註冊客戶和客服的語音不太現實。因此,“誰在說話”的問題通常根據分割聚類後的發音內容,進行關鍵字或話術匹配等手段解決。這個過程可以看做是文本的後處理,這裡不屬於語音技術範圍,以下的介紹內容不針對此展開。
二、 說話人日誌算法
2.1說話人日誌基本框架
現有的說話人日誌系統大多由多個相對獨立的部分組成,如圖2所示:(1)語音分割模塊,去除非語音部分,將輸入的語音分割為小段;(2)特徵向量提取模塊,從分割好的小段語音中提取出說話人的特徵向量,例如d-vector、i-vector等;(3)聚類模塊,通過計算說話人特徵向量間的相似度,確定說話人數量,並對不同片段分配說話人身份;(4)重新分割模塊,進一步細化分類結果。
圖2
2.2說話人日誌算法介紹
我們搭建了基於x-vector的說話人日誌系統,基本框架如圖3所示。主要的模塊包括梅爾頻率倒譜系數特徵(MFCC)提取模塊、語音活動點檢測(SAD)模塊、x-vector模塊、PLDA打分模塊以及凝聚分層聚類(AHC)模塊。
圖3
主要的模型包括SAD模型、x-vector模型和PLDA模型。SAD模塊去除非語音片段,並對剩餘的有效語音進行粗分類,以非語音片段作為分割點,將有效語音切分成不同的片段。在不同說話人語音間間隔較大的情況下,粗分類可以將不同的說話人語音切分開來,每個片段只包含一個說話人語音。但在很多情況下,同一個粗分類的片段還會包含不同的說話人信息,因此需要對粗分類片段做進一步處理。通過對每個粗分類片段進一步切分,使用特定窗長和窗移進行加窗處理,然後對每一個窗提取embedding特徵。
Embedding特徵使用x-vector框架提取,模型基本結構如圖4所示。然後對每個片段進行聚類,對不同片段分配說話人身份,具體的說,對embedding特徵進行兩兩打分,打分使用說話人識別的主流技術PLDA方法,通常來說,得分越高,相似度越高,越可能是同一個人的語音。AHC不斷重複的將相似度高的類別進行合併,直到滿足迭代中止條件。AHC合併後的結果即為最終的分離結果。
圖4
2.3評價指標
我們採用分離錯誤率(DiarizationError Rate,DER)作為說話人分離效果的評價指標。計算公式如下:
其中,false alarm表示非語音錯誤地識別成語音的時間長度,miss detection表示語音錯誤識別成非語音的時間長度,confusion是混淆的說話人的時長,total是參照語音的總時長。DER值越小,分離效果越好。
三、效果及業務應用
本方法在實際電話客服數據集上可達到很好的說話人分離效果。說話人日誌技術已經達到在真實客服質檢業務場景中的可應用水平,為客戶提供高質量的說話人分離能力。在智能語音交互公共雲服務及本地部署軟件中的“錄音文件識別”接口進行體驗。