[报告] Microsoft :Application of deep learning methods in speech enhancement
Application of deep learning methods in speech enhancement
语音增强中的深度学习应用
按:
本文是DNS,AEC,PLC等国际级语音竞赛的主办方——Microsoft Research Labs音频与声学研究组(Audio and Acoustics Research Group)于2021年发表的Sound capture and speech enhancement for speech-enabled devices中节选的一章,总结了该组今年来在语音增强领域的工作。该报告的作者为Ivan Tashev和Sebastian Braun。本篇所有图片均源自该报告及其引文。
1. (基于时频域监督学习的)语音增强模块

该模块主要展示了时频域语音增强的流程,包括短时傅里叶变换(STFT)、特征提取、神经网络、预测目标、增强/变换(过程)、短时傅里叶反变换(iSTFT)和损失函数几部分。其中自图中第二行开始只在训练阶段进行,本图建议与该组之前的一篇工作中的图(见下图)结合使用。

这里主要有以下几点可以讨论:
- STFT: 由于噪声模态的多样性导致语音增强任务天然与语音分离任务有区别,利用傅里叶变换基函数将噪声和语音成分变换到特定的空间中区分模式可能更利于网络的训练和鲁棒性;此外,由于混响情况下时域算法的劣势以及阵列增强中可能的与传统波束形成技术的级联;当然还有从传统语音增强技术中发展而来的习惯;还有最最重要地,目前DNS Challenge的比赛结果。尽管有一些如demucs等优秀的基于时域的语音增强算法,基于时频域的语音增强算法可能更具优势(tips:此处为个人见解)。
- 特征提取:特征提取部分除了直接的复数谱和幅度谱,微软特别提到了对数功率谱和(幂律)压缩复数谱,在说明这两个特征之前,需要说明请注意在报告中预测目标并没有对应的对数幅度谱或者压缩复数谱,而是原始STFT域的谱或掩蔽,这点与之前网络输出与输入对应的一些文献是有区别的,其想表达的是输入经过压缩变换(不论是对数压缩还是指数压缩)的特征将有助于系统性能。
这里简要说明一下对数功率谱和(幂律)压缩复数谱,其中对数幅度谱的使用见于该组的这篇和这篇,定义为\(P = log10(|X(k, n)|^2)\)P = torch.log10(torch.norm(x_stft, dim=-1) + 1e-9);
而幂律压缩复数谱可参考这篇,定义为\(X_{cprs}=\frac{X(k,n)}{|X(k,n)|}|X(k,n)|^{c}\)x_mag = torch.norm(x_stft, dim=-1) + 1e-9
x_cprs_mag = x_mag ** c
x_cprs = torch.stack((x_stft[..., 0] / x_mag * x_cprs_mag, x_stft[..., 1] / x_mag * x_cprs_mag), dim=-1)
- 损失函数:报告中推荐的是压缩谱损失,其他损失包括mask的距离、能量损失(SDR/SI-SDR)、谱距离、感知加权损失和(以上几项或以上几项和其他项的)联合损失。
损失函数分别定义和测评在文献和文献中,其中一部分见下图

推测压缩谱损失推荐的是幅度正则的压缩谱损失(Magnitude-regularized compressed spectral loss):\(\mathcal{L}=\frac{1}{\sigma_S^{c}}(\lambda\sum_{k,n}{|S^c-\widehat{S}^c|^2+(1-\lambda\sum_{k,n}{||S|^c-|\widehat{S}|^c|^2})})\),其中\(\sigma_S\)是纯净语音有声段的能量,压缩谱的操作与上文定义一致,\(c\)和\(\lambda\)微软推荐都为0.3。
2. 训练数据的生成与增广

微软推荐的数据生成方式如上图,先不考虑混响情况,纯净语音和噪声分别计算其能量,根据信噪比混合得到带噪数据,而后<带噪数据,纯净语音>用相同的滤波器进行谱增广,最后调节语音音量的动态范围。需要注意的是:
- 纯净语音要进行清洗,选择MOS高的,排除“脏”数据
- 每条预料要足够长(微软推荐10s一句,根据其测评在其模型、特征和loss下至少应长于5s,当条件改变句子最短长度也可能变化)
- 该报告推荐的信噪比按均值5 dB,方差10 dB的高斯分布随机选取
- 该报告推荐的dBFS音量增广按均值-28 dB,方差10 dB的高斯分布随机选取
- 谱增广是指RNNoise中使用的滤波器:\(H(z)=\frac{1+r_1z^{-1}+r_2z^{-2}}{1+r_3z^{-1}+r_4z^{-2}}\),其中\(r_i\sim\mathcal{U}(-\frac{3}{8},\frac{3}{8})\)。但是该报告引用文献中指出由于数据量重足,谱增广是不必要的
最后考虑混响情况(图中绿色区域):和其他文章一样,房间冲激响应(RIR)卷积纯净语音得到混响语音。而为了使语音听起来自然,目标语音仍带少量混响,具体的实现上是令语音与经加权函数加权的RIR卷积,其中加权函数的定位为:\(w_{RIR}(t)=exp(-(t-t_0)\frac{6log(10)}{0.3}), if\quad t \ge t_0,(otherwise\quad w_{RIR}(t)=1)\)
3. 有效的网络架构

微软提供了两个网络架构,分别为NSNet2(DNS Challenge的baseline)和CRUSE(DNS Challenge中微软提交的比赛方案Microsoft-2)。
以上两个网络分别是RNNoise(by Valin)-style的幅度谱域模型和GCRN(by Tan)-style的复数谱域模型,RNNoise和GCRN将在之后的博客中将进行详细介绍,这两个网络的介绍请参见博客和博客中介绍。最后是他们的结果:

[报告] Microsoft :Application of deep learning methods in speech enhancement的更多相关文章
- 视觉中的深度学习方法CVPR 2012 Tutorial Deep Learning Methods for Vision
Deep Learning Methods for Vision CVPR 2012 Tutorial 9:00am-5:30pm, Sunday June 17th, Ballroom D (Fu ...
- NLP related basic knowledge with deep learning methods
NLP related basic knowledge with deep learning methods 2017-06-22 First things first >>> ...
- 论文阅读:Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》
论文阅读:Face Recognition: From Traditional to Deep Learning Methods <人脸识别综述:从传统方法到深度学习> 一.引 ...
- 论文翻译:2022_PACDNN: A phase-aware composite deep neural network for speech enhancement
论文地址:PACDNN:一种用于语音增强的相位感知复合深度神经网络 引用格式:Hasannezhad M,Yu H,Zhu W P,et al. PACDNN: A phase-aware compo ...
- Why are very few schools involved in deep learning research? Why are they still hooked on to Bayesian methods?
Why are very few schools involved in deep learning research? Why are they still hooked on to Bayesia ...
- deep learning 的综述
从13年11月初开始接触DL,奈何boss忙or 各种问题,对DL理解没有CSDN大神 比如 zouxy09等 深刻,主要是自己觉得没啥进展,感觉荒废时日(丢脸啊,这么久....)开始开文,即为记录自 ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...
- What are some good books/papers for learning deep learning?
What's the most effective way to get started with deep learning? 29 Answers Yoshua Bengio, ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料汇总 (上)
转载:http://dataunion.org/8463.html?utm_source=tuicool&utm_medium=referral <Brief History of Ma ...
随机推荐
- CEPH-2:rbd功能详解及普通用户应用ceph集群
ceph集群rbd使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍rbd存储功能如何灵活的使用,集群背景: $ ceph -s cluster: id: 53717 ...
- Spring Boot 增加删除修改 批量
1.批量删除 a.自定义Repositoy中写 前台处理https://blog.csdn.net/yhflyl/article/details/81557670首先前台先要获取所有的要删除数据的I ...
- abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系! native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类 ...
- python 常用模块函数使用
1.collections模块在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict ...
- jQuery--选择器案例实战
1.案例需求 jquery最基础的选择器部分已经基本结束,来一个简单案例总结回顾下学的东西. 案例需求: 用一个按钮控制元素的显示与隐藏,页面如下,从第五个开始,不要最后一个,控制他们的显示和隐藏. ...
- 使用 Redis 有哪些好处?
1.速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查 找和操作的时间复杂度都是 O1) 2.支持丰富数据类型,支持 string,list,set,Zset,hash ...
- idea使用maven工程创建web项目并支持jsp
主要要再pom文件里面添加依赖: <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> & ...
- 记MyBaits-Plus 实现菜单的无限层关系
Mybatis-Plus父子菜单 首先来看一下实现的效果 pojo层 @Data @TableName("platform_role") public class Role imp ...
- Leetcode刷题之链表中箭头转移和内容转移
链表中箭头转移和内容转移 链表中特别注意xxx.next=xxx 和xxx=xxx的区别 xxx.next=xxx表示将指针(箭头)转移 xxx=xxx表示将内容转移 Leetcode206翻转链表 ...
- 【uniapp 开发】Date.parse Firefox返回Nan的解决办法