Deep Learning for Human Language Processing Part 8(P16)
课程主页:http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html
视频地址:https://www.bilibili.com/video/BV1RE411g7rQ?p=1
参考资料:https://blog.csdn.net/qq_44574333/category_10304412_2.html
备注:图片均来自于课件。
这次回顾P16,这部分介绍了语者验证问题。
语者验证(Speaker Verification)
语者验证是指输入语言,输出类别的问题:
类似的问题有:
- 情绪识别。
- 声音事件检测。
- 自闭症识别。
- 关键字发现。
这些问题和语者验证类似,所以这讲主要讨论语者验证,这一讲的内容如下:
- 任务介绍。
- 语者验证框架介绍。
- 语者嵌入(Speaker Embedding)。
- 端到端。
任务介绍
语者识别(Speaker Recognition / Identification)
语者识别的任务是判断一段语音是谁说的,该任务为多类别分类:
语者验证(Speaker Verification)
语者验证的任务是判断两段语音是否为同一人所说,模型如下:
由于涉及到阈值设定,所以评估两个系统好坏的方式为Equal Error Rate (EER):
首先画出不同阈值时,同一语者被判断成不同语者比例(FN)和不同语者被判定成同一语者(FP)的关系:
该曲线和$y=x$的交点即为EER。
语者验证是本讲的重点。
语者分段标记(Speaker Diarization)
语者分段标记的任务是:在一段语音中,谁在何时说话。
具体来说,我们得到的是一段语音,例如会议记录,电话记录等等,任务有如下两步:
- 分割。
- 聚类。(语者的数量可能未知)
语者验证框架介绍
语者验证的主要方式是抽取语者的信息(Speaker Embedding),然后比较两者是否相同:
框架
模型主要分为三个部分:
- 抽取语者信息(Development)。
- 让语者说话,注册其信息(Enrollment)。
- 根据新的语者所说的话,判断其是否和之前语者相同(Evaluation)。
注意阶段2,3的语者在阶段1中并不会出现。
具体架构如下:
语者嵌入(Speaker Embedding)
这部分介绍最关键的一步,语者嵌入。
i-vector
这部分老师并没有详细介绍,可以参考如下资料:
https://www.slideshare.net/xavigiro/speaker-id-d3l3-deep-learning-for-speech-and-language-upc-2017
整体的过程如下:
d-vector
d-vector的思路如下:
- 抽取一段声音信号。
- 输入到DNN,得到DNN的输出。
- 讲DNN的输出喂给output layer,由此判断声音信号的语者是谁。
- 训练后,DNN的输出即为d-vector。
模式如下:
注意到之前的方法只考虑了一小段声音信号,为了解决这点,利用滑动窗口的方式计算多段d-vector,然后将其平均即可得到最终的d-vector:
x-vector
x-vector的思路如下:
- 抽取一段声音信号。
- 输入到DNN,得到DNN的输出。
- 利用滑动窗口的方式得到多个输出。
- 将多个输出做statistical pooling,得到mean和variance,拼接起来输入到DNN,得到一个向量$v$,将该向量输入给output layer,由此判断声音信号的语者是谁。
- 训练后,向量$v$即为x-vector。
图示如下:
进阶方法
- Attention Mechanism [Chowdhury, et al., ICASSP’18]
- NetVLAD [Xie, et al., ICASSP’19]
端到端
之前的方法是分为两阶段训练,第一阶段训练抽特征的模型,第二阶段训练判别模型;端到端的思路是将两者结合:
数据集构建:
- 让语者说多个句子。
- 正样本:
- $K$个语言者$i$的句子 + $1$个语者$i$的句子。
- 负样本:
- $K$个语言者$i$的句子 + $1$个语者$j$的句子。
模型架构与训练:
模型分为Text-dependent和Text-independent:
Text-dependent:Enrollment和Evaluation说的内容相同。
Text-independent:Enrollment和Evaluation说的内容不同。
这一步要训练一个Discriminator,Discriminator判断声音信号的文字内容是否相同。所以训练完成后,Networ可以“骗过”Discriminator,即产生和内容无关的声音信号。