主頁 >  其他 > 用對比學習訓練說話人初步驗證模型

用對比學習訓練說話人初步驗證模型

2020-09-18 22:00:58 其他

作者|OngKoonHan
編譯|Flin
來源|towardsdatascience

在我大學的Android開發課程的組專案部分中,我們的團隊構建并部署了一個認證系統,通過說話人的語音組態檔進行認證,

在我上一篇文章(請參閱下一部分)描述了語音認證系統的高級體系結構之后,本文將深入探討所使用的深度學習模型的開發程序,

我以前的文章可以在這里找到(一個帶有移動部署的初級語音認證系統),

  • https://medium.com/@ongkoonhan.lovefad/a-rudimentary-voice-authentication-system-with-mobile-deployment-1d41f5baa319

在這篇簡短的文章中,我將描述開發語音認證模型所涉及的不同階段,并討論在學習程序中遇到的一些問題,

這是文章的概述:

  • 問題陳述

  • 高級模型設計

  • 資料預處理

  • 對比學習語音編碼器

  • 身份驗證的二進制分類器

  • 模型表現

問題陳述

在開始之前,我們需要弄清楚我們是如何試圖構建語音認證問題的,

語音認證主要有兩種方式(廣義地說):說話人識別和說話人驗證,這兩種方法雖然密切相關,但在比較兩種系統的相關安全風險時,它們將導致兩個系統具有截然不同的特性,

問題定義:

說話人識別:n分類任務:給定一個輸入語音,從n個已知說話人(類)中找出正確的說話人,

說話人驗證:二元分類任務:給定一個宣告身份的說話者的輸入話語,確定該宣告身份是否正確,

我們可以看到,在說話人識別中,我們假設給定的輸入話語屬于我們已經認識的說話人(也許是辦公環境),我們試圖從n個已知的說話人(類)中選出最匹配的,

相反,在說話人驗證中,我們假設我們不知道給定輸入話語屬于誰(事實上我們不需要知道),我們關心的是給定的一對輸入話語是否來自同一個人,

準確地說,從整個說話人驗證系統的角度來看,系統“知道”說話人聲稱自己是“已知”的人,而從模型的角度來看,模型只接收一對語音樣本并判斷它們是否來自同一個人,

想象一下使用一個常規的用戶名和密碼認證系統,系統知道你聲稱是誰(用戶名),并檢索參考密碼的存盤副本,然而,密碼檢查器只檢查參考密碼是否與輸入密碼匹配,并將驗證結果回傳給驗證系統,

在此專案中,語音身份驗證問題被構造為說話者驗證問題,

旁白

在這一點上,值得注意的是,還有另一種型別的語音分析問題,稱為說話人分類(Speaker Diarisation),它試圖分離出多人同時講話的源信號,

說話人分類涉及多人同時講話的場景(想象一下在兩張滿是人的桌子之間放一個麥克風),我們試圖分離出每一個獨特的說話人的語音音頻波形,這可能需要多個麥克風從不同的角度捕捉同一場景,或者只需要一個麥克風(最困難的問題),

我們可以看到這會變得非常復雜,一個例子是識別在給定對話的錄音中誰在講話,在試圖給說話人起名字(說話人識別)之前,必須先分離對話中每個人的語音信號(說話人分類),當然,存在混合方法,這是一個活躍的研究領域,

高級模型設計

轉換資料以進行遷移學習—對于這個任務,我希望盡可能地利用遷移學習,以避免自己構建一個復雜而高效的模型,

為了實作這一目標,語音音頻信號被轉換成類似某種影像的聲譜圖,將音頻轉換為聲譜圖后,我便可以使用PyTorch中可用的任何流行影像模型,例如MobileNetV2,DenseNet等,


其中一個演講者的聲譜圖

事后,我意識到我可以使用基于小波變換(WT)的方法來代替基于傅立葉變換變換(FT)的Melspectrogram來獲得“更清晰”的光譜圖影像,

Youtube視頻中的一個演示(https://youtu.be/g8MfWGibjT8) 比較了心臟心電信號的小波變換和傅立葉變換在“影像質量”上的差異,結果表明,小波變換得到的聲譜圖在視覺上比傅立葉變換更“清晰”,

對比學習的杠桿作用:大家都熟悉的對比學習的經典例子是使用三重態損失的設定,此設定每次編碼3個樣本:參考樣本、正樣本和負樣本(2個候選樣本),目標是減小參考樣本和正樣本之間編碼向量的距離,同時增加參考樣本和負樣本之間編碼向量的距離,

在我的方法中,我不想將候選樣本的數量限制在2個,相反,我使用了一種類似于SimCLR(Chen等人,2020)的方法,即使用多個候選樣本,其中一個樣本是正樣本,然后“對比分類器”被迫從一堆候選樣本中選出正樣本,

兩階段遷移學習法:為了解決說話人驗證問題,我們將分兩個階段訓練模型,

首先,通過對比學習對說話人語音編碼器進行訓練,如前所述,對比學習將涉及多個候選樣本,而不是通常的三重態損失設定的正負對,

其次,在預先訓練好的語音編碼器上訓練二元分類器,這將允許語音編碼器在用于此傳輸學習任務(二進制分類器)之前單獨進行訓練,

資料預處理

VoxCeleb1資料集:為了訓練模型識別說話人的語音組態檔(無論他/她說了什么),我選擇使用VoxCeleb1公共資料集,

VoxCeleb1資料集包含多個揚聲器在野外的音頻片段,也就是說,這些揚聲器在“自然”或“常規”設定下講話,對資料集中的演講者進行訪談,并對資料集中的音頻片段進行管理,使每個片段都包含演講者正在談話的訪談片段,

這個資料集包含了每個說話人在不同的訪談設定下的多個訪談,并且使用了不同型別的設備,這給了我希望語音認證系統配合使用的可變性,

對于這個專案,只使用音頻資料(視頻資料可用),還有其他的認證系統試圖合并多種資料模式(比如視頻和音頻結合起來,以檢測語音是否在現場生成),但我認為這超出了我的專案范圍,

音頻波形到聲譜圖:為了能夠利用流行的影像模型架構,語音音頻信號被轉換成類似某種影像的聲譜圖,

首先,將來自同一揚聲器的多個短音頻樣本組合成一個長音頻樣本,由于mel譜圖是基于短時傅里葉變換(STFT)的,因此可以將整個長音頻樣本一次性轉換成mel譜圖,并從長譜圖中得到更小的譜片,

由于長音頻樣本是由單個唯一說話人的較小音頻樣本組成的,因此從長樣本中提取片段應該會迫使模型專注于從每個單獨說話的人的語音組態檔中找出獨特的特征,

來自一個揚聲器的串聯音頻樣本:

接下來,使用LibROSA(Librosa)庫將長音頻樣本轉換為頻譜圖,以下是使用的關鍵引數:

  • Target sampling rate(目標采樣率): 22050

  • STFT window: 2048

  • STFT hop length: 512

  • Mels: 128

然后將功率譜轉換為對數級的分貝,因為我們是用影像網路分析的,所以我們希望光譜圖中的“images”特征稍微均勻分布,


一個揚聲器的混音譜圖

創建“images”:采樣是通過從長光譜圖中分割較小的光譜圖來完成的,

光譜圖“images”創建為128x128x3陣列,格式為RGB影像,在長譜圖上隨機選取一個起始點,對每個新切片滑動半步(128/2=64),得到三個128×128的譜圖切片,然后用[-1,1]之間的最大絕對值對“images”進行標準化,

最初,我復制同一個光譜片3次,將“灰度”影像轉換為“RGB”影像,然而,我決定將更多的資訊打包到每個光譜圖“images”中,為每個“RGB”影像放入3個稍有不同的切片,因為這3個通道不像普通RGB影像那樣具有通常的含義,使用這種滑動技術后,性能似乎略有改善,

對比學習語音編碼器

資料采樣 —— 以下是用于語音編碼器對比學習的資料采樣的一些詳細資訊,
[**頻譜圖切片將稱為“影像”]

對于每個時期,將200個(總共1,000個)隨機全長頻譜圖加載到記憶體中(“子樣本”)(由于資源限制,并非所有1000個全長頻譜圖都可以一次加載),

每行使用1個參考樣本和5個候選樣本,候選影像包含4個負樣本和一個正樣本(隨機混洗),并且影像是從子樣本中隨機生成的,

每個時期有2,000行,批大小為15(MobileNetV2)和6(DenseNet121),

多暹羅編碼器網路 — 對于編碼器網路,使用的基本模型是MobileNetV2和DenseNet121,編碼器層大小為128(取代基本模型中的Imagenet分類器),

為了便于對比學習,建立了一個多連體編碼器模型包裝器作為torch模塊,該包裝器對每個影像使用相同的編碼器,方便了參考影像和候選影像之間的余弦相似性計算,

對比損失+類內方差減少——兩個目標,對比損失和方差減少,連續最小化(由于資源限制,理想情況下,兩個目標的損失應相加并最小化),每1批計算對比損失,每2批進行方差縮減(類內MSE),

對于對比損失,該問題被描述為一個n分類問題,模型試圖從所有候選物件中識別出正樣本,針對參考編碼計算所有候選編碼的余弦相似度,并根據余弦相似度產生的概率計算一個softmax,根據一般的n-分類問題,交叉熵損失最小,

對于類內方差減少,目的是將來自同一類的影像在編碼空間中推近,對來自同一類/同一說話人的影像進行采樣,計算平均編碼矢量,編碼的MSE損失根據平均值(類內方差)計算,并且在反向傳播之前,MSE損失按0.20進行縮放,

身份驗證的二進制分類器

資料采樣 —— 以下是用于說話人驗證二進制分類器的資料采樣的一些詳細資訊,

對于每個時期,將200個(總共1,000個)隨機全長頻譜圖加載到記憶體中(“子樣本”)(由于資源限制,并非可以一次加載所有1,000個全長頻譜圖),

對于每個參考影像,將生成2張測驗影像,其中1張為正影像,1張為負影像,對于每個參考影像,這將產生2對/行,真實對(正)和假冒者對(負),

影像是從子樣本中隨機生成的,每個時期有4,000行,并且批大小為320(MobileNetV2和DenseNet121),

驗證二進制分類器網路 —— 底層編碼器網路是來自對比學習步驟的預訓練編碼器網路,在訓練程序中權重被凍結,

二進制分類器設定為暹羅網路,其中計算了來自輸入對的編碼矢量的絕對差,然后,將二元分類器構建在絕對差異層之上,

模型訓練

學習率回圈:回圈學習率可提高對比學習步驟和二元分類器步驟中的模型準確性,

使用了torch.optim.lr_scheduler.CyclicLR(),其步長(默認)為2000,回圈模式(默認)為“Triangular”,沒有動量回圈(Adam優化器),

學習率的范圍如下:

  • 具有對比學習功能的語音編碼器: 0.0001至0.001

  • 基本分類器: 0.0001至0.01

模型表現

不出所料,模型性能不如最新模型,我認為,促成因素是:

  • 聲譜圖不是我本可以使用的最佳信號轉換,基于小波變換的方法可能會產生更多高質量的聲譜圖“影像”,

  • 使用的基本影像模型不是最新的模型,因為我無法在中等大小的GPU(3GB VRAM)上使用超大型模型,也許像ResNet或ResNeXt這樣更強大的模型可能會產生更好的結果,

  • 僅使用了一個語音資料集(VoxCeleb1),肯定可以使用大量和各種各樣的資料(但遺憾的是,最后期限迫在眉睫),

以下是可比模型的均等錯誤率(EER):

  • 我最好的模型EER 19.74%(VoxCeleb)

  • Le and Odobez (2018), Best model from scratch EER 10.31% (VoxCeleb)

  • Jung, et. al. (2017), EER 7.61% (RSR2015 dataset)

其他調查結果

基本模型大小:使用更大的基本模型提高了分類性能(MobileNetV2 vs DenseNet121),

類內方差減少的效果:類內方差減少提高了兩個基本模型的分類性能,事實上,經過方差縮減的mobilenetw2的性能提高到了與DenseNet121相當的水平,

ROC(左)和DET(右)曲線

下面是使用MobileNetV2和DenseNet121的二元分類分數分布[P(is_genuine)],包括帶/不帶方差減少,

MobileNetV2基本模型-不帶/帶方差減少(左/右):

DenseNet121基本模型-不帶/帶方差減少(左/右):

參考文獻

Chen, T., Kornblith, S., Norouzi, M. and Hinton, G., 2020. A simple framework for contrastive learning of visual representations. arXiv preprint arXiv:2002.05709

Jung, J., Heo, H., Yang, I., Yoon, S., Shim, H. and Yu, H., 2017, December. D-vector based speaker verification system using Raw Waveform CNN. In 2017 International Seminar on Artificial Intelligence, Networking and Information Technology (ANIT 2017). Atlantis Press.

Le, N. and Odobez, J.M., 2018, September. Robust and Discriminative Speaker Embedding via Intra-Class Distance Variance Regularization. In Interspeech (pp. 2257–2261).

原文鏈接:https://towardsdatascience.com/training-a-rudimentary-speaker-verification-model-with-contrastive-learning-186408a752ce

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方檔案:
http://sklearn123.com/

歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/76787.html

標籤:其他

上一篇:Istio 運維實戰系列(2):讓人頭大的『無頭服務』-上

下一篇:通信網技術

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more