2020 年 8 月 7 日-9 日,2020 全球人工智能和机器人峰会(CCF-GAIR 2020)于深圳举行。
CCF-GAIR 2020 峰会是由中国计算机学会(CCF)主办,雷锋网、香港中文大学(深圳)联合承办,鹏城实验室、深圳市人工智能与机器人研究院协办的全球盛会。大会主题从 2016 年的学产结合,2017 年的产业落地,2018 年的垂直细分,2019 年的人工智能 40 周年,秉承打造国内人工智能和机器人领域规模最大、规格最高、跨界最广的学术、工业和投资领域盛会。
8 月 8 日上午,在前沿语音技术专场中,滴滴 AI Labs 高级专家研究员、语音研究实验室负责人宋辉博士带来了题为《基于深度学习的语音分离技术进展》的主题演讲。
宋辉博士在演讲中介绍了语音分离的发展现状,深入阐述了基于深度学习的单通道语音分离技术的发展脉络,各种技术方案的优缺点与适用场景,以及未来面临的挑战。
首先,宋辉博士展示了当下比较流行的单通道语音分离技术在两个不同的公开数据集上的表现。
宋辉博士介绍,在 WSJ0-2mix 数据集上,近两年单通道语音分离技术在 SI-SDRi 指标上有比较大的进步。而对于更复杂但更贴近真实环境的噪声场景,目前的学术研究还不是特别完备,与安静环境相比在 SI-SDRi 指标上会有几个 dB 的落差。同时,表现比较好的单通道方法在含噪数据集上还没有通过完备的测试和评估。
当前单通道语音分离的主流框架是“Encoder—Separator—Decoder”框架(如下图所示),其中:
Encoder 用于将一维混合语音变换到另一个二维空间中;
Separator 用于在二维空间中学习相对于每个说话人的 Mask,并与混合语音进行元素级别相乘,得到每一路分离后的变换域信号;
Decoder 可将每一路信号反变换回到时域。
同时,就分离方法而言,宋辉博士详细介绍到了目前的两种主流方法——基于频域(Frequency-domain)和时域(Time-domain)的语音分离方法。
一方面,频域方法的优点在于可以与传统的信号处理方法(如频域波束形成)更好的相融,可以得到更加稀疏和结构化的声学特征表征。同时缺点也比较明显,如精准的相位重建比较困难、需要较长的窗长满足频率分辨率的要求而导致的长时延等。
就频域语音分离和目标说话人抽取任务而言,宋辉博士主要介绍了几种比较有代表性的技术方法,包括 u-PIT、Deep CASA、Voice filter 和 SBF-MTSAL-Concat。
另一方面,基于时域的语音分离近两年来受到了更多关注。时域方法能够把混合语音变换到一个实数域潜空间中,用一种 data-driven 的形式学习其特征表示,例如,可以采用 1-D CNN 或更深的 Encoder 完成这种变换。
据介绍,时域方法不需要处理相位重建问题,可做到采样点级别的时延,因而非常适用于对实时性要求高的场景。在此基础上,宋辉博士接着介绍了 Conv-TasNet、DPRNN-TasNet、SpEx、SpEx+等几种有代表性的时域语音分离和说话人抽取技术。
随后,宋辉博士还介绍了单通道语音分离技术的几个热点研究方向,包括:
Separator 的改进;
Encoder/Decoder 的改进和优化;
训练机制的改进;
如何有效利用 speaker embedding 信息完成高质量的说话人抽取任务等。
值得一提的是,宋辉博士向大家展示了一段音频 demo,结合滴滴目前的业务场景,展现了噪声环境下目标说话人声音抽取的具体操作细节和结果。
演讲最后,宋辉博士进行了总结和展望。他表示,目前在学术界和工业界中,基于时域的分离方式更受大家欢迎。
在对未来的展望上,宋辉博士表示:
希望不断提升神经网络的泛化能力,使得各种分离网络在真实的环境中可以取得满意的结果;希望未来可以挖掘出更多语音分离的场景和应用。
以下为宋辉博士的全部演讲内容,雷锋网作了不改变原意的整理及编辑:
大家好,我是来自滴滴 AI Labs 的宋辉,我今天的报告内容是基于深度学习的单通道语音分离技术。所谓语音分离,就是在一个有多个说话人同时说话的场景里,把不同说话人的声音分离出来。
今天的报告主要从三个方面展开:一是语音分离技术的现状和基本的技术框架;二是报告的重点,即单通道语音分离技术;三是结论以及对未来的展望。
第一部分,单通道语音分离技术的现状和基本框架。
这张图汇总了目前主流的语音分离技术在两个不同的数据集上的性能,一个是 WSJ0-2mix 纯净数据集,只有两个说话人同时说话,没有噪声和混响。WHAM 是与之相对应的含噪数据集。可以看到,对于纯净数据集,近两年单通道分离技术在 SI-SDRi 指标上有明显的进步,图中已 PSM 方法为界,PSM 之前的方法都是基于频域的语音分离技术,而 PSM 之后的绝大多数(除了 Deep CASA)都是基于时域的语音分离方法。
噪声场景相对更贴近于真实的环境。目前,对于噪声场景下的分离技术性能的研究还不是特别完备,我们看到有一些在安静环境下表现比较好的方法,在噪声环境下性能下降比较明显,大多存在几个 dB 的落差。同时,与纯净数据集相比,噪声集合下各种方法的性能统计也不是很完备。
通常来讲,单通道语音分离可以用“Encoder-Separator-Decoder”框架来描述。其中, Encoder 可以理解为将观测信号变换到另外的一个二维空间中,比如离散傅里叶变换将时域信号变换到频域,1-D CNN 将时域信号变换到一个二维潜空间中;Separator 在变换域当中进行语音的分离,学习出针对不同声源的 mask,与混合信号做一个元素级别相乘,由此实现变换域中的语音分离操作;Decoder 就是把分离后的信号反变换到一维时域信号。这套框架既可适用于频域的分离方法,也可用于时域的分离方法。
大部分 Encoder 都是通过线性变换完成的,通过一组滤波器将时域混合语音变换到另外的一个二维空间当中。滤波器组的设计是值得研究的。最简单的方法是用固定的滤波器,比如短时傅里叶变换。此外,人们更愿意用 data-driven 的方式学习滤波器组的系数,比如常用 1-D CNN。所以,单通道的语音分离,便可以依据此划分为频域和时域两类方法。
第一类是基于频域的语音分离方法。这种方法的优点是可以与传统的信号处理方法更好的相融。频域法中的 encoder 多数情况下由傅里叶变换实现。在多通道场景下,可以与后端的频域波束形成更好的配合。第二个优点就是 Separator 中 Mask 的可解释性比较强,即通过网络学出来的特征更加稀疏和结构化。
这种方法的缺点也比较明显。第一,傅里叶变换本身是一种通用的变换,也是信号处理当中的经典变换,但它并不一定适用于分离任务。第二个比较明显的问题是相位重建比较困难。Separator 中学习 Mask 通常利用的是幅度谱,而在语音重构的时候会利用混合语音的相位,所以会有语音失真的产生。第三,因为要做傅里叶变换需要有足够的采样点保证频率分辨率,所以延时比较长,对于对时延要求比较高的场景,频域分离法会有限制。
第二类方法是时域分离法。它的第一个优点是用一种 data-driven 的形式完成 Encoder 变换,比较常用的是 1-D CNN 或是更深的 Encoder 来完成这种变换。另外,时域方法不需要处理相位重建。第三,它的延时比较短,比如 Conv-TasNet 可以做到两毫秒的延时,DPRNN-TasNet 可以做到采样点级别的延时。
时域方法的缺点是 Mask 可解释性比较差,我们并不知道信号会变换到什么样的域当中,也不知道在这个域当中 Mask 到底有什么物理含义。此外,时域法和传统的频域信号处理方法相结合也稍显复杂。
需要提到的是,语音分离是将所有说话人的声音全部分离出来。有的时候,我们只想得到我们感兴趣的说话人的声音,而不需要分离出每一个说话人,这就是目标说话人抽取。它可以解决盲源分离中的两大痛点,即输出维度问题和置换问题。此外,由于只需要抽取出一路信号,因此不需要在分离出的多路信号中进行选择,从而节省运算量。它的附加条件是需要一个参考,既然要抽取特定的说话人,那么必须要事先知道关于这个说话人的信息,也就是 speaker-embedding,将这些信息作为参考输入给抽取网络。在一些实际场景中,获取参考并不困难。
第二部分,介绍单通道语音分离和说话人抽取的主流技术路线。
早期的语音分离多采用基于频域的方法,比如 u-PIT,这是一种比较流行的训练方法,很多时域的分离网络依然沿用了这种训练思路。
Deep CASA 是频域方法当中性能比较突出的一种方法。它是基于 CASA 框架。CASA 的基本框架分为两部分:第一步是基于帧级别的分离;第二步则是对上一步的结果聚合得到输出。Deep CASA 顾名思义是将上述两步用更深的网络来实现,这是近两年在频域算法中表现比较突出的方法。
再来看目标说话人抽取技术。比较有代表性的是谷歌提出的 Voice filter,它利用目标说话人的声纹信息,将 d-vector 作为参考输入到抽取网络中,抽取网络可以只抽取出与该声纹信息相匹配的信号。
另一种更为常用的抽取方式是引入一个声纹辅助网络,通过联合学习的方式得到高质量的 speaker-embedding,帮助抽取网络完成目标说话人声音的提取。
基于时域的语音分离技术,比较有代表性的包括 Conv-TasNet 和 DPRNN-TasNet。对于时域目标说话人抽取任务来讲,SpEx 和 SpEx+目前的表现比较好,它们的基本框架也是借助于辅助网络提取声纹信息,SpEx 和 SpEx+ 的不同点在于,后者的 speech encoder 和 speaker decoder 是权值共享的。此外,多尺度输入对于抽取性能提升也是有帮助的。
目前大家对于单通道语音分离技术的关注点主要集中在以下四个方面。
首先是 Separator。早期的频域方法中,人们更愿意用双向 RNN 做分离器,在时域方法中大家开始用 TCN,到现在 DPRNN 用的更多一些,它的模型相对比较小,分离效果也比较好。还有一种方式是直接用 UNet 或是 WaveNet 实现从波形到波形的端到端分离,这种方法多用于音乐分离任务。
其次是 Encoder/Decoder。前面讲过,Encoder 可以是由一组固定滤波器实现,比如傅里叶变换,也可以通过一种完全学习出来的 1-D CNN 网络实现,其实还有一种选择,即参数化的滤波器组。也就是说,并不需要学习滤波器的每个系数,而是学习其中的关键参数,由这些关键参数可以算出滤波器组的结构。还有一种思路是将 Encoder/Decoder 变得更深,以及采用多尺度输入的方式。实验表明,多尺度输入可以带来平均 0.3dB 的 SI-SDR 的提升。
第三是训练机制。在训练机制上的发挥空间也比较大。比如两步训练法(two-step training),由于 1-D CNN 作为 Encoder/Decoder 的风险是信号不一定能够精确重构,也就是说可能无法像傅里叶正反变换那样完美复现原始信号,所以两步法就是在第一步先只训练 Encoder/Decoder,希望它们引入的误差尽可能小;在第二步当中训练中间的分离网络,需要注意的是,训练分离网络的损失函数也是定义在潜空间中的。
还有一个比较有用的方法是 Dynamic mixing,它是一种数据增广的方式,在训练的时候人为追加一些不同的混合比例的混合语音来扩充训练数据,这种方式非常简单,却非常有效。
另一种扩充训练数据的方式是半监督训练,它利用大量的无标注数据,通过一个 Teacher 网络先把它们分解成两路信号的混合,然后通过 Student 网络将其分离出来,它的学习目标是使得 Teacher 网络和 Student 网络尽可能相似。
还有一种 Conditional chain model,这种方法并不是把每个人的声音同时分离出来,而是一个接一个分离。这样,在分离后面的说话人声音的时候,就可以利用前面的输出作为条件,再配合一定的截止条件,一定程度上可以缓解分离网络对说话人个数的限制。此外,我们最近也在尝试利用对抗学习的方法,直接将生成对抗网络的训练机制引入到分离网络当中,也取得了不错的效果。
最后,如何更好的利用声纹辅助信息完成高质量的说话人抽取任务也很关键。说话人抽取效果好坏的关键点在于 speaker embedding 的质量能给予分离网络多大的辅助。至于 speaker embedding 如何获得,既可以像 Voice filter 一样用固定的声纹 embedding 作为 reference,比如 x-vector、d-vector 等等,也可以通过辅助网络与分离网络联合训练的方式获得可学习的声纹 embedding,后者相对用的更多一些。
滴滴在这方面也在尝试通过引入 Iterative refined adaptation(IRA)机制来提炼高质量的 speaker embedding。它本质上是一种 adaptation 方法,受人类听觉感知过程的启发,在分离之初,我们可能并不知道确切的声纹信息,但随着分离过程的进行,我们对于目标说话人越来越熟悉,获得了更多的目标说话人的声纹信息,这些信息可以反过来指导分离网络更好的抽取出与之相匹配的声音。实验表明,对于相同的分离网络,引入 IRA 机制能够带来分离性能的一致提升,而且能够比较有效的减少含噪场景下的性能损失。
第三部分是一些结论和对未来的展望。
第一,目前在学术界和工业界,基于时域的分离方式更受大家欢迎。第二,如何提升模型的泛化能力是一个比较关键的问题,我们更希望一个分离网络或抽取网络在通用场景下可以取得满意的结果,而不是过拟合于某些特定的场景。第三,未来希望可以尽可能的挖掘出更多语音分离的场景和应用。最后,是前端语音分离和后端 ASR 系统的联合训练,这也是目前的一个研究热点。
以上是我报告的全部内容,谢谢大家。
雷锋网雷锋网雷锋网