首页 > 其他分享 >声纹识别之xvector

声纹识别之xvector

时间:2022-11-19 22:34:11浏览次数:47  
标签:竖条 input 10 权值 声纹识别 output xvector 512

转自

https://blog.csdn.net/u012594175/article/details/105668750?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166886605416782427472591%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166886605416782427472591&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-105668750-null-null.142^v65^control,201^v3^add_ask,213^v2^t3_control1&utm_term=%E5%A3%B0%E7%BA%B9%E8%AF%86%E5%88%ABX-vector&spm=1018.2226.3001.4187

说话人识别xvector网络结构理解,从tdnn到xvector向量。

https://github.com/NonDay/FreeSR

TDNN
时延神经网络(TDNN)来自1989年的论文《Phoneme recognition using time-delay neural networks》。原文中主要使用TDNN来识别音素,在识别"B", "D", "G"三个浊音中得到98.5%的准确率,高于HMM的93.7%。

普通神经网络识别音素
在讲TDNN之前先说说一般的神经网络的是怎样识别音素的吧。假设要识别三个辅音"B", "D", "G",那么我们可以设计这样的神经网络:

 

 

其中输入0-12代表每一帧的特征向量(如13维MFCC特征)。那么有人可能会问了,即使在同一个因素"B"中,比如"B"包含20帧,那么第1帧与第15帧的MFCC特征也可能不一样。这个模型合理吗?事实上,"B"包含的20帧MFCC特征虽然有可能不一样,但变化不会太大,对于因素还是有一定区分度的,也就是说这个模型凑合凑合还能用,但效果不会非常好。GMM模型可以用这种模型来解释。

时延神经网络(TDNN)
上述模型只用了一帧特征,那么如果我们考虑更多帧,那么效果会不会好呢?

那么我们设计一个包含多帧的神经网络,如下图我们考虑延时为2,则连续的3帧都会被考虑。其中隐含层起到特征抽取的作用,输入层每一个矩形内共有13个小黑点,代表该帧的13维MFCC特征。假设隐含层有10个神经元,那么连接的权重数目为3*13*10=390。

 

 

应该是帧1的每个小黑点分别连接了隐含层的每个小圆圈,同样帧2/帧3…

帧1乘以权重矩阵1,隐含层得到10个输出值

帧2乘以权重矩阵2,隐含层得到10个输出值

帧3乘以权重矩阵3,隐含层得到10个输出值

隐含层3次输出的10个值分别相加得到最终的隐含层输出10个值

 

为了结构紧凑显示,我们将其重绘下图:

 

上两图是等价的。其中每条彩色线代表13*10=130个权重值。三条彩色线为390个权重。也有资料称之为滤波器。

 

好,如果时间滚滚向前,我们不断地对语音帧使用滤波器,我们可以得到下图:

 

 

 

这就是延时神经网络的精髓了!其中绿色的线权值相同,红色的线权值相同,蓝色的线权值相同。相当于把滤波器延时。输入与隐层共390个权值变量待确定。

 

每个隐层矩形内包含10个节点,那么每条棕色的线包含10个权值,假设输出层与隐层的延时为4,则接收5个隐层矩形内(图中只画了3个)的数据,输出层3个(B/D/G),那么隐层与输出层合计权值为10*5*3=150。权值非常少!所以便于训练。

 

下面就不难理解文献上的图了。思想与上文一样,不过文章多用了一层隐层(多隐层有更强的特征提取和抽象能力)

 

 

介绍一下他的做法。Input Layer为语谱图,黑块为大值,灰块为小值。输入层纵向为经过mel滤波器的16个特征(没用MFCC),横向为帧。Input Layer 的延时为2,映射到Hidden Layer 1的关系为16*3 -> 8,权值个数为384。Hidden Layer 1 的延时为4,映射到Hidden Layer 2的关系为8*5 -> 3,权值个数为120。Hidden Layer 2 的延时为8,映射到输出层的关系为3*9 -> 3,权值个数为81。合计权值为384+120+81=585。输出的三个单元分别代表"B", "D", "G"的得分。

 

TDNN优点
(1)网络是多层的,每层对特征有较强的抽象能力。

(2)有能力表达语音特征在时间上的关系。

(3)具有时间不变性。

(4)学习过程中不要求对所学的标记进行精确的时间定为。

(5)通过共享权值,方便学习。

参考
https://www.jianshu.com/p/0207536ebc6c

x-vector

Architecture
xvector的网络结构如下表所示:

 

 

 

 

 

上面的大图中下半部分总共4种颜色的竖条,如下图所示,暂认为依次是:橘黄色/深蓝色/浅黄色/淡蓝色。

 

橘黄色竖条表示mfcc帧,其维度为24(根据论文所知),此处暂且画了20帧,statistics pooling层以下的帧数是根据mfcc实际帧数计算得到,。根据frame1-3的input x output中的output可知:

深蓝色竖条大小为512

浅黄色竖条大小为512

淡蓝色竖条大小为512

 

一层一层分分析,从下往上看,

frame1:

输入端5条直线分别连接5帧,5*24=120,所以input x output=120 x 512;

context=5表示一个深蓝色竖条对应5个橘黄色竖条;

每一次stride=1,表示红色虚线框的内容每次向右移动1个橘黄色竖条的距离间隔;

 

 

frame2如下:

输入端3条直线分别连接3帧,3*512=1536,但不同之处是相邻之间间隔一帧,所以input x output=1536 x 512;

context=9表示一个浅黄色竖条对应了9个最底层的橘黄色竖条(看上面的大图);

同样stride=1;

 

frame3如下:

输入端3条直线分别连接3帧,3*512=1536,但不同之处是相邻之间间隔两帧,所以input x output=1536 x 512;

context=15表示一个淡蓝色竖条对应了15个最底层的橘黄色竖条,大图中虚线框所示;同样stride=1;

 

frame4:输入端只连接1帧,input x output=512 x 512;

frame5:输入端只连接1帧,input x output=512 x 1500;

statistics pooling:求T个输入帧的均值和方差,input x output=1500T x 3000,此处T表示灰色竖条的个数,均值维度为1500,标准差维度1500,cat组合过后即输出3000维的黑色竖条,且数量只有一帧;

segment6:input x output=3000 x 512;

segment7:input x output=512 x 512;

softmax: input x output=512 x N,N表示实际的speaker数量

 

 

参考
X-VECTORS:ROBUSTDNNEMBEDDINGSFORSPEAKERRECOGNITION

声纹识别交流QQ群:875705987


————————————————
版权声明:本文为CSDN博主「NonDay」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012594175/article/details/105668750

标签:竖条,input,10,权值,声纹识别,output,xvector,512
From: https://www.cnblogs.com/wcxia1985/p/16907378.html

相关文章

  • 声纹识别概述(3)声纹识别系统
    转自https://blog.csdn.net/Robin_Pi/article/details/108129688?ops_request_misc=&request_id=&biz_id=102&utm_term=enrollment%20%E8%AF%AD%E9%9F%B3&utm_medium=dist......
  • 声纹识别概述
    转载自https://blog.csdn.net/weixin_44278406/article/details/103787143声纹识别绪论前言指纹信息、人脸信息和声纹(voice-print)信息作为人体固有的生物信息,是智能电子......
  • 65、记录使用科大讯飞的声纹识别从官方的Python Demo转C++ Demo路程
    基本思想:需要将声纹识别的demo集成到项目中,奈何官方只提供了py版本和java版本,需要c++版本,逐开发和记录一下,只是简单复现其py代码一、官方代码的和手册的地址 这里将py代码......
  • 声纹识别技术
    声纹识别:声纹技术的核心声纹技术是其他技术的基础。声纹分割聚类技术、基于声纹的语音合成、人声分离、语音活动检查声纹识别模型既可以是事先训练好的pre-trained,也......