百分点感知智能实验室:声纹识别技术发展及未来趋势研究( 六 )


ResBlock最后激活函数的输出:a[L+1]=g(z[L+1]+a[L]) , 残差的核心就体现在这个+a[L]了其中 , z[L+1]为在输入数据经过块中的(Cov、ReLU、Cov)得到的输出 。
百分点感知智能实验室:声纹识别技术发展及未来趋势研究
文章图片
图九ResCNN
conv64-s:单纯的卷积层 。
卷积核尺寸为5*5(卷积核实际上是5*5*c , 其中c为输入数据的通道数);个数为64 , 也就代表着输出数据的第三维了;步长为2*2 , 会改变数据维度的前2维 , 也就是高和宽 。
res64:是一个ResBlock(残差块) , 并不是一层网络 , 实际层数是这个ResBlock中包含的层数 , 这里残差块中包含2个卷积层:卷积核尺寸3*3;个数64;步长为1*1(也就是上文的Cov+ReLU+Cov , 也就是2层 , 中间激活不算) 。 后面的乘3是指有三个ResBlock 。 所以说这个res64部分是指经过3个ResBlock , 而且每一个ResBlock中包含2个卷积层 , 其实是6层网络 。
Average层 , 本来数据是三维的 , 分别代表(时间帧数*每帧特征维度*通道数) , 通道数也就是经过不同方式提取的每帧的特征(Fbank或MFCC这种) 。 将时间平均 , 这样一段语音就对应一段特征了 , 而不是每一帧都对应一段特征 。
Affine层:仿射层 , 就是将维度2048的特征变为512维 。
ln层(lengthnormalizationlayer):标准化层 , 特征标准化之后 , 得到的向量来表示说话者语音 。
关于dim维度这一列 , 开始时输入语音数据是三维:(时间帧数*每帧特征维度*通道数) 。 本文中 , 时间帧数根据语音长度可变 , 每帧特征维度为64 , 通道数为3(代表Fbank、一阶、二阶) 。 所以输入维度:时间帧数*64*3 。 经过第一层conv64-s后:因为卷积层步长2*2 , 所以时间帧数和每帧特征维度都减半了 , 特征维度变为了32 , 通道数变为了卷积核个数64 。 32*64=2048 , 也就是dim的值 。 所以 , 这里的dim维度指的是除去时间维的频率特征维度 。
训练的时候 , 使用Tripletloss作为损失函数 。 通过随机梯度下降 , 使得来自同一个人的向量相似度尽可能大 , 不是同一个说话者的向量相似度尽可能小 。
百分点感知智能实验室:声纹识别技术发展及未来趋势研究
文章图片
图十Tripletloss
该论文在三个不同的数据集上演示了DeepSpeaker的有效性 , 其中既包括依赖于文本的任务 , 也包含独立于文本的任务 。 其中一个数据集UIDs包含大约250,000个说话人 , 这是目前所知文献中最大规模的 。 实验表明DeepSpeaker的表现显著优于基于DNN的i-vector方法 。
比如 , 在一个独立于文本的数据集上 , DeepSpeaker在说话人验证任务上达到了1.83%的等错误率(EER) , 并且还在有100个随机采样的候选者的说话人识别任务上得到了92.58%的准确度 。 相比基于DNN的i-vector方法 , DeepSpeaker的EER下降了50% , 准确度提高了60% 。
百分点感知智能实验室:声纹识别技术发展及未来趋势研究
文章图片
图十一DeepSpeaker实验结果
总结
从声纹识别技术发展综述中 , 我们不难看出 , 声纹识别的研究趋势正在快速朝着深度学习和端到端方向发展 , 其中最典型的就是基于句子层面的做法 。 在网络结构设计、数据增强、损失函数设计等方面还有很多的工作去做 , 还有很大的提升空间 , 此外 , 声纹识别系统在保持高性能的情况下对语音长度的需求在不断减小 。
声纹识别是百分点科技一直关注和研究的技术领域之一 。 目前 , 百分点科技的声纹识别系统使用大规模数据训练 , 准确度可达95%以上 , 1:N支持万级以上声纹库建设 , 在国内数字政府、公共安全等多个领域已有实际项目落地 。 未来 , 我们将继续朝着声纹识别技术的深度学习方向进行重点研究 。