我去,这是什么黑科技!用信号处理方法抑制瞬态噪声

news2024/11/15 11:07:06

对于语音增强来说,噪声一般可以分为稳态噪声(如白噪声)和瞬态噪声(有的地方也叫非稳态噪声,如键盘声)。如果对语音降噪有一定了解的读者会知道,一般的信号处理方法对稳态噪声比较有效,可以参考WebRTC ANR 流程解析,然而对于瞬态噪声,由于噪声变换较快,噪声估计算法没办法准确跟踪到噪声的变化,因此一般采用基于深度学习的方法对瞬态噪声进行抑制,可以参考DNN单通道语音增强。但是,有没有可能使用信号处理来抑制瞬态噪声呢?答案还真有,废话不多说,先看下效果给你们一点来自信号处理的小小震撼。

瞬态噪声的抑制流程图如下所示,与传统的流程相比,除了噪声谱估计之外还多了一个瞬态谱估计模块。

图片

I. 瞬态噪声估计

我们首先假定瞬态噪声与语音和其他噪声相比变化更为快速,然后调整噪声估计算法使得非瞬态的部分(语音和稳态噪声)呈现一种“伪稳态”的特性。即将音频分为瞬态分量和非瞬态分量。然后,基于非瞬态分量的PSD通过OMLSA计算瞬态分量幅度谱的增益,以获得瞬态分量并抑制包含语音和背景噪声的非瞬态分量。

由于是瞬态噪声估计,与一般的噪声估计算法相比,我们使用更短的帧长,因此选取帧长为64个采样点,即在16kHz的采样率下,帧长为4ms。我们首先对非瞬态分量进行估计,采用基于MCRA的算法。噪声PSD估计通过对频谱幅度的时间递归平均得到,即

图片

其中alpha_s决定了噪声跟踪的速率,较小的alpha_s给当前帧较大的权重,因此噪声更新会更快,一般选取0.7~0.99。瞬态噪声存在概率由平滑周期的最小值控制,该最小值是从长度为L的有限因果窗口获得的

图片

然后,瞬态噪声存在概率通过下式判决

图片

其中delta是个经验值,当结果大于delta时,我们认为当前帧状态是瞬态噪声,记为

图片

那么瞬态噪声的存在概率可以表示为

图片

此时,非瞬态分量的功率谱为

图片

其中

图片

上述公式可以跟踪非稳态的分量,然而以突然爆发为特征的语音音素起始点不能通过频谱递归平滑来跟踪,这会导致语音音素的起始被错误认为是瞬态噪声。因此我们将“未来”信息加入计算,这样可以区分瞬态和语音的开始。 对于瞬态噪声来说,在短暂的瞬变之后,信号的功率预计会快速衰减,而在语音音素开始后,功率水平预计在音素的持续时间内保持稳定。我们通过如下的方式进行判别

图片

值得注意的是,这是一个非因果的窗,窗长要小于噪声估计的窗长,一般40ms足以覆盖大多数瞬态噪声。此时,非瞬态分量可以表示为

图片

最后,我们使用基于OMLSA的算法获得瞬态分量,瞬态PSD的估计值如下

图片

其中T是OMLSA算法计算出来的幅度估计值。

II. 语音增强

在有了以上的信息之后,我们就可以计算对应的增益了。首先总的噪声PSD,为两部分之和即通过MCRA获得的稳态噪声和通过公式(10)获得的瞬态噪声,如下所示

图片

谱增益可以通过如下方式计算

图片

其中Gmin是当语音不存在时的固定常数增益,而GH1为

图片

其中

图片

III. 总结

总的来说瞬态噪声的估计,用了一个很trick的方法,将语音和稳态噪声视为“噪声”,然后通过OMLSA去计算增益获得剩余的频率分量,间接的估计出了瞬态噪声的PSD。当有了噪声PSD之后,求对应的增益就轻车熟路了。我们最后看下估计的瞬态噪声,上图是原始的瞬态噪声,下图是估计的瞬态噪声,可以看出估计的还是比较准确的,当然从共振峰也可以看出一些音素被视为了瞬态噪声。

图片

参考文献:

[1]. https://zhuanlan.zhihu.com/p/591219373?utm_id=0

[2]. https://israelcohen.com/wp-content/uploads/2018/05/IWAENC2012_Hirszhorn.pdf

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

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

相关文章

FreeIPA Server/Client不同版本组合,对podman rootless container的支持

FreeIPA Server/Client不同版本组合,对podman rootless container的支持 根据实验, CentOS 7.9 yum仓库自带的FreeIPA Server 4.6.8, ipa client版本支持CentOS 7.9 yum仓库自带的FreeIPA Client 4.6.8不支持subids,podman调用…

SqlServer2008如何解析Json—附详细代码

1、在数据库中创建存储过程parseJSON,具体文件请在如下链接下载: 链接:https://pan.baidu.com/s/1a-aNmSKk_yvv9wQTP3DCsg?pwdyxwx 提取码:yxwx 2、具体使用方法如下: DECLARE UserParameter NVARCHAR(MAX){"…

单元测试之 - Spring框架提供的单元/集成测试注解

Spring框架提供了很多注解来辅助完成单元测试和集成测试(备注:这里的集成测试指容器内部的集成测试,非系统间的集成测试),先看看Spring框架提供了哪些注解以及对应的作用。RunWith(SpringRunner.class) / ExtendWith(SpringExtension.class)&…

无代码开发(BIP旗舰版-YonBuilder)

目录 我的应用 新建领域 菜单管理 应用构建 新建应用 对象建模 新增业务对象 新增业务实体 页面建模 新增页面 编辑页面 发布管理 我的应用 角色管理 yonbuilder开发平台,提供标准服务和专业开发服务; 本篇文章只演示标准服务的可视化应用…

软件外包开发的GO语言特点

Go语言(也称为Golang)是由Google开发的一种编程语言。它具有许多特点,使其成为许多项目范围的优秀选择。Go语言适用于需要高性能、并发和简洁易读的项目,特别是面向网络和分布式应用的项目。今天和大家分享项目的特点及适用的项目…

学习记录——TransNormerLLM、SRFormer、PLG-ViT、EfficientViT

关于Transformer Transformer 存在局限。首要的一点,它们有着对于序列长度的二次时间复杂度,这会限制它们的可扩展性并拖累训练和推理阶段的计算资源和时间效率。基于 Transformer的模型在提高窗口大小以优化性能的同时,也带来了相应的计算负…

刷完这个笔记,15K真的不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…

LVDS端口ESD静电放电保护电路图(经典)

Low Voltage Differential Signaling(LVDS)是一种低压差分信号技术接口,是美国NS公司为克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。LVDS端口电路包括两部分:驱动板侧的…

day50-springboot+ajax分页

分页依赖&#xff1a; <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency> 配置&#xff1a; …

spring — Spring Security 5.7与6.0差异性对比

1. spring security Spring Security 是一个提供身份验证、授权和针对常见攻击保护的框架。 凭借对保护命令式和反应式应用程序的一流支持&#xff0c;它成为基于Spring的标准安全框架。 Spring Security 在最近几个版本中配置的写法都有一些变化&#xff0c;很多常见的方法都…

Unity通过代码切换材质

效果展示 代码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class MaterialSwitcher : MonoBehaviour {public Material newMaterial; // 新材质private Material oldMaterial; // 旧材质private Renderer renderer; // 渲染器组件…

C# Onnx Paddle模型 OCR识别服务

效果 项目 可运行程序exe下载 Demo&#xff08;完整源码&#xff09;下载

中小学分班查询系统如何制作?这个方法值得借鉴

暑假即将结束&#xff0c;新学年即将开始&#xff0c;学校面临着一个重要的任务&#xff0c;那就是学生的分班问题。这个问题涉及到新生入学的分班&#xff0c;以及低年级学生升入高年级时的分班。对于负责分班的老师们来说&#xff0c;这无疑增加了不少工作量和挑战。 在开学…

弹性布局,网格布局,JavaScript

弹性盒子布局&#xff08;Flexbox Layout&#xff09;&#xff1a;通过display: flex;设置容器为弹性盒子&#xff0c;可以实现更复杂的自适应和响应式布局。 网格布局&#xff08;Grid Layout&#xff09;&#xff1a;通过display: grid;设置容器为网格布局&#xff0c;可以将…

编译运行LeGO-LOAM算法(跑.bag包)

ubuntu18.04 ros melodic 官方链接&#xff1a;https://github.com/RobustFieldAutonomyLab/LeGO-LOAM 文章目录 1、下载并编译 gtsam2、下载并编译 LeGO-LOAM3、测试运行 1、下载并编译 gtsam 我下载的是gtsam-4.0.2&#xff0c;官网用的gtsam-4.0.0&#xff0c;因为我用的实…

关于个人微信API接口的开发

个人微信开发API接口可拓展功能说明 1、个人微信多账号管理、聚合聊天、多个微信号同时登陆、多个微信号集中在一个窗口进行聊天&#xff0c;实现一人多号同时沟通快速提升沟通效率&#xff0c;提升微信营销效率。 2、客服灵活分配&#xff1a;客服主管可自由分配微信号给指定…

如何使用njsscan识别Node.JS应用中的不安全代码

关于njsscan njsscan是一款功能强大的静态应用程序测试&#xff08;SAST&#xff09;工具&#xff0c;可以帮助广大研究人员找出Node.JS应用程序中不安全的代码模式。该工具使用了 libsast的简单模式匹配器和语法感知语义代码模式搜索工具 semgrep实现其功能。 工具安装 当前…

2023年华数杯数学建模C题思路代码分析 - 母亲身心健康对婴儿成长的影响

# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、 压力等&#xff0c;可能会对婴儿的认知、情…

华为测试开发秋招三面,两轮技术综合面试+HR,险过!

流程上是三轮面试&#xff0c;两轮的技术综合面试HR面试&#xff0c;先面前两轮&#xff0c;前两轮过了&#xff0c;再联系面试者HR面试&#xff0c;面试的岗位是测试岗&#xff0c;两轮面试在1个半小时左右。 面试时&#xff0c;对自己要有自信&#xff0c;对自己的简历也要吃…

flutter:Future、Stream、RxDart

Future 在Flutter中&#xff0c;Future是Dart语言中的一个类&#xff0c;用于表示异步操作的结果。与Future相关的的重要关键字包括async和await。 async&#xff1a;这个关键字用于在方法或函数声明前添加&#xff0c;以指示该方法为异步方法。在异步方法中&#xff0c;执行…