AnalyticDB向量檢索+AI 實戰: 聲紋識別

分析型數據庫(AnalyticDB)是阿里雲上的一種高併發低延時的PB級實時數據倉庫,可以毫秒級針對萬億級數據進行即時的多維分析透視和業務探索,向量檢索和非結構化數據分析是AnalyticDB的進階功能。本文通過聲紋識別的例子展示如何快速搭建一套端對端的非結構數據搜索服務。


01背景

近年來,隨着人工智能對傳統行業的賦能改造,越來越多的基於人工智能的業務解決方案被提出來,聲紋識別在保險行業中的身份認證便是一個很好的例子. 聲紋識別是根據說話人發音的生理和行爲特徵,自動識別說話人身份的一種生物識別技術,對應在電話銷售場景下,它主要解決以下安全問題:一方面,有不法分子竊取電話銷售人員賬號信息,非法獲取客戶個人信息資料並進行販賣、泄露,嚴重侵犯了公民個人的信息隱私權,另一方面,部分行業從業人員利用一些規則漏洞,通過套保、騙保等非法手段實施金融詐騙. 針對這些安全問題,可以通過實時聲紋認證加以解決,以電話銷售人員爲監管核心,利用每個人獨一無二的聲紋進行嚴密的個人身份認證,保證電話銷售人員對接客戶時是本人註冊登錄,規範電銷人員行爲,從源頭上有效規避信息泄露、漏洞利用等風險。

02聲紋識別原理

上圖是端對端的深度學習訓練和推理過程。對比傳統聲紋識別模型,我們的模型在實際使用中優勢明顯,在用戶遠程身份驗證場景,通過註冊用戶說一段話,即可輕鬆快速的確認註冊用戶身份,識別準確率達到95%以上,秒級響應,實時聲紋核身。下面簡要介紹我們模型的特點。

2.0 度量學習

實驗發現,在聲紋識別中採用softmax進行網絡訓練 ,用餘弦相似度的測試性能往往不如傳統聲紋識別模型,尤其是在魯棒性上。分析發現[6]基於softmax的分類訓練,爲了得到更小的loss,優化器會增大一些easy samples的L2 length,減小hard examples 的L2 length,導致這些樣本並沒有充分學習,特徵呈現放射狀,以MNIST識別任務爲例,基於softmax學到的特徵分佈如圖3(a)所示. 同類別特徵分佈並不聚攏,在L2 長度上拉長,呈放射狀,且每個類別的間距並不大,在verification的任務中,會導致相鄰的兩個類別得分很高。

爲了達到類內聚攏,類間分散的效果,我們研究了在圖像領域中應用較爲成功的幾種softmax變種,包括AM-softmax[4],arcsoftmax[5]等,從圖3(b)可以看到,基於margin的softmax,相比純softmax,類間的分散程度更大,且類內特徵更聚攏,對聲紋1:1比對和1:N搜索的任務友好。

2.1 噪音魯棒性

在特徵提取時,對於簡單加性噪音,我們提出了基於功率譜減法,實現噪音抑制;對於其他複雜噪音,我們提出了基於降噪自動編碼器的噪音補償模型,將帶噪語音特徵映射到乾淨語音特徵,實現噪音消除。

在模型訓練時,我們採用數據增強的訓練機制,將噪音數據通過隨機高斯的形式加入到聲紋模型的訓練中,使得訓練後的模型對噪音數據具有更好的魯棒性。

2.2 短音頻魯棒性

爲了提高短音頻魯棒性,我們提出了基於短時幀級別的模型訓練機制,使模型能夠在極短的語音時長(約0.5秒)下即可完成聲紋識別. 在此基礎上,我們在模型訓練中引入了更多高階的音頻統計信息和正則化方法,進一步提升了模型在短語音條件下(2~3秒)的識別精度。

03如何使用AnalyticDB搭建聲紋對比系統

3.0 創建插件

使用一下SQL來分別創建AnalyticDB的非結構化分析插件OpenAnalytic和向量檢索插件fastann。

CREATE EXTENSION IF NOT EXISTS open_analytic;

3.1 建表

我們可以建立一個表來保存所有說話人的聲音和聲音的特徵,後續我們可以從這個表中搜索說話人。

CREATE TABLE speaker_table (

3.2 創建索引

我們可以爲特徵向量列創建向量檢索索引。

CREATE INDEX speaker_table_index 

3.3 創建聲紋識別算法pipeline

通過以下sql,我們可以在數據庫中創建聲紋特徵提取的算法模型。

SELECT open_analytic.pipeline_create('speaker_feature_extractor');

3.4 獲取說話人聲紋特徵

通過以下sql可以使用3.3創建的pipeline。這個UDF的輸入是pipeline名稱和目標文本。輸出是一個說話人聲音的特徵向量。

# 通過聲音文件識別
SELECT open_analytic.pipeline_run_dist_random('speaker_feature_extractor', 
                        <聲音文件>);

3.5 說話人聲紋特徵導入AnalyticDB

獲取聲音特徵後, 我們可以使用一下sql來講數據插入3.1創建的表中。

INSERT INTO speaker_table VALUES (<說話人id>,  <聲音文件>, <聲音特徵向量>);

3.6 在數據庫中搜索最相似的的人

通過以下sql,我們可以在聲音特徵庫中搜索最相似的說話人。然後我們可以根據特徵間距離是否滿足預設的閾值來判斷是否是同一個人。

SELECT speaker_id, l2_distance(feature,  <聲音特徵向量>) 
ORDER BY feature <-> <聲音特徵向量>
LIMIT 10;

3.7 比較兩個聲音是否爲同一個人

我們還可以提取出兩個人的聲音特徵然後直接計算二者的距離來判斷這兩個聲音是否來自同一個說話人。SQL如下

SELECT  l2_distance(feature1,  feature2);


04AnalyticDB介紹

分析型數據庫(AnalyticDB)是阿里雲上的一種高併發低延時的PB級實時數據倉庫,可以毫秒級針對萬億級數據進行即時的多維分析透視和業務探索。AnalyticDB for MySQL 全面兼容MySQL協議以及SQL:2003 語法標準, AnalyticDB forPostgreSQL 支持標準 SQL:2003,高度兼容 Oracle 語法生態。

向量檢索和非結構化數據分析是AnalyticDB的進階功能。目前兩款產品都包含向量檢索功能, 可以支持人臉, 人體, 車輛等的相似查詢和推薦系統。AnalyticDB在真實應用場景中可以支持10億級別的向量數據的查詢, 毫秒級別的響應時間。AnalyticDB已經在多個城市的重大項目中大規模部署。

在一般的包含向量檢索的的應用系統中, 通常開發者會使用向量檢索引擎(例如Faiss)來存儲向量數據, 然後使用關係型數據庫存儲結構化數據。在查詢時也需要交替查詢兩個系統, 這種方案會有額外的開發工作並且性能也不是最優。AnalyticDB支持結構化數據和非結構化數據(向量)的檢索,僅僅使用SQL接口就可以快速的搭建起以圖搜圖或者圖片+結構化數據混合檢索等功能。AnalyticDB的優化器在混合檢索場景中會根據數據的分佈和查詢的條件選擇最優的執行計劃,在保證召回的同時,得到最優的性能。AnalyticDB向量版採用了多項創新性技術, 這些技術在我們的論文 AnalyticDB-V: A Hybrid Analytical Engine Towards Query Fusion for Structured and Unstructured Data 中有詳細介紹介紹。目前論文已經被數據庫三大頂會之一的VLDB接受, 具有技術領先性。

結構化信息+非結構化信息(圖片)混合檢索在實際應用中被廣泛使用的。例如人臉門禁系統被部署在多個小區時, 我們使用一張表存儲了所有小區的人臉特徵, 在人臉檢索時我們只需要檢索當前小區的人臉特徵。在這種情況下, 使用AnalyticDB我們只需要在SQL中增加where 小區名 ='xxx' 就可以輕易實現。AnalyticDB同時提供了先進的圖像文本分析算法, 能夠提取非結構化數據的特徵和標籤, 用戶僅僅需要使用SQL就可以完成圖像文本內容的分析。

點擊可閱讀:《戴口罩也能刷門禁?疫情下AnalyticDB亮出社區管理的寶藏神器!》

05參考文獻

[1] Heigold G, Moreno I, Bengio S, et al. End-to-end text-dependent speaker verification[C]//2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2016: 5115-5119.

[2]Li C, Ma X, Jiang B, et al. Deep speaker: an end-to-end neural speaker embedding system[J]. arXiv preprint arXiv:1705.02304, 2017.

[3] Snyder D, Garcia-Romero D, Sell G, et al. X-vectors: Robust den embeddings for speaker recognition[C]//2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018: 5329-5333.

[4] Wang F, Cheng J, Liu W, et al. Additive margin softmax for face verification[J]. IEEE Signal Processing Letters, 2018, 25(7): 926-930.

[5] Dang J, Guo J, Xue N, et al. Arc face: Additive angular margin loss for deep face recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 4690-4699.

[6] Ranjan R, Castillo C D, Chellappa R. L2-constrained softmax loss for discriminative face verification[J]. arXiv preprint arXiv:1703.09507, 2017.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章