使用x-Vector的流程

1 预处理 Preprocessing

与 i-vector 一样。

2 特征提取 Feature Extraction

使用TDNN(Time Delay Neural Network) 时延神经网络来提取特征。


TDNN.png
  1. 在pooling之前是TDNN结构,每次取得固定数目的帧数(取决于时延数)。在原始论文中,第一层取出当前的帧的特征向量以及前后2帧的,一共5帧,第二层取出当前加上前后2帧,5+4=9帧,第三层再加上前后3帧,一共15帧。
  2. pooling layer累积所有的向量, 因为每一帧都给了一个向量。然后算出这些输入的均值和方差向量,放在一起,继续。
  3. 在pooling之后是两个全向连接层,和一个softmax输出层(分类器,分类当前属于哪一个说话人)。输出层的神经元个数等于训练时的所有说话人的个数。
  4. 跟d-vector一样,在注册时,embedding a 或者 b 就可以被当作 x-vector,而softmax输出层被省略。

在训练完成以后去除输出层,只需要得到embedding,也就是x-vector。

3 使用打分系统

比如PLDA,或者余弦距离。

4 其他:介绍TDNN

4.1 普通神经网络识别音素 B, D, G

image.png

其中输入0-12代表每一帧的特征向量(如13维MFCC特征)。没有办法抓取到时序。

4.2 TDNN

image.png

延时为2,则连续的3帧都会被考虑。其中隐藏层起到特征抽取的作用,输入层每一个矩形内共有13个小黑点,代表该帧的13维MFCC特征。


image.png

其中绿色的线权值相同,红色的线权值相同,蓝色的线权值相同。相当于把滤波器延时。
在介绍TDNN的原始论文中,每一层的Time-Delay用N表示,单元数用J表示,只有4层:

  1. 输入层:N=1(因为输入层特征是单帧提取的), J=16(Mel滤波的维度为16),共15个frame;
  2. 第一隐层: N=2, J=8, 共13(15-2) frame, 参数量 8(当前层8个节点) x (2+1) (每一帧要重复连3次)* 16(上一层的节点数量) = 384(从输入层到第一隐层);
  3. 第二隐层: N=4, J=3, 共9(13-4) frame, 参数量 3 x (4+1) * 8 = 120;
  4. 输出层:N=8, J=3, 共1(9-8) frame, 参数量 3 x (8+1) * 3 = 81;

总的参数量为384 + 120 + 81 = 585,相比现在网络动辄上百万的参数量,简直轻量到不能再轻量了。论文中提到,最后一层再时间维度上共享参数,如此输出层的参数量为 3 x 3 = 9,总的参数量更少。

5 x-vector 优势

因为TDNN以上的特性,参数很少,TDNN便于训练,收敛速度比较快。
神经网络的特点使得特征抽取能力加强,很多防止过拟合的技巧也能够用上,比如maxout和dropout。
加入降噪的技巧后,比如在Deep neural network embeddings for text-independent speaker verification中,x-vector 很明显的比i-vector更加厉害。

Reference List

  1. Time-Delay Neural Network(TDNN)-上
    https://blog.csdn.net/wxb1553725576/article/details/81588440
  2. 语音识别-TDNN
    https://blog.csdn.net/wxb1553725576/article/details/81588440
  3. 基于x-vector的文本无关说话人识别
    https://blog.csdn.net/monsieurliaxiamen/article/details/79638227?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容