龙空技术网

语音降噪是如何扼住噪声的咽喉的

联想元宇宙 67

前言:

目前小伙伴们对“语音降噪模块有什么用”大概比较注重,姐妹们都需要剖析一些“语音降噪模块有什么用”的相关资讯。那么小编在网上汇集了一些对于“语音降噪模块有什么用””的相关内容,希望兄弟们能喜欢,姐妹们快快来了解一下吧!

噪声污染的防治与人民群众生活息息相关,是最普惠民生福祉的组成部分,是生态文明建设的重要内容。习近平总书记“还自然以宁静、和谐、美丽”的重要指示精神中,“宁静”二字占据了第一位。现如今,环境噪音已成为西欧的第二大污染。在中国,噪音污染也是名列三甲,2023年1月,国务院下发了《“十四五”噪声污染防治行动计划》的通知。

其实,现代社会对环境噪声抑制的需求由来已久,最早对噪音控制的法案可以追溯到1957年。而对降噪的研究也始于上个世纪60年代,WHO也在2018年出台了环境噪音指导方针。

什么是噪声?

噪声在我们日常生活中十分常见,上图是一张分贝图,图中家里冰箱压缩机的低吼、办公室空调的电机声、隔壁吸尘器的轰鸣、市场商贩的叫卖等等,可以说所有影响了我们正常的工作、学习、休息的声音都是噪声。

实际上除了“有用”的声音外,其他所有“无用”的声音都可以算是噪声,只不过不同的场景对于“有用”和“无用”的定义不同。

此“噪”有别于彼“噪”

对于语音降噪来说,一般会对噪声分成以下两类:

1

稳态噪声

指的是那些在时间上连续、持续,且幅度和频谱等信号特征稳定或者变化缓慢的噪声。比如空调声、风扇声等,听起来是持续、平稳的“嗡嗡嗡”。

2

非稳态噪声

它的信号特征不稳定,随时间变化的幅度较大,或者有间断出现、瞬发的情况。比如菜市场里嘈杂的人声、键盘的敲击声、关门声等等,它们或是持续存在但变化不停,或是瞬发的、短暂存在后就消失。

稳态噪声和非稳态噪声的时域频域图

相信大家都可以理解,稳态噪声相较于非稳态噪声,在抑制难度上更低,抑制方案也更成熟。非稳态噪声则是的降噪领域的大难题,对非稳态噪声的抑制效果是检验语音降噪能力重要指标。

语音降噪:让噪音退退退

“喂,大家能听得清我说话吗,我这边有点吵“。在视频会议、游戏语音等众多场景中,相信很多人都有过类似的经历,尤其在疫情发生后,在线办公变的越来越普遍,但复杂的办公场景却常常伴随吵闹的环境噪声影响通话的效果。

面对这些实时互动场景里的环境噪声,到底该怎么处理?

这就要提到:语音降噪!它是借由各种算法提高语音质量,主要针对于有人声的音频进行处理,目的是去除背景噪声,增强音频中的人声可懂性。它还有很多的同义词,比如噪声抑制,通话降噪,语音增强,其实都是一个意思。

语音降噪流程

语音降噪:让噪音退退退

1

传统降噪方法

传统降噪的基本原理很简单,就是估计出噪声信号,并将之从麦克风采集的混合信号中除去,得到降噪语音信号。

如图中所示,稳态或非稳态的“加性噪声” B,和“有用信号”语音 A 相加,形成了混合的带噪语音C,经过降噪模块的处理后,最终输出降噪语音D。

虽然核心工作看似可以“一言以蔽之”,但其中玄机却不少。传统降噪算法的核心工作可以拆解为三个模块:噪声检测模块 + 噪声估计模块+噪声去除。

检测模块用于检测出信号何时包含语音,何时只包含噪声。估计模块利用估计模块的信息来推断噪声谱特征。当我们知道噪声的特征后,就可以从原语音中减去噪声部分。

看起来非常简单,实际上困难的部分在于如何使算法在任何时候、任何种类的噪声上都表现良好。这需要你仔细调整算法中的每一个“旋钮”,需要大量特殊案例和大量测试。

谱减法

语音降噪中最常用的方法是谱减法。谱减法基于一个简单的假设:假设语音中的噪声只有加性噪声,只要将带噪语音谱减去噪声谱,就可以得到纯净语音,这么做的前提是噪声信号是平稳的或者缓慢变化的。

下面的公式就是谱减法数学上的一个实现,d为降噪后的信号,c是带噪信号,b是噪声信号。

谱减法在时域与频域上的公式

那噪音b是怎么估计出来的呢?我们基于一个共识,一般会认为带噪语音的前几帧不包含语音活动,是纯净的噪声信号,因此,可以取这前几帧的平均信号谱作为噪声谱的估计。这也很符合我们的日常通话情况,一般大家通话接通后都会先聆听1s左右,听到对面传来的噪声后才会进行会话。

2

深度学习方法

近年来,基于深度学习的语音降噪算法异军突起,凭借其优秀的降噪效果力压各种传统算法。下面我们就来展开讲一讲。

RNNoise

首先来介绍RNNoise,它的主要思想是将传统信号处理与深度学习相结合来创造一个模型,从而又小速度又快的实时噪声抑制算法。

RNNoise使用了循环神经网络RNN。RNN使得对时间序列建模成为可能,而不是仅仅孤立的考虑输入和输出帧。这一点对于语音降噪尤其重要,因为我们需要时间来获得更好的噪声估计。

如图,前馈神经元的计算非常简单,隐藏层h由输入层I与权重矩阵W得出,输出层O由隐藏层h和权重矩阵V得出。而SRU(简易循环神经元)与前馈神经元的区别在于state的权重矩阵。那state是什么呢?既然叫循环神经网络,那隐藏层的值h不仅仅取决于当前这次的输入I,还取决于上一次隐藏层的值,而state就是上一次对本次h的权重矩阵。

这样一来我们就完成了对时间序列的建模。但是现在的神经元只支持短期的记忆,t-1到t时刻,但是对噪声谱的估计当然是时间拉得越长越精准,那么怎样让RNN获得长期记忆呢?我们再往深处走一步,认识一下GRU(门控制循环神经元)。相比于最普通的循环单元,GRU有两个额外的门:重置门用于控制之前的单元状态(记忆)是否用于计算新的单元状态;更新门控制单元状态基于新的输入的改变多少。更新门(当它处于关闭状态)使得GRU记忆长时间信息成为可能。

RNNoise系统框图

上图为RNNoise的整体计算流程。每一帧数据会经过傅里叶变换后,通过特征提取,在输入到神经网络中求出频带增益后作用于X信号。

Pitch analysis即为基音追踪,追踪得到的基音周期一方面用于Feature extraction作为一个特征,另一方面进行后面的pitch filtering操作。Feature extraction进行特征提取后,将其作为输入送入RNN,输出为22维数据。最后进行插值处理后作用于X,再经过包括IFFT等一系列变换得到增强后的音频。

这就是RNNoise,属于第一代的模型降噪算法,算法在顶层设计阶段就充满了传统算法的影子。但是胜在算力消耗低,可以轻松的部署在各种移动设备上。

DTLN

再介绍一种与RNNoise不同,完全由深度学习处理的神经网络降噪模型,Dual-Signal Transformation LSTM Network。DTLN使用了和RNNoise中的GRU相似的LSTM单元。

DTLN 模型结构

DTLS结合了短时傅里叶变换(STFT)和已有的分析和综合基础,采用了参数小于100万的堆叠网络方法,在语音降噪中算得上轻量级选手。

第一个分离核心使用STFT和合成,将FC层输出经过sigmoid得到掩膜,掩膜与输入的幅度谱相乘等到增强幅度谱,并利用输入(带噪语音)的相位将其变换回时域,但不重建波形。来自第一网络的帧由1D-Conv层处理以创建特征表示。特征表示在被馈送到第二分离核心之前由归一化层处理。第二核的预测掩码与特征表示相乘,结果输入1D-Conv层,用于将估计的表示转换回时域。在最后一步中,使用重叠相加过程重建信号。

这是一种纯深度学习的方法,参数量不大,但是效果很不错,比RNNoise在类工厂环境中的效果更佳。

语音降噪可以有效抑制在音视频通话过程中的背景噪声,以此保证语音无损伤,最终有效提升在多种复杂场景下的实时互动体验,让通话体验更佳,可以说和几乎所有的项目、方案都息息相关。

今天,我们只是浅谈了几种较为流行的模型,相信随着机器学习和信号处理的发展,总有一天我们可以完全消除噪声所带来的干扰,高效的沟通,从“耳聪”开始。

欢迎提问

亲,看了上述的内容是否你是否对噪声的定义以及语音降噪技术有了大致的认识呢?

还有什么关于本文的问题,欢迎在评论区留下您的问题~

* 部分图片来自网络,侵删

标签: #语音降噪模块有什么用