聲音還能向量化?阿里技術專家教你三步搭建一套聲紋系統
作者:漢朝,阿里雲資料庫演算法專家
聲紋檢索,顧名思義就是說話人識別,透過聲音來驗證或者識別說話人的聲音。聲紋識別的關鍵步驟就是聲音向量化,將說話人的聲音將其轉化成結構化的向量。阿里雲AnalyticDB向量版,提供了一套聲紋驗證檢索的解決方案。使用者只需要使用簡單的幾條SQL命令,三步之內就可以搭建一套高精度的聲紋檢索驗證服務。
1)聲紋檢索演示
圖1展示了AnalyticDB向量資料庫的聲紋檢索系統的演示介面。為了方便使用者體驗,我們將380個人的聲音資訊,轉化成向量儲存在系統中。當前演示系統分成兩部分,第一部分是檢索部分,使用者輸入錄製好的聲音檔案或者使用者現場進行錄音上傳聲音檔案,提交到聲紋庫進行聲音的匹配檢索。第二部分是註冊部分,使用者可以註冊上傳自己的聲音到當前的聲紋庫裡面,方便後期的查詢驗證。在接下來的章節中,我們分別介紹各個功能。
圖1. 聲紋演示系統
圖2上傳一段S0004的測試音訊“BAC009S0004W0486.wav”到聲紋庫裡面進行檢索,可以看到top1的結果S0004就會在最上面進行展示。
圖2. 查詢聲音
圖3展示了聲紋註冊系統,使用者可以註冊自己的聲音到後臺聲紋庫裡面,方便檢索。比方說,使用者Hanchao註冊自己的聲音(只有7s長度),到當前的系統裡面來。當前系統支援無文字註冊,使用者可以說任何話來進行註冊。
圖3. 註冊聲音
圖4演示使用者現場錄製聲音,上傳到系統中,進行檢索。比方說,“Hanchao”錄製了一段5秒的語音到聲紋系統中進行檢索。之前註冊過“Hanchao”的聲音,當前系統可以看到排名第一的聲音就是“Hanchao”的聲音。
圖4. 錄製並檢索聲音
當前對於聲紋演示,我們採用的是1:N的演示結果,可以用在會議室中的識別,透過聲音可以找到相關的會議說話人。當前,對於身份驗證,這種1:1的演示,我們只用限制距離小於550,就可以方便的進行身份驗證。
2)應用結構總體設計
阿里雲聲紋庫檢索的系統框架的總體架構如圖5所示,AnalyticDB(聲紋庫)負責整個聲紋檢索應用的全部結構化資訊(使用者註冊標識,使用者姓名,以及其他的使用者資訊)和非結構化資訊(聲音產生的向量)的儲存和查詢。在查詢的過程中,使用者透過聲紋抽取模型,將聲音轉成向量,在AnalyticDB中進行查詢。系統返還回來相關的使用者資訊,以及l2向量距離[5]。其中聲音抽取模型的訓練和測試,我們在下一章進行講解。
圖5. 聲紋檢索庫
3)系統精度
當前演示聲紋系統,採用的是GMM-UMB模型抽取的i-vector作為檢索向量[3]。另外,我們還訓練了精度更高的深度學習聲紋識別模型(x-vector[4])。並且,可以針對特定的場景,比方說電話通話場景,手機APP場景,嘈雜噪聲場景等相關的場景進行聲紋模型訓練,詳細資訊可以加我們的群進行了解。
聲紋識別在學術界常用的資料集(Aishall.v1 [1]資料集和TIMIT [2]資料集)上面的(1:N)的準確率(>99.5%,見表1)。
表1. Top 1 精度測試結果
第一步,初始化。
當前系統實現了聲音轉向量的函式,使用者將前端得到的聲音透過POST請求,發給阿里雲服務系統,選擇對應的聲紋模型,就可以將聲音轉成對應的向量。
*請左右滑動閱覽
import requests
import json
import numpy as np
# sound:聲音二進位制檔案。
# model_id:模型id。
def get_vector(sound, model_id='i-vector'):
url = '
d = {'resource': sound,
'model_id': model_id}
r = requests.post(url, data=d)
js = json.loads(r.text)
return np.array(js['emb'])
# 讀取使用者檔案。
file = 'xxx.wav'
data = f.read()
print(get_vector(data))
f.close()
在初始化的過程中,使用者建立相關的使用者聲紋表。同時,給表的向量列加入向量索引,來加速查詢過程。當前聲紋模型輸出的都是400維的向量,所以索引引數dim設定為400。
*請左右滑動閱覽
--建立使用者聲紋表
CREATE TABLE person_voiceprint_detection_table(
id serial primary key,
name varchar,
voiceprint_feature float4[]
);
--建立向量索引
CREATE INDEX person_voiceprint_detection_table_idx
ON person_voiceprint_detection_table
USING ann(voiceprint_feature)
WITH(distancemeasure=L2,dim=400,pq_segments=40);
第二步,註冊使用者聲音。
在註冊的過程中,註冊一個使用者,插入一條記錄到當前系統中。
*請左右滑動閱覽
--註冊使用者'張三'到當前的系統中。
--透過HTTP服務,將聲紋轉化成相關的向量。
INSERT INTO person_voiceprint_detection_table(name, voiceprint_feature)
SELECT '張三', array[-0.017,-0.032,...]::float4[])
第三步,檢索或驗證使用者聲音。
聲紋門鎖驗證(1:1 驗證):在驗證系統中,系統會得到使用者的標識資訊(user_id),在聲紋庫中計算輸入的聲音向量和庫裡該使用者的聲音向量的距離。一般系統會設定一個距離閾值(threshold=550),如果向量之間的距離大於這個閾值,說明驗證失敗。如果小於閾值,說明聲紋驗證成功。
*請左右滑動閱覽
-- 聲紋門鎖檢測(1:1)驗證
SELECT id, -- 使用者id資訊
name, -- 使用者姓名
l2_distance(voiceprint_feature, ARRAY[-0.017,-0.032,...]::float4[]) AS distance -- 向量距離
FROM person_voiceprint_detection_table -- 使用者聲音表
WHERE distance < threshold -- 通常情況下,threshold為550
AND id = 'user_id' -- 使用者要驗證的id;
會議聲紋檢索(1:N 檢測):系統透過識別當前講話人的聲音,會返回最相關的註冊使用者資訊。如果沒有返回結果,說明當前會議說話人不在聲紋庫裡面。
*請左右滑動閱覽
-- 聲紋會議人員識別(1:N)驗證
SELECT id, -- 使用者id資訊
name, -- 使用者姓名
l2_distance(voiceprint_feature, ARRAY[-0.017,-0.032,...]::float4[]) AS distance -- 向量距離
FROM person_voiceprint_detection_table -- 使用者聲音表
WHERE distance < threshold -- 通常情況下,threshold為550
ORDER BY voiceprint_feature <-> ARRAY[-0.017,-0.032,...]::float4[] -- 利用向量進行排序
LIMIT 1; -- 返回最相似的結果
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940574/viewspace-2702590/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows 7系統聲音正常酷狗音樂無聲音Windows
- 如何基於實時聲紋變聲實現對聲音的“克隆”
- Java聲音系統介紹Java
- 聲音識別技術真的能識別出蒙面聖戰士嗎?
- 知物由學 | 聽聲辨人,看聲紋識別技術如何保障內容安全?
- 繪製聲音訊率的波紋動畫效果音訊動畫
- win10系統通知聲音怎麼關閉 window10如何關閉系統通知聲音Win10
- win10系統中插耳機沒聲音外放有聲音的解決方法Win10
- win10系統中如何設定聲音雙聲道輸出_win10設定聲音雙聲道輸出的方法Win10
- 會聲會影等量化音訊怎麼使用音訊
- win10系統hdmi怎麼傳輸聲音_win10系統hdmi可以傳輸聲音嗎Win10
- win10系統耳機聲音怎麼設定_win10系統耳機聲音的設定方法Win10
- win10重灌系統後沒有聲音怎麼辦 重灌win10後系統沒聲音Win10
- 聲揚科技聲紋識別技術,為工商銀行構建多模態反欺詐能力
- win10系統語音聲音小怎麼設定 win10系統語音聲音特別小處理方法Win10
- 即時通訊的語音回聲消除技術
- MIT 最新技術:從靜音視訊中提取聲音MIT
- Win10系統下聲音出現破音爆音聲音延遲卡頓的完美解決方法Win10
- Win10系統聲音檔案在哪 win10怎麼開啟系統聲音檔案路徑Win10
- 聲紋識別技術五大發展趨勢總結
- Win10系統如何設定耳麥聲音 win10設定耳麥聲音的方法Win10
- 重灌win10系統後沒聲音怎麼回事_win10系統重灌後沒聲音如何解決Win10
- WIN10系統聲音吃雞設定方法 WIN10系統玩吃雞聲音怎麼設定Win10
- windows10系統聲音太小如何解決Windows
- 聲網Agora音訊通話實踐 | 掘金技術徵文Go音訊
- 試用聲網Agora語音SDK感受 | 掘金技術徵文Go
- Win10系統如何設定禁用揚聲器、插入耳機有聲音Win10
- 榮耀Magic 2跑分成績曝光 搭載骨聲紋解鎖技術
- w10聲音設定在哪裡_w10系統怎麼設定前後聲音
- win10系統音響沒聲音怎麼辦_win10電腦音響插上沒聲音如何解決Win10
- 聲音魔法課
- 量化合約原始碼開發技術/合約量化系統開發技術原始碼搭建程式原始碼
- win10系統麥克風聲音太小怎麼辦 win10系統麥克風聲音太小解決方法Win10
- 電腦沒聲音但是揚聲器顯示有聲音怎麼辦?電腦沒聲音的解決辦法
- linux系統比windows系統聲音小的解決方法LinuxWindows
- win10系統中聲音忽大忽小如何解決Win10
- win8系統沒有聲音怎麼辦?
- 六大場景,看懂聲紋識別技術怎樣“抗疫防疫”