聲紋識別是個什麼原理?

語言: CN / TW / HK

謝邀

區別於專注將語音轉換為文字的語音識別(speech recognition, 應用如語音輸入法), 聲紋識別目的在於辨別説話者 / 發聲者的身份(Identity) [1]。

聲紋識別有兩種應用場景: 1:1 驗證(簡稱驗證, Verification), 比如顯示為女朋友 / 老婆的電話號打來, 接聽之後發現聲音不是她, 那就讓人緊張;1:n 驗證(又稱識別, Identification), 比如陌生電話打來, 對方説一句字面上沒有任何意義的"老王, 是我啊", 如果真是熟人, 你就能很快辨得 TA 的身份, 如果認為不是, 那就有可能是某省的人打來的了。

聲紋識別有兩種識別場景: 文本相關的, 這需要説話者説出固定的文本內容來給算法驗證 :

https:// azure.microsoft.com/en- us/services/cognitive-services/speaker-recognition/

比如, 汽車開起來有異響,我們可以判斷車出問題了; 文本不相關的, 則不需要説話者説固定內容, 類比於汽車正常跑時候沒啥異響, 但過減速帶時候會有明顯的異響. 通過這兩個類比可以判斷, 文本不相關的聲紋識別要比文本相關的要更具難度.

聲紋識別的本質, 就是要找到 描述特定對象的聲紋特徵 (feature)。

聲紋特徵可以分為聽覺特徵(Auditory feature)和聲學特徵(Acoustic features)。 前者是指人耳可以鑑別和描述的聲音特徵, 比如説話氣聲多 / 中氣十足這樣的描述。 後者是指計算機算法(數學方法)從聲音信號提取出來的一組聲學描述參數(向量) [2]。 不過這兩者本質上還是一回事, 因為人耳可以鑑別的聲音特徵也可以使用算法生成和提取出來。

聲紋特徵還有語言學特徵和非語言學特徵, 比如兩湖地區的人説話通常 n/l 不分, 南方人分不清捲舌和平舌音, 以及一些特定的方言説法等。 這類特徵可以輔助聲紋識別, 縮小 1:n 驗證時候的檢索對象範圍。

另外, 聲紋特徵還可以分為短時特徵和長時特徵。 類比我們對一個人的描述, 如果是一個失蹤的人, 我們會描述他離家時穿什麼衣服(短時特徵), 身高性別(長時特徵)等; 描述一個熟人的時候, 我們通常會説 TA 的性格,做事風格(長時特徵)等, 這時候如果説 TA 穿什麼衣服就顯得可笑了。 在聲紋識別範疇, 我們最常使用的是聲紋的短時特徵, 因為我們用於識別的一段話通常都比較短。 長時特徵通常是短時特徵的平均, 比如基礎頻率 / 頻譜特徵等等。 長時特徵因此更少受到説話語氣 / 説話者身體情況變化的影響。

聲紋識別在數學操作上, 就是對輸入的聲音信號進行數學操作, 得到一組特徵描述向量。 聲紋識別方法的好壞, 則主要在於從不同聲紋對象提取的不同特徵向量的區分度, 以及從相同聲紋對象的聲音在不同時間提取的特徵向量之間相似度。 前者稱為 類間差異(Interclass Varience) , 後者稱為 類內差異(Intraclass Varience) 類比我們對一個人的描述, 如果説 TA 出門穿衣服, 這個描述可以作為一個特徵, 但是不是一個好特徵, 因為幾乎所有人出門都會穿衣服, 這個特徵描述的類間差異太小。 而如果説 TA 面部某個地方有個胎記, 那這就是一個好的描述特徵, 因為這個描述具有很好的區分度(類間差異大)和復現性(類內差異小)。 得到聲紋對象的特徵向量之後, 我們把這個特徵和註冊的聲紋特徵向量進行比較, 比如計算歐氏距離(d), 當這個距離大於一定值(Th)時, 我們認為是源自不同人, 小於這個值時, 則認為是同一個人。

至於特徵提取方法, 按照發展歷程有模板匹配, 高斯混合模型(GMM), 聯合因子分析法(JFA), 深度神經網絡方法等【3】。 深度神經網絡之前的方法基本可以認為是傳統方法。 傳統方法是用可以用精確數學模型描述的操作對聲音信號進行分析, 得到的特徵具有較好的可解釋性, 需要的數據量相對較小。 深度神經網絡對聲音信號的操作則不便使用數學模型進行精確描述, 它是一種數據驅動的方法, 需要更大量的數據對模型進行訓練(有多少數據 / 人工, 就有多少智能)。 不過深度神經網絡是更為強大的特徵提取方法, 只要保證足夠多和好的數據輸入, 就可以預期較好的效果。

我們人腦的聲紋識別系統跟計算機聲紋識別基本類似[4], 不過人腦的聲紋特徵提取更為靈活, 可以更方便的結合短時 / 長時 / 語言學 / 抽象聲音特徵等描述進行分析 [5]。

由於同一個聲紋信號的多變性, 聲音採集設備的影響, 環境噪聲的影響, 聲音內容的變化等因素, 聲紋識別目前還難以做到很高的準確率和可靠性(FAR)。 因此在使用時不宜作為第一選項。

[1] Campbell, Joseph P. "Speaker recognition: A tutorial." Proceedings of the IEEE 85.9 (1997): 1437-1462.

[2] Mariéthoz, Johnny, Samy Bengio, and Yves Grandvalet. Kernel Based Text-Independnent Speaker Verification . No. LIDIAP-REPORT-2008-013. Idiap, 2008.

[3] Snyder, David, et al. "X-vectors: Robust DNN embeddings for speaker recognition." Submitted to ICASSP (2018).

[4] Maguinness, Corrina, Claudia Roswandowitz, and Katharina von Kriegstein. "Understanding the mechanisms of familiar voice-identity recognition in the human brain." Neuropsychologia (2018).

[5] Badcock, Johanna C., and Saruchi Chhabra. "Voices to reckon with: perceptions of voice identity in clinical and non-clinical voice hearers." Frontiers in Human Neuroscience 7 (2013): 114.