语音信号处理——噪声抑制

news2024/9/22 4:08:15

简介

  • 噪声抑制技术用于消除背景噪声,改善语音信号的信噪比和可懂度,让人和机器听的更清楚
  • 常见的噪声种类:人声噪声、街道噪声、汽车噪声
  • 噪声抑制方法的分类:
    • 按照输入通道数分:单通道降噪、多通道降噪
    • 按照噪声统计特性分:平稳噪声抑制、非平稳噪声抑制
    • 按照降噪方法分:被动降噪、主动降噪
  • 下面介绍的方法用于单通道的、被动的、平稳噪声抑制

Minima Controlled Recursive Averaging(MCRA)

  • 传统信号处理方法中降噪方法可分为两个大的步骤:

    • 一是对噪声的估计(Noise Estimation/Tracking)
    • 二是对增益因子的估计
  • 噪声估计的常用方法:

    • 递归平均(Recursive Averaging):只要某个频带中语音存在的概率很低,则可以利用这个频带估计/更新噪声谱
    • 最小值追踪(Minima Controlled/Tracking):由于语音信号的稀疏性,即使语音存在,在一个短时窗内(0.5s-1.5s),每个频带的最小值也会大概率趋近于噪声功率,因此可以通过在短时窗内追踪最小值的方法获得每个频带的噪声估计
    • 直方图统计(Histogram-based Method):带噪语音信号的每个频带在一个短时窗内做直方图统计,出现频次最高的值对应这个频带的噪声水平
  • MCRA的步骤:

  • 考虑带有加性噪声的数据模型: y ( n ) = x ( n ) + d ( n ) y(n)=x(n)+d(n) y(n)=x(n)+d(n)

  • 输入信号经过STFT: Y ( k , l ) = ∑ n = 0 N − 1 y ( n + l M ) h ( n ) e − j 2 π N n k Y(k,l)=\sum_{n=0}^{N-1}y(n+lM)h(n)e^{-j\frac{2\pi}{N}nk} Y(k,l)=n=0N1y(n+lM)h(n)ejN2πnk,得到时频谱图

  • 其中,

    • k是frequency bin的索引
    • l是时间帧的索引
    • h(n)是窗函数
    • M是frame shift
  • 给定两个假设 H 0 ( k , l ) H_0(k,l) H0(k,l) H 1 ( k , l ) H_1(k,l) H1(k,l),分别表示“语音不存在”和“语音存在”:
    H 0 ( k , l ) : Y ( k , l ) = D ( k , l ) H 1 ( k , l ) : Y ( k , l ) = X ( k , l ) + D ( k , l ) \begin{aligned} H_0(k,l):&Y(k,l)=D(k,l) \\ H_1(k,l):&Y(k,l)=X(k,l)+D(k,l) \end{aligned} H0(k,l)H1(k,l)Y(k,l)=D(k,l)Y(k,l)=X(k,l)+D(k,l)

  • 对噪声的估计定义为: λ d ( k , l ) = E [ ∣ D ( k , l ) ∣ 2 ] \lambda_d(k,l)=E[|D(k,l)|^2] λd(k,l)=E[D(k,l)2],也就是噪声的能量

  • 采用时间递归平滑的方式,当“语音不存在”时,迭代更新 λ d ( k , l ) \lambda_d(k,l) λd(k,l)
    H 0 ′ ( k , l ) : λ ^ d ( k , l + 1 ) = α d λ ^ d ( k , l ) + ( 1 − α d ) ∣ Y ( k , l ) ∣ 2 H 1 ′ ( k , l ) : λ ^ d ( k , l + 1 ) = λ ^ d ( k , l ) 其中, α d ( 0 < α d < 1 )是平滑因子 \begin{aligned} H'_0(k,l):&\hat{\lambda}_d(k,l+1)=\alpha_d \hat{\lambda}_d(k,l)+(1-\alpha_d)|Y(k,l)|^2\\ H'_1(k,l):&\hat{\lambda}_d(k,l+1)=\hat{\lambda}_d(k,l) \\ 其中,&\alpha_d(0 < \alpha_d < 1)是平滑因子 \end{aligned} H0(k,l)H1(k,l)其中,λ^d(k,l+1)=αdλ^d(k,l)+(1αd)Y(k,l)2λ^d(k,l+1)=λ^d(k,l)αd0<αd<1)是平滑因子

  • 语音存在概率(Speech Presence Probability): p ′ ( k , l ) = P ( H 1 ′ ( k , l ) ∣ Y ( k , l ) ) p'(k,l)=P(H'_1(k,l)|Y(k,l)) p(k,l)=P(H1(k,l)Y(k,l))

  • 对噪声的估计可表示为:
    λ ^ d ( k , l + 1 ) = λ ^ d ( k , l ) p ′ ( k , l ) + [ α d λ ^ d ( k , l ) + ( 1 − α d ) ∣ Y ( k , l ) ∣ 2 ] ( 1 − p ′ ( k , l ) ) = α ^ d ( k , l ) λ ^ d ( k , l ) + [ 1 − α ^ d ( k , l ) ] ∣ Y ( k , l ) ∣ 2 其中, α ^ d ( k , l ) = α d + ( 1 − α d ) p ′ ( k , l ) \begin{aligned} \hat{\lambda}_d(k,l+1)&=\hat{\lambda}_d(k,l)p'(k,l)+[\alpha_d \hat{\lambda}_d(k,l)+(1-\alpha_d)|Y(k,l)|^2](1-p'(k,l)) \\ &=\hat{\alpha}_d(k,l) \hat{\lambda}_d(k,l)+[1-\hat{\alpha}_d(k,l)]|Y(k,l)|^2 \\ 其中,\hat{\alpha}_d(k,l)&=\alpha_d+(1-\alpha_d) p'(k,l) \end{aligned} λ^d(k,l+1)其中,α^d(k,l)=λ^d(k,l)p(k,l)+[αdλ^d(k,l)+(1αd)Y(k,l)2](1p(k,l))=α^d(k,l)λ^d(k,l)+[1α^d(k,l)]Y(k,l)2=αd+(1αd)p(k,l)

  • 现在的问题是:如何确定 p ′ ( k , l ) p'(k,l) p(k,l)

  • 计算 p ′ ( k , l ) p'(k,l) p(k,l)的思路:在一个短时窗内,计算局部能量 S ( k , l ) S(k,l) S(k,l)与最小能量 S m i n ( k , l ) S_{min}(k,l) Smin(k,l)的比值

  • 局部能量的计算:

    • 频域平滑: S f ( k , l ) = ∑ i = − w w b ( i ) ∣ Y ( k − i , l ) ∣ 2 S_f(k,l)=\sum_{i=-w}^{w}b(i)|Y(k-i,l)|^2 Sf(k,l)=i=wwb(i)Y(ki,l)2
    • 时域平滑: S ( k , l ) = α s S ( k , l − 1 ) + ( 1 − α s ) S f ( k , l ) S(k,l)=\alpha_sS(k,l-1)+(1-\alpha_s)S_f(k,l) S(k,l)=αsS(k,l1)+(1αs)Sf(k,l)
    • b ( i ) b(i) b(i)是频域窗函数, α s ( 0 < α s < 1 ) \alpha_s(0<\alpha_s<1) αs0<αs<1是局部能量的时域平滑因子
  • 最小能量的计算:

    • 常规做法:采用局部最小值搜索的方法,设定一个时间窗L(L通常为1s),搜索局部最小值
    • 简化做法:
      在这里插入图片描述
  • 计算比值: S r ( k , l ) = S ( k , l ) S m i n ( k , l ) S_r(k,l)=\frac{S(k,l)}{S_{min}(k,l)} Sr(k,l)=Smin(k,l)S(k,l)

  • 语音是否存在的判别式为:
    I ( k , l ) = { 1 , S r ( k , l ) > δ 0 , o t h e r w i s e I(k,l)= \left\{\begin{matrix} 1,S_r(k,l)>\delta \\ 0,otherwise \end{matrix}\right. I(k,l)={1Sr(k,l)>δ0otherwise

  • 语音存在概率的迭代估计:

    • p ^ ′ ( k , l ) = α p p ^ ′ ( k , l − 1 ) + ( 1 − α p ) I ( k , l ) \hat{p}'(k,l)=\alpha_p\hat{p}'(k,l-1)+(1-\alpha_p)I(k,l) p^(k,l)=αpp^(k,l1)+(1αp)I(k,l)
    • α p ( 0 < α p < 1 ) \alpha_p(0<\alpha_p<1) αp0<αp<1是语音存在概率的平滑因子
  • MCRA噪声估计流程:
    在这里插入图片描述

  • MCRA参考参数
    在这里插入图片描述

  • 估计出噪声后,将带噪语音与增益因子相乘,即可进行噪声抑制
    X ^ ( k , l ) = G ( k , l ) Y ( k , l ) 或 ∣ X ^ ( k ) ∣ 2 = G 2 ( k ) ∣ Y ( k ) ∣ 2 \begin{aligned} \hat{X}(k,l)&=G(k,l)Y(k,l) \\ 或 |\hat{X}(k)|^2&=G^2(k)|Y(k)|^2 \end{aligned} X^(k,l)X^(k)2=G(k,l)Y(k,l)=G2(k)Y(k)2

  • 确定增益因子的方法:

    • 谱减法
    • 维纳滤波
    • MMSE
  • 谱减法:假设噪声平稳或缓慢变化,从带噪语音谱中,将噪声谱减去

    • 增益因子的表达式:
      G ( k ) = ∣ X ^ ( k ) ∣ 2 ∣ Y ( k ) ∣ 2 = ∣ Y ( k ) ∣ 2 − ∣ D ^ ( k ) ∣ 2 ∣ Y ( k ) ∣ 2 = ∣ Y ( k ) ∣ 2 − λ d ( k ) ∣ Y ( k ) ∣ 2 = 1 − λ d ( k ) ∣ Y ( k ) ∣ 2 = 1 − 1 γ ( k ) \begin{aligned} G(k)&=\sqrt{\frac{|\hat{X}(k)|^2}{|Y(k)|^2}} \\ &=\sqrt{\frac{|Y(k)|^2-|\hat{D}(k)|^2}{|Y(k)|^2}}=\sqrt{\frac{|Y(k)|^2-\lambda_d(k)}{|Y(k)|^2}} \\ &=\sqrt{1-\frac{\lambda_d(k)}{|Y(k)|^2}}=\sqrt{1-\frac{1}{\gamma(k)}} \end{aligned} G(k)=Y(k)2X^(k)2 =Y(k)2Y(k)2D^(k)2 =Y(k)2Y(k)2λd(k) =1Y(k)2λd(k) =1γ(k)1
    • 其中, γ ( k ) = ∣ Y ( k ) ∣ 2 λ d ( k ) \gamma(k)=\frac{|Y(k)|^2}{\lambda_d(k)} γ(k)=λd(k)Y(k)2,被称为后验信噪比
  • 频域维纳滤波:估计出的纯净语音幅度谱与真实幅度谱的均方误差最小

    • 频域估计误差: E ( k ) = X ( k ) − X ^ ( k ) = X ( k ) − G ( k ) Y ( k ) E(k)=X(k)-\hat{X}(k)=X(k)-G(k)Y(k) E(k)=X(k)X^(k)=X(k)G(k)Y(k)
    • 目标函数: J = E [ ∣ E ( k ) ∣ 2 ] J=E[|E(k)|^2] J=E[E(k)2]
    • 最小化目标函数,可以得到增益因子的表达式:
      G ( k ) = λ x ( k ) λ x ( k ) + λ d ( k ) = ξ ( k ) ξ ( k ) + 1 G(k)=\frac{\lambda_x(k)}{\lambda_x(k)+\lambda_d(k)}=\frac{\xi(k)}{\xi(k)+1} G(k)=λx(k)+λd(k)λx(k)=ξ(k)+1ξ(k)
    • 其中, λ x ( k ) = E [ ∣ X ( k ) ∣ 2 ] \lambda_x(k)=E[|X(k)|^2] λx(k)=E[X(k)2] ξ ( k ) = λ x ( k ) λ d ( k ) \xi(k)=\frac{\lambda_x(k)}{\lambda_d(k)} ξ(k)=λd(k)λx(k)被称为先验信噪比
    • 后验信噪比: γ ( k ) = ∣ Y ( k ) ∣ 2 λ d ( k ) \gamma(k)=\frac{|Y(k)|^2}{\lambda_d(k)} γ(k)=λd(k)Y(k)2
    • 先验信噪比: ξ ( k ) = λ x ( k ) λ d ( k ) \xi(k)=\frac{\lambda_x(k)}{\lambda_d(k)} ξ(k)=λd(k)λx(k)
    • 根据后验信噪比估计先验信噪比——判决引导法(Decision Directed,DD)
      ξ ( k , l ) = α D D ∣ X ^ ( k , l − 1 ) ∣ 2 λ d ( k , l − 1 ) + ( 1 − α D D ) m a x { γ ( k , l ) − 1 , 0 } \xi(k,l)=\alpha_{DD}\frac{|\hat{X}(k,l-1)|^2}{\lambda_d(k,l-1)}+(1-\alpha_{DD})max\{ \gamma(k,l)-1,0 \} ξ(k,l)=αDDλd(k,l1)X^(k,l1)2+(1αDD)max{γ(k,l)1,0}
    • 其中, α D D \alpha_{DD} αDD经验值为0.95~0.98, λ d ( k , l − 1 ) \lambda_d(k,l-1) λd(k,l1)可用 λ d ( k , l ) \lambda_d(k,l) λd(k,l)代替
  • MMSE的增益因子:
    在这里插入图片描述

  • MMSE的推导可参考:Ephraim, Y., and D. Malah. “Speech Enhancement Using a Minimum-Mean Square Error Short-Time Spectral Amplitude Estimator.”

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

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

相关文章

Overview of Blockchain区块链概述

目录 1.def 2.smart contract 3.Consensus mechanism 4.blockchain fork 比特币诞生的几年后&#xff0c;人们开始意识到区块链技术本身的潜力&#xff0c;慢慢走出了自己的发展路线。 通常区块链被定义为一种去中心化的分布式账本技术&#xff0c;最初用来记录信息&#x…

洛谷——SP1-TEST - Life, the Universe, and Everything +注册SPOJ的方法

文章目录 TEST - Life, the Universe, and Everything题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示Information注意注册SPOJ的方法我应该如何注册 SPOJ&#xff1f;注册流程原因 AC代码 TEST - Life, the Universe, and Everything 题面翻译 从输入读…

从零搭建微服务-注册中心(二)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff1a;https://gitee.com/csps/mingyue 文档地址&#xff1a;https://gitee.com/csps/mingyue/wikis 核心依赖 需要注册配置中心的服务引入下面 …

CountDownLatch详解以及用法示例

一、什么是CountDownLatch CountDownLatch中count down是倒数的意思&#xff0c;latch则是门闩的含义。整体含义可以理解为倒数的门栓&#xff0c;似乎有一点“三二一&#xff0c;芝麻开门”的感觉。 CountDownLatch的作用也是如此&#xff0c;在构造CountDownLatch(int coun…

订单管理轻松上手:低代码平台助力企业数字化转型

随着电子商务的发展和普及&#xff0c;企业的订单管理工作变得越来越复杂&#xff0c;传统的手工处理方式已经无法满足企业的需求&#xff0c;需要一种更高效、更精确、更可靠的订单管理方式。而低代码技术正是满足这一需求的一种有效解决方案。 一、订单管理的重要性 企业的…

高频面试八股文原理篇(三)Array,Vector,ArrayList和LinkedList区别

目录 数组(Array)和列表(ArrayList)的区别 Arrays工具类 Vector,ArrayList, LinkedList的区别 ArrayList扩容机制&#xff08;原理) arrayList为什么线程不安全&#xff1f; 数组(Array)和列表(ArrayList)的区别 Array可以包含基本类型和对象类型&#xff0c;ArrayList只能…

电脑重装系统后,打印机驱动没了怎么办

驱动人生获悉&#xff0c;据微软最新消息&#xff0c;23年6月将对Windows 10进行强制升级&#xff0c;自动升级到22H2版本。不少用户听闻后&#xff0c;开始纷纷将系统重装到了Windows 11等&#xff0c;不过升级也以为着很多系统的东西需要推倒重来&#xff0c;其中就包括打印机…

Jupyter Notebook如何导入导出文件

目录 0.系统&#xff1a;windows 1.打开 Jupyter Notebook 2.Jupyter Notebook导入文件 3.Jupyter Notebook导出文件 0.系统&#xff1a;windows 1.打开 Jupyter Notebook 1&#xff09;下载【Anaconda】后&#xff0c;直接点击【Jupyter Notebook】即可在网页打开 Jupyte…

【C++中map和unordered_map存储自定义类型需要做什么】

目录 一、map存储自定义类型 二、unordered_map存储自定义类型 一、map存储自定义类型 需要传入的参数是key-value键值对&#xff0c;和仿函数类型 对于内置类型&#xff0c;int、double、char重载了operator<所以传入less仿函数不会出错 但是对于自定义类型&#xff0c;如…

MySQL 视图 浅入浅出

前提 最近公司接了一个项目&#xff0c;项目是将一份内容丰富且包含大量数据透视表&#xff08;之所以称为数据透视表&#xff0c;是因为可以动态地改变它们的版面布置&#xff0c;以便按照不同方式分析数据&#xff0c;也可以重新安排行号、列标和页字段。每一次改变版面布置…

搭建一个AI对话机器人——前端ChatUI使用纪录

最近在使用 OpenAI 的 gpt api 搞着玩玩&#xff0c;然后就遇上了前端对话交互实现的需求场景&#xff0c;如何快速实现 CUI&#xff08;Chat User Interface&#xff09;成了问题。最后选择了来自阿里达摩院的ChatUI&#xff0c;本人便用于整理其使用经验。 介绍 服务于对话领…

自动驾驶 | 使用机器学习方法的GNSS多径检测

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 论文标题&#xff1a;GNSS Multipath Detection Using a Machine Learning Approach 论文链接&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber8317700 摘要 在高度城市化地区…

Yolov8轻量化:EMO,结合 CNN 和 Transformer 的现代倒残差移动模块设计,性能优于EdgeViT、Mobile-former等网络

论文: https://arxiv.org/pdf/2301.01146.pdf 🏆🏆🏆🏆🏆🏆Yolo轻量化模型🏆🏆🏆🏆🏆🏆 重新思考了 MobileNetv2 中高效的倒残差模块 Inverted Residual Block 和 ViT 中的有效 Transformer 的本质统一,归纳抽象了 MetaMobile Block 的一般…

JAVA基础JVM讲解

JVM体系结构 主要包括两个子系统和两个组件&#xff1a; Class loader(类装载器) 子系统&#xff08;用来装载.class文件&#xff09;; Execution engine(执行引擎) 子系统&#xff08;执行字节码&#xff0c;或者执行本地方法&#xff09;&#xff1b; Runtime data area (…

2023年6月18日DAMA-CDGA/CDGP数据治理认证报名指南

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

弹性及其应用

弹性 衡量了买者和卖者对市场环境变化作出反应的程度大小是我们能够更精确的分析供给和需求 需求的价格弹性 给定百分之一的价格变化&#xff0c;需求量变量的百分数就是需求的价格弹性它衡量了一种物品的需求量对该物品价格变化作出反应的程度大小 需求价格弹性的决定因素…

手把手教你搭建OpenStack云平台(超级详细)

一、前言 OpenStack云平台搭建需要两个节点&#xff0c;一个是controller&#xff08;控制节点&#xff09;&#xff0c;另一个是compute&#xff08;计算节点&#xff09;。 控制节点&#xff08;controller&#xff09;规划如下&#xff1a; 一块200G的硬盘。两块网卡&#x…

天地图下载数据的方法

天地图下载数据的方法&#xff0c;目前我知道的&#xff0c;部分数据可以下载&#xff0c;部分数据不提供下载&#xff08;但是有数据&#xff09;具体就不知道原因了&#xff0c;话不多说&#xff1a; 登录全国地理信息资源目录服务系统&#xff08;全国地理信息资源目录服务…

cuda编程

https://docs.nvidia.com/cuda/index.html 这里写目录标题 OpenCL 与OpenGlrelease noteCUDA Features Archivensight visual studio安装指导本地下载和网络下载 bili 视频1c2050 版本Fermi架构3接口延迟cpu逻辑控制&#xff0c;管理 GPU计算核心连接 GPU硬件架构综述架构2atom…

Revit中如何使创建的族文件内存变小

族文件的大小直接影响到项目文件的大小和软件运行速度&#xff0c;如何将族文件做的最小并且满足项目需求呢? 方法一&#xff1a;清除未使用项 1. 族制作完成可以把族文件中未用到的外部载入族或其他多余数据删掉&#xff0c;点击“管理”选项卡下拉的“清除未使用项”命令; 2…