日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Chapter5_Speaker_Verification

發布時間:2024/7/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Chapter5_Speaker_Verification 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1 Task Introduction
  • 2 模型架構
  • 3 模型介紹
    • 3.1 i-vector
    • 3.2 d-vector
    • 3.3 x-vector
    • 3.4 more
  • 4 End to End

本文為李弘毅老師【Speaker Verification】的課程筆記,課程視頻youtube地址,點這里👈(需翻墻)。

下文中用到的圖片均來自于李宏毅老師的PPT,若有侵權,必定刪除。

文章索引:

上篇 - 4-2 More than Tacotron

下篇 - 6 Vocoder

總目錄

1 Task Introduction

在之前的課程當中已經講過了語音轉文字,文字轉語音,語音轉語音這幾個,這次要來講一下語音轉類別。也就是給語音分類。

與語音轉類別相關的任務有情感識別,語音事件檢測,自閉識別,關鍵詞識別等等,這些技術都是大同小異,今天主要來講一下【語者驗證】。

語者驗證指的就是輸入兩段語音,輸出這兩段語音是同一個人說出來的概率。有一個應用場景就是【銀行客服】。當我們第一次打電話給銀行或者去銀行的時候,客服會把我們的聲音記錄下來,然后當我們下一次再打電話給銀行的時候,銀行就可以比對以下這次的聲音和之前的聲音是否都是我們說出的,如果不是的話,就需要額外的驗證手續了。在判斷是否為同一個語者發出的聲音時,會人為設置一個threshold,大于該值則為同一個人說的,否則不是。threshold的大小可以根據場景需求設置。

不難想象,只要我們的threshold取的不同,模型的正確率也就會不同。那么,我們如何來評價這個模型的好壞呢?有一個指標叫做Equal Error Rate(EER),EER指的就是下圖中,橙色斜線與藍色曲折線的交點值大小。橙色的線就是一條斜率為1的直線,藍色的線是我們在取不同大小的threshold時,代表模型結果的FP和FN的值的位置。FP指的是不同語者被判斷成同一個語者的概率,FN指的是同一語者被判斷成不同語者的概率。如果藍色的線和橙色的線的交點值越小,那么模型越好。

2 模型架構

整個模型從框架上來說,其實并不復雜。模型就是一個可以抽取語音中語者信息的網絡,然后輸入一段語音之后,就可以吐出這段語音對應的語者信息向量,也成為speaker embedding。整個過程可以分為三個階段:

  • 訓練模型:
    找一個有多個人說話的數據集,然后把這些語音放到模型里去訓練,得到一個得以抽取說話人語者信息的模型。用來訓練的數據集一般會比較大。谷歌的非公開數據集有18000個語者說的3600萬條語音。這個真的是非常大了,我們沒法得到這樣的數據集。目前的公開數據集,可以使用VoxCeleb或者VoxCeleb2。這些公開的數據集,就比谷歌的數據集要小很多啦。
  • 錄入模板音
    把說話人第一次說話的聲音錄入下來,輸入模型中,講吐出的語者信息向量作為模板存放起來
  • 對比聲音
    把新加入的聲音輸入模型當中,得到語者信息向量,將其與之前存放起來的模板進行相似度的計算,判斷是否是同一人說的

3 模型介紹

3.1 i-vector

i-vector不是深度學習的模型。李老師說,這個模型可以說是語音界最后一個被深度學習打敗的模型,在16年左右,還是比深度學習的模型效果好的。這個模型這里不做介紹,它就是一個不管輸入多長的語音,都可以吐出一個400維的向量的模型。

3.2 d-vector

d-vector是14年提出的一個和i-vector效果差不多的深度學習模型。差不多就是說還沒有i-vector好。它的思想很簡單,在訓練的時候,就是截取語音中的一小段之后,把這段放到DNN里去訓練,最后輸出這段話是哪個人說的。訓練結束之后,倒數第二層的feature就是我們要的speaker embedding了。

在實際預測的時候,我們的輸入語音是不等長的,因此d-vector會把語音截成多段,然后取這幾段特征的平均值作為最后的speaker embedding。

3.3 x-vector

x-vector是d-vector的升級版,它在訓練的時候,就考慮了整段聲音信號的信息。它會把每一小段的聲音信號輸出的特征,算一個mean和variance,然后concat起來,再放進一個DNN里去來判斷是哪個說話人說的。其他的部分和d-vector一致。

當然,今天我們再來看的時候,會把DNN直接換成RNN就可以了。

3.4 more

除了以上講到的這幾種方法之外,還有很多其他的方法,比如加入了attention的,又比如NetNLAD等等。這里不細講這些方法,這些方法的框架都是一樣的,只不過模型內部有所改變。想了解的同學可以直接看文獻。

4 End to End

以上說到的方法,都是train一個speaker recognition的模型,然后拿它的特征來做相似度的計算。其實相似度計算這部分,也可以直接放進模型里去訓練,做成一個end-to-end的模型。我們的數據集還是和之前的一樣,有一堆多個speaker說的話,我們知道每句話是哪個speaker說的。在end-to-end訓練的時候,我們會把k段同一個人A說的話放進模型里,得到一個平均之后的特征,然后再從數據集中抽取一段A說的話,作為正樣本,抽取一段非A說的話,作為負樣本,然后也輸入模型得到一個特征。兩個特征做相似度的計算,希望正樣本下的score越高越好,負樣本下的score越低越好。

這種做法也可以分為text-dependent和text-independent。text-dependent就是輸入的語音所說的話是固定,知道的。text-independent就是輸入的話是隨機的。在text-independent的時候,我們可以在抽出來的特征這里加一個discriminator用來做語音轉文字。我們的模型就是要試圖去騙過這個discriminator,兩者共同進步。這個也是很多地方都用到的一個方法。

總結

以上是生活随笔為你收集整理的Chapter5_Speaker_Verification的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。