INTERSPEECH 2022|FS-CANet: 基于全带子带交叉注意力机制的语音增强

news2024/11/15 19:24:33

INTERSPEECH 2022

FS-CANet: 

基于全带子带交叉注意力机制的语音增强

本文由清华大学与腾讯天籁实验室、香港中文大学合作,提出了一个全带-子带交叉注意力(FSCA)模块来交互融合全局信息和局部信息,并将其应用于FullSubNet,构建了一个新的语音增强模型FS-CANet。 FS-CANet在降低了 25% 的参数量的情况下进一步提升了原有语音增强模型在复杂声学环境下的降噪性能,在无混响的条件下SI-SDR达到了 18.08 dB ,有混响的条件下SI-SDR达到了 16.82 dB ,超越了现有的最好的方法。

01 背景动机

单通道语音增强方法从单通道带噪音频信号中去除背景噪声,旨在提高语音的质量和可懂度,在助听器、音频通信和自动语音识别中有着重要的应用。 近年来,基于深度学习的语音增强方法,在低信噪比、混响等挑战性条件下可以取得较好的效果,相关方法可以分为时域方法和频域方法。 时域方法直接从带噪语音波形预测干净的语音波形。 频域方法则一般以带噪频谱特征为输入,其学习目标是干净的频谱特征或掩模(包括理想二值掩模IBM、理想比掩模IRM、理想复比掩模cIRM等)。 总的来说,考虑到系统的鲁棒性和计算复杂度,频域方法更为人们所广泛使用。

FullSubNet作为一种单通道频域语音增强方法被提出,它由一个全带模型和一个子带模型组成,将两者串联后进行联合优化。 通过这种方式,FullSubNet可以捕捉到全局频谱的上下文信息,同时保留了关注局部频谱模式的能力,因此在降噪任务上取得了优异的效果。 然而,在FullSubNet中,全带模型和子带模型之间的关系是通过简单拼接全带模型的输出与子带单元而实现的,每一个子带单元最终只能见到一个维度的全带信息。 因此,这种方法只为子带单元补充了少量的全局频谱信息,它缺乏全带信息和子带信息之间的交互,这限制了模型降噪能力的上限。

02 贡献

本文针对上述的问题,提出了一个全带-子带交叉注意(fullband-subband cross-attention, FSCA)模块来交互融合全局信息和局部信息,并将其应用于FullSubNet,提出了新的语音增强方法FS-CANet。 通过FS-CANet,我们在全带-子带语音增强模型内有效交互融合全带与子带信息,在降低参数量的情况下进一步提升了原有语音增强模型在复杂声学环境下的降噪性能。

03 解决方案

FS-CANet整体架构

FS-CANet的模型结构如图所示,其主要由三个部分组成: 一个高效的全频带提取器(Fullband Extractor),一个全带-子带交叉注意力机制模块在(FSCA module)和一个子带模型(Subband Model)。

全频带提取器(Fullband Extractor)

全频带提取器模块示意图

全频带提取器(Fullband Extractor)是在FullSubNet+中设计的,它是一个高效的全带处理模型。 与FullSubNet中的全带模型相比,它在参数数量较少的情况下具有更好的性能。 因此,我们用全频带提取器来替代FullSubNet中的全带模型。 如图所示,全频带提取器中,一组堆叠的TCN块被用来替代一层LSTM。 我们通过指数级增加每组的扩张因子来堆叠TCN块,以捕捉全频段上具有长距离依赖性的语音信号的特征。 具体实现上,FS-CANet中的全频带提取器,其有2组4个TCN块。

全带-子带交叉注意力机制模块(FSCA Module)

全带-子带交叉注意力机制模块示意图

在FS-CANet中,我们使用全带-子带交叉注意力机制模块来取代FullSubNet原有的简单拼接方法。 全带-子带交叉注意力机制模块的结构如图所示,它由用于交互融合全带子带信息的多头注意力机制模块以及用于进一步融合的全连接层所组成。 全带-子带交叉注意力机制模块以子带单元和全频带embedding作为输入,对于每个子带单元和全频带embedding,子带单元被线性地转换为注意力机制中的Key和Value。 全频带embedding而则被线性转换为注意力机制中的Query。 为了实现全带和子带信息的交互,我们使用了多头注意力机制:

通过这种交互融合,多头注意力机制的输出embedding中包含了子带单元所关注的多个不同维度上的全局时域以及频域信息。 而后,多头注意力机制的输出embedding与子带单元进行相加,在后续的全连接层中进行进一步的融合,最终得到包含全局信息以及局部信息的融合embedding 。

子带模型(Subband Model)

子带模型示意图

为了学习信号平稳性和保持模型训练中的稳定性,FS-CANet中的子带模型使用由两个堆叠的单向LSTM层和一个全连接层组成的网络结构。 子带模型以经过交互融合的融合embedding作为输入,这些融合embedding中包含了全局信息以及局部信息。 子带模型根据这些融合embedding来预测最终的学习目标cIRM。

04 实验验证

我们在InterSpeech 2021 DNS Challenge数据集的一个子集上训练和评测了FS-CANet。 干净数据集包括2150名说话人的562.72个小时的语音片段。 噪声数据集包括来自超过150个类别的181个小时的65302个音频。

在模型训练过程中,我们使用动态混合语音-噪声来模拟带噪语音。 具体而言,在每个训练周期开始之前,75%的干净语音与从OpenSLR26和OpenSLR28数据集随机选择的房间脉冲响应(RIR)混合。 之后,在-5到20分贝的随机信噪比下,通过混合干净的语音和噪声来动态地产生带噪语音。

DNS Challenge提供了一个公开可用的测试数据集,由无混响和有混响的带噪语音组成,其中每个类别有150个噪声片段,信噪比分布在0分贝到20分贝之间。 我们使用这个测试集来评估我们模型的有效性。

不同模型DNS Challenge测试集上的表现

与FullSubNet和FullSubNet+的对比实验

在上表的最后三行,我们比较了FS-CANet与FullSubNet和FullSubNet+的性能。 根据该表,FS-CANet在所有的评估指标上都优于基线FullSubNet,而且还具有更小的参数量。 此外,FullSubNet+作为FullSubNet的改进方法,具有复杂的模型结构,比FullSubNet有更好的性能。 然而,根据上图显示,FS-CANet以较少的参数量和较简单的结构,实现了优于FullSubNet+的性能。

与SOTA方法的对比实验

此外,我们将FS-CANet与当前一些最先进的方法进行比较。 我们提出的FS-CANet在没有混响的情况下显示出卓越的降噪性能,在有混响的情况下甚至有更突出的性能提升。 这表明,作为对FullSubNet的改进,FS-CANet继承了子带模型对混响效果的优秀建模能力,并在此基础上大大提高了降噪能力。

对全带-子带交叉注意力机制模块的探究实验

对全带-子带交叉注意力机模块的探究实验

为了研究全带-子带交叉注意力方法,我们以FS-CANet为骨干模型,进行不同融合方式的实验。 上表显示了三种融合方式在无混响测试集上的测试结果,其中 "FSCA "指的是使用FSCA模块,而 "Concat "指的是使用FullSubNet的简单拼接方法。 从表中可以看出,只使用全带-子带交叉注意力机制和同时使用全带-子带交叉注意力机制和拼接方法的FS-CANet的性能比只使用拼接方法的FS-CANet好。 这说明所提出的全带-子带交叉注意力机制模块可以有效地提高模型在PESQ和SNR方面的性能,而且全带-子带交叉注意力机制模块可以有效地取代拼接方法的作用,通过降低输入维度来减轻后续子带模型的负担。 此外,可以发现,同时使用全带-子带交叉注意力机制和拼接方法的FS-CANet的性能不如只使用全带-子带交叉注意力机制的FS-CANet,这可能是因为融合embedding与全频带embedding中包含的信息存在冲突。

05 结语

在本文中,我们提出了一个全带-子带交叉注意力(FSCA)模块来交互融合全局信息和局部信息,并将其应用于FullSubNet。 这个新方法被称为FS-CANet。 此外,与FullSubNet不同的是,我们所提出的的FS-CANet通过时域卷积网络(TCN)块来优化全带模型,以进一步减少模型大小。 在DNS Challenge - Interspeech 2021数据集上的实验结果表明,我们所提出的的FS-CANet优于其他最先进的语音增强方法,取得了最好(SOTA)的性能,说明了全带-子带交叉注意力机制的有效性。 在未来,我们会继续探究探索子带和全带信息的双向融合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dubbo源码(十) 与Spring一起学习Dubbo里的Aware

目录 一、Spring 1.BeanNameAware 2. BeanClassLoaderAware 3. ApplicationContextAware 4. EnvironmentAware 5. ApplicationEventPublisherAware 6. aware注入时机 二、Dubbo 1. ExtensionAccessorAware 三、小结 现在很多同行做java开发几年了,被迫停留…

[附源码]java毕业设计竞价拍卖系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

灵雀云ACP 斩获“2022金边奖-最佳云原生边缘云平台”

近日,由边缘计算社区主办的全球边缘计算大会上海站成功召开,灵雀云凭借出色的全栈云原生技术实力、专业的高品质服务以及在边缘云场景的丰富落地实践,斩获“2022金边奖-最佳云原生边缘云平台”奖项。 “十四五”规划中明确指出要“协同发展云…

使用kubeadm部署kubernetes集群

文章目录环境环境初始化配置hosts配置时钟同步禁用firewalld、selinux、postfix禁用swap分区开启IP转发、修改内核信息配置IPVS安装Docker配置yum源安装docker-ce配置镜像加速器安装kubernetes组件配置yum源安装kubeadm、kubelet、kubectl工具配置containerd部署master安装pod网…

UTF-8、Unicode编码与汉字的相关内容

介绍 UTF-8是Unicode的一种实现方式,比如一个汉字用Unicode编码表示是两个字节,而用UTF8编码表示则为3个字节。 之所以写这篇文章,是因为我的webserver程序中,浏览器发送资源请求且该资源名为中文时出现了编码问题。 UTF8编码 U…

【SQL 中级语法 2】自连接的用法

SQL的连接运算根据其特征的不同,有着不同的名称,如内连接、外连接、交叉连接等。一般来说,这些连接大都是以不同的表或视图为对象进行的,但针对相同的表或相同的视图的连接也并没有被禁止。针对相同的表进行的连接被称为“自连接”…

python之排序

目录1. 对一维array中的数值进行从大到小排序2. 将DataFrame的列逆序排列3. 根据字符串中的数字进行排序3.2 啊4. 列表参考资料1. 对一维array中的数值进行从大到小排序 import numpy as np a np.array([5,6,8,2,1,7,5,3,90,78,62,5,4,2,9,4]) # b a.sort(axis0,kindquickso…

抑制剂拮抗剂等小分子化合物

小分子化合物主要通过调节其蛋白靶点的活性发挥作用。目前小分子化合物的蛋白靶点主要包括酶、离子通道和受体三大类。根据靶点种类的不同,小分子化合物发挥着不同的作用。 1. 酶的抑制剂(enzyme inhibitor) 在所有的小分子化合物中&#xff…

【虹科案例】虹科脉冲发生器在半导体行业中的应用

非易失性存储单元特点 存储器研究的趋势是开发一种称为非易失性 RAM 的新型存储器,它将 RAM 的速度与大容量存储器的数据存储相结合。几年来有许多新单元类型的提议,例如 FeRAM(铁电存储器)、ReRAM(电阻式存储器&…

C++string类的模拟实现以及经验分享

文章目录1. 为什么学习string类?1.1 C语言中的字符串1.2 两个面试题2. string类的实现构造函数:拷贝构造函数赋值运算符重载:析构函数流提取运算符重载1. 为什么学习string类? 1.1 C语言中的字符串 C语言中,字符串是…

5款十分小众,却又非常好用的良心软件

今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。 1.杀毒软件——火绒安全软件 首先说一下国产杀软之光,这是一款电脑安全软件,病毒库更新及时,界面…

【文档+视频】Verdi基础教程

目录 前言 1.Verdi 环境配置 2.VCS 产生Verdi 波形 1、tb中加入相应的系统函数 2、makefile中加入相应的选项 3.nTrace 1、如何调用Verdi? 【重点】 2、如何查看包含的设计架构? 3、如何查寻模块实例化的位置?【重点】 4、在nTrace…

Linux网络编程11——简单的web服务器

学习视频链接 02-web大练习的概述_bilibili_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1iJ411S7UA/?p132&spm_id_frompageDriver&vd_source0471cde1c644648fafd07b54e303c905 目录 一、项目展示 二、HTTP 协议基础 2.1 HTTP协议基础。 2.2 请求消息(R…

个人博客系统

目录一、项目简介二、项目开发流程2.1 准备工作2.2 实现Vue层2.2 实现Model层2.4 实现Controller层一、项目简介 基于servlet,采用前后端分离的方式,实现个人博客系统,功能包括:登录、注销、编辑、删除博客、发布博客等. 二、项…

用了10年开源工具,换了Smartbi后,3分钟搞定一份报表

大约在20年前,中国企业开始应用国外BI软件,报表工具可以说是BI 1.0时代的代表产物。在BI软件盛行之初,大部分软件都有开源的,从系统到数据库到各类工具、应用,当时大部分企业使用的BI软件包括报表工具,也都…

外汇天眼:外汇占款是什么意思? 与外汇储备之间的差额是由哪些原因造成的?

外汇占款就是指受资国中央银行回收外汇财产而相对投放的本币。 因为人民币是是非非随意换取代币,外资企业导入后需换取成人民币才可以进到商品流通应用,国家以便外资企业兑换外币要投入很多的资产提升了贷币的需要量,产生了外汇占款。 外汇占…

线程池源码解析 3.excute() 方法

线程池源码解析—excute()方法 execute() execute 方法是线程池的核心方法,所有的方法,包括包装的 FutureTask,都是调用这个方法。 大致流程 这里只是总结了一遍大致的流程,一些细节问题见下面的流程图或者参考源码。 当提交任…

【毕业设计】大数据电商销售预测分析 - python 数据分析

文章目录1 前言2 开始分析2.1 数据特征2.2 各项投入与销售额之间的关系2.3 建立销售额的预测模型3 最后1 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两年开始&#x…

Java8新特性 CompletableFuture

Java8新特性 CompletableFuture 什么是CompletableFuture? CompletableFuture类的设计灵感来自于 Google Guava 的 ListenableFuture 类,它实现了 Future 和 CompletionStage 接口并且新增了许多方法,它支持 lambda表达式,通过回…

【IDEA插件】这5款IDEA插件,堪称代码BUG检查神器!

随着业务的发展,系统会越来越庞大,原本简单稳定的功能,可能在不断迭代后复杂度上升,潜在的风险也随之暴露,导致最终服务不稳定,造成业务价值的损失。而为了减少这种情况,其中一种比较好的方式就…