昆山杜克大学大数据研究中心 SMIIP 实验室李明博士:为什么说声纹深度编码把声纹识别和其他语音关联任务有机联系起来?

雷锋网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

雷锋网按:2020 年 8 月 7 日,全球人工智能和机器人峰会(CCF-GAIR 2020)正式开幕。CCF-GAIR 2020 峰会由中国计算机学会(CCF)主办,香港中文大学(深圳)、雷锋网(公众号:雷锋网)联合承办,鹏城实验室、深圳市人工智能与机器人研究院协办。

从 2016 年的学产结合,2017 年的产业落地,2018 年的垂直细分,2019 年的人工智能 40 周年,峰会一直致力于打造国内人工智能和机器人领域规模最大、规格最高、跨界最广的学术、工业和投资平台。

8 月 8 日上午,昆山杜克大学大数据研究中心 SMIP 实验室李明博士为前沿语音专场做了题为《基于深度编码的声纹识别及其关联任务》的主题演讲分享。

昆山杜克大学大数据研究中心 SMIIP 实验室李明博士:为什么说声纹深度编码把声纹识别和其他语音关联任务有机联系起来?

语音交互日趋成为人机交互的重要入口。语言自带指令属性,是人类最自然、最日常的沟通方式之一。从通过按键、触控与机器交互过渡到语音人机交互,无疑是一大飞跃。但只能识别指令内容是不够的,真正的智能交互产生的基础是机器能识别、区分人的身份,能像朋友一样根据你的身份鉴别权限和提供个性化的服务,否则语音交互就只是高配版遥控器,本质还是单向的命令输出工具——要实现真正智能的交互就需要加上声纹识别这点料。

在演讲中,李明副教授先是从特征提取,建立模型,鲁棒性处理,分类器设计等几个步骤介绍传统声纹方法,并随后引出基于端到端深度学习框架的声纹识别网络设计。

李明副教授提到,基于深度编码的声纹识别与传统的参数化建模方法从结构上有一定的类比性,比如卷积神经网络用于特征提取,编码层网络用于计算统计量并得到固定维度的特征向量,全连接网络用于后端分类等。

在李明副教授看来,基于深度编码的声纹识别是在传统技术上的升级:一方面,基于深度编码的声纹识别更准确,效果更好;另一方面,声纹深度编码还可以被用于说话人日志,多说话人合成,特定人变声,特定人语音分离等一系列关联任务中。

最后,李明博士也介绍了几个基于声纹深度编码的语音处理关联任务。

以下为昆山杜克大学李明博士的全部演讲内容,雷锋网 (公众号:雷锋网) 作了不改变原意的整理及编辑:

李明: 我今天的报告的题目是《基于深度编码的声纹识别及其关联任务》。

我们研究中心包含了很多研究方向,我主要做的是语音处理和多模态行为信号分析。

今天主要讲声纹识别。

声纹识别是副语言语音属性识别问题的一个具体任务,它和语种,性别、年龄、情感等标签的识别任务是一致的,主要的核心技术问题是针对不定长文本无关语音有监督地预测句子级别标签。

深度学习之前的传统方法一般有以下几个步骤:信号预处理、特征提取、特征表示,鲁棒性处理,以及分类器。

副语言语音属性识别任务通常都是针对不定长的文本无关语音特征序列,因为文本内容是不一样的,所以很难直接进行两个序列的对比,一般是通过生成模型,把不定长输入特征序列的信息转化到模型的参数向量或投影到模型上得到统计量特征,得到固定维度特征向量,以便于后端有监督分类器的建模。

昆山杜克大学大数据研究中心 SMIIP 实验室李明博士:为什么说声纹深度编码把声纹识别和其他语音关联任务有机联系起来?

传统方法我不细讲,基本上传统方法是 GMM 做生成模型,然后迭代GMM模型的均值向量去自适应匹配输入特征序列或者把数据投到模型上计算零阶及一阶二阶统计量。传统方法可以用非监督的方式通过背景数据学习到 GMM 的高斯分量,把特征投影到各个高斯分量上计算统计量,也可以通过音素识别器,直接把特征识别到音素单元,在音素单元上计算统计量。

通常需要把不定常的特征序列转变成定常、定维度的向量,当我们有固定维度的向量,比如说我们把各个高斯分量或各个音素单元上的统计量并联排列到一起,它的维度是相当高的,我们的数据量一般不支持直接在高维上建模,这个时候需要降维,一般选用因子分析。也可以投影到不同的正交子空间里,这样可以得到多个低纬度向量,比如说 JFA 把信道和空间分开。

之前说 GMM 作为生成模型,是非监督的,也就是说语音里面可能包含了声纹、语种、情感和各种各样的副语言语音属性信息,都在这几百维的向量中,通常会有参数化的方法,如LDA,WCCN等,也有非参数化的,比如说 NDA、LSDA等做有监督鲁棒性处理,提取我要的信息,抑制其他信息。

昆山杜克大学大数据研究中心 SMIIP 实验室李明博士:为什么说声纹深度编码把声纹识别和其他语音关联任务有机联系起来?

由于声纹识别的训练集和测试集中的人是不同的,通常我们采用和人脸识别类似的确认任务。我们会检验两条语音是否为同一个人说的,这里后端一般会用 PLDA 进行打分。

传统方法里有特征提取、特征表示、鲁棒性处理、后端分类器建模等几个步骤。

今天主要讲基于深度学习的声纹识别,现在我们可以在前端用 CNN、TDNN等网络结构提取特征,我们提取到这些特征之后,可以使用各种池化策略和编码层设计,变成固定纬度的向量,最后全连接网络代替了原来的后端分类工作,我们平时说的声纹深度编码就是在全连接网络这里的瓶颈层向量。

如果做的是语种识别训练,输出层对应的就是不同的语种。如果做声纹任务,训练时输出层对应的是训练数据的说话人标签,测试的时候要抽出来声纹深度编码,把注册和测试两个语音对应的深度编码比一比,看是不是同一个人。

基于深度神经网络的端到端声纹识别可以是帧级别的也可以是句子级别的。帧级别建模方法把训练和测试数据,切成多个短时片断,把当前帧和前后的几十帧放在一起做成固定维度的输入,直接用全连接网络建模,在测试时,帧级别输出结果会被整合为句子级别输出结果。

现在主流的框架是句子级别的建模,输入是不定长的的语音信号,输出是整个句子的声纹标签,可以输出深度编码,用于测试时做说话人确认。代表性的工作像Deep Speaker 和 X-vector。

我们提出在线的 Data Loader,把各个不定长的输入语音句子进行随机长度截取,并在内存中直接展开丰富的多种在线数据增强处理,然后压入队列中。GPU从这个队列抽取数据进行训练。 

编码层的设计有平均池化,注意力池化,LDE池化,循环神经网络等方法。循环神经网络通常采用最后一帧的输出作为固定维度向量。LDE,为可学习字典单元映射,把前端CNN网络输出的特征投影到不同的字典单元上计算池化,而不是全局的的平均池化。我们做文本无关的声纹识别,希望能把投影单元分解地更细致一些。现在用得比较多的是注意力池化,如Self-Attentive Pooling,在计算统计量的时候引入权重信息,进行加权平均。

长度归一化(Length normalization)一般在训练的时候是没有加在网络里面,是得到深度编码后再做长度归一化和PLDA。如果我们做超大量数据或模板的打分,发现是比较慢的,我们能不能打分的时候用一个内积就可以完成操作,提高速度。损失函数(Loss)设计也是非常重要的,由于同是确认问题,声纹识别任务完全可以直接用人脸识别研究中性能好的 Loss,也是非常实用、管用的方法。

这里我列一下我们实验室复现的几个主流系统在Voxceleb数据集上的性能,供大家参考。第四个Resnet34是我们自己的系统,E-TDNN、F-TDNN、Resnet-BAM,和Ecapa-TDNN都是目前国际主流的方法。

昆山杜克大学大数据研究中心 SMIIP 实验室李明博士:为什么说声纹深度编码把声纹识别和其他语音关联任务有机联系起来?| CCF-GAIR 2020

目前来自于智能音响、智能家居的声纹产品需求量是非常大的,近场做的很好,远场还有一些问题。比如说我们近期主办的Interspeech FFSVC20比赛,比赛是涵盖了文本相关和文本无关的两个赛道,数据加在一起也有大几百人的数据是开源的,可以用近场的开源语音大数据,用一些远场的仿真传递函数,或是仿真软件,把近场的数据增强为远场的数据训练一个基本模型,再拿少量几百人的实际远场数据做微调(fine tuning),实际效果不错。同时,我们也再注册语音的数据增强,多通道以及分布式阵列的联合建模等方面做了点工作,发表在近期的Interspeech和ICASSP会议上。

下面跟大家分享一下我们组最近的一些声纹深度编码的关联应用。声纹识别最相关联的任务就是说话人日志,就是给你一个涵盖多个人说话的单通道语音,但是可能混叠的问题没那么强,有一些混叠,核心的问题是谁在什么时间点说了什么话。首先是模块化框架,这个方法在去年Dihard比赛中第一、第二名都是这样的思路,先做语音端点检测,做完后均匀分段切片,然后每个分段切片上提取声纹深度编码。由于是超短时语音的深度编码,它并不能很好的把音素信息过滤掉,可能要做一些多任务学习,提高鲁棒性。后面打分这里我们展开讲,主要讲的是打分的策略,打分的方法传统的是用 PLDA 进行点对点的打分,相似度矩阵里的某个点(i,j),只反应切片片段i和j之间的相似度,没有考虑上下文信息。我们这里引入LSTM和Vector-to-Sequence两种方法结合上下文来计算相似度矩阵。提高相似度矩阵的准确性。

另外大家可以看到说话人日志中的端到端方法,还是有很大的潜力的,尤其是在没有理想的声音活动检测的前提下。我们在损失函数上针对PIT Loss做了一些改进,降低了复杂度,可以轻松做到十几个说话人的训练。在 Dihard2019的Task2测试集上,模块化框架目前最好的系统结果是 27.1%,而目前端到端方法以及达到32%,未来端到端方法在task2这种实际场景是非常有潜力的。

另外,传统的多说话人TTS方法比较难控制合成出来的声音与目标声音的相似度,我们在传统的多说话人TTS结构的基础上,在输出端额外内嵌一个声纹网络,把合成输出的频谱特征的声纹深度编码特征提取出来,然后要求输出端和输入的目标说话人编码需要保持高度一致,这样可以提高合成语音的目标人相似度,并保持基本一致的声纹深度编码信息。我们最近还有一个工作是 Cross-lingual multi-speaker TTS,可以把说不同语言的多个说话人的数据混合在一起训练多人多语言TTS系统,比如可以让纯中文语料说话人学会合成英文,纯英文语料说话人学会合成中文,非常适合混合语言多人及特定人合成任务。

时间关系,我就讲到这里,谢谢大家!

随意打赏

提交建议
微信扫一扫,分享给好友吧。