基于MCRA的语音噪音估计

2023-11-09 18:51
文章标签 语音 估计 噪音 mcra

本文主要是介绍基于MCRA的语音噪音估计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Minima Controlled Recursive Averaging 噪音估计(MCRA)

MCRA是由Israel Cohen在论文中提出的最小值追踪递归平均法,本文根据此论文总结如何来评估带噪语音中噪音部分,从而可以来做噪音消除任务。

输入信号的时域表示

带噪输入信号公式
y ( n ) = x ( n ) + d ( n ) y(n) = x(n) + d(n) y(n)=x(n)+d(n)
x(n):语音
d(n):噪音
y(n):语音+噪音

输入信号频域表示STFT

k:频域的频率index
l:时域信号的帧index
M:时域信号的帧移
h(n): 窗函数,窗长为N
Y ( k , l ) = ∑ n = 0 N − 1 y ( n + l M ) h ( n ) e − j ( 2 π / N ) n k [ 1 ] Y(k,l) = \sum\limits_{n = 0}^{N - 1} {y(n + lM)h(n){e^{ - j(2\pi /N)nk}}} \left[ 1 \right] Y(k,l)=n=0N1y(n+lM)h(n)ej(2π/N)nk[1]

频域假设

现在假设H0(k,l) 表示语音不存在,H1(k,l) 表示语音存在,那么这两种情况下可以如下表示 (X(k,l)频域语音,D(k,l)频域噪音)
H 0 ( k , l ) : Y ( k , l ) = D ( k , l ) {H_0}(k,l):Y(k,l) = D(k,l) H0(k,l):Y(k,l)=D(k,l)
H 1 ( k , l ) : Y ( k , l ) = X ( k , l ) + D ( k , l ) [ 2 ] {H_1}(k,l):Y(k,l) = X(k,l) + D(k,l)\left[ 2 \right] H1(k,l):Y(k,l)=X(k,l)+D(k,l)[2]

λ d {\lambda _d} λd定义, a d {a_d} ad是一个平滑因子, 范围在(0,1)之间取值,表示l+1帧的噪音数据和上一帧数据的相关程度;使用 λ d = E [ ( D ( k , l ) 2 ] {\lambda _d} = E\left[ {{{\left( {D(k,l} \right)}^2}} \right] λd=E[(D(k,l)2] 来表示噪音能量值,那么公式2就可以变化成公式3
H 0 ( k , l ) : λ d ( k , l + 1 ) = a d λ d ( k , l ) + ( 1 − a d ) [ Y ( k , l ] 2 {H_0}(k,l):{\lambda _d}(k,l + 1) = {a_d}{\lambda _d}(k,l) + (1 - {a_d}){\left[ {Y(k,l} \right]^2} H0(k,l):λd(k,l+1)=adλd(k,l)+(1ad)[Y(k,l]2
H 1 ( k , l ) : λ d ( k , l + 1 ) = λ d ( k , l ) [ 3 ] {H_1}(k,l):{\lambda _d}(k,l + 1) = {\lambda _d}(k,l)\left[ 3 \right] H1(k,l):λd(k,l+1)=λd(k,l)[3]

语音存在概率假设 P ( k , l ) P(k,l) P(k,l)

语音存在 P ( k , l ) P(k,l) P(k,l) λ d ( k , l + 1 ) = λ d ( k , l ) P ( k , l ) {\lambda _d}(k,l + 1) = {\lambda _d}(k,l)P(k,l) λd(k,l+1)=λd(k,l)P(k,l)
语音不存在 1 − P ( k , l ) 1 - P(k,l) 1P(k,l) λ d ( k , l + 1 ) = [ a d λ d ( k , l ) + ( 1 − a d ) [ Y ( k , l ] 2 ] ( 1 − P ( k , l ) ) {\lambda _d}(k,l + 1) = \left[ {{a_d}{\lambda _d}(k,l) + (1 - {a_d}){{\left[ {Y(k,l} \right]}^2}} \right](1 - P(k,l)) λd(k,l+1)=[adλd(k,l)+(1ad)[Y(k,l]2](1P(k,l))
两者相加得到: λ d ( k , l + 1 ) = [ a d λ d ( k , l ) + ( 1 − a d ) [ Y ( k , l ] 2 ] ( 1 − P ( k , l ) ) + λ d ( k , l ) P ( k , l ) [ 4 ] {\lambda _d}(k,l + 1) = \left[ {{a_d}{\lambda _d}(k,l) + (1 - {a_d}){{\left[ {Y(k,l} \right]}^2}} \right](1 - P(k,l)) + {\lambda _d}(k,l)P(k,l)\left[ 4\right] λd(k,l+1)=[adλd(k,l)+(1ad)[Y(k,l]2](1P(k,l))+λd(k,l)P(k,l)[4]

λ d ( k , l + 1 ) = [ a d λ d ( k , l ) + ( 1 − a d ) [ Y ( k , l ] 2 ] ( 1 − P ( k , l ) ) + λ d ( k , l ) P ( k , l ) = a ′ d ( k , l ) λ d ( k , l ) + ( 1 − a ′ d ( k , l ) ) [ Y ( k , l ] 2 {\lambda _d}(k,l + 1) = \left[ {{a_d}{\lambda _d}(k,l) + (1 - {a_d}){{\left[ {Y(k,l} \right]}^2}} \right](1 - P(k,l)) + {\lambda _d}(k,l)P(k,l) = {{a'}_d}(k,l){\lambda _d}(k,l) + (1 - {{a'}_d}(k,l)){\left[ {Y(k,l} \right]^2} λd(k,l+1)=[adλd(k,l)+(1ad)[Y(k,l]2](1P(k,l))+λd(k,l)P(k,l)=ad(k,l)λd(k,l)+(1ad(k,l))[Y(k,l]2

a ′ d ( k , l ) = a d + ( 1 − a d ) P ( k , l ) [ 5 ] {{a'}_d}(k,l) = {a_d} + (1 - {a_d})P(k,l)\left[ 5 \right] ad(k,l)=ad+(1ad)P(k,l)[5]

能量计算

当前帧的频域能量等于 上一帧能量乘以权重 a s {a_s} as + 当前帧能量* ( 1 − a s ) (1 - {a_s}) (1as)
S ( k , l ) = a s S ( k , l − 1 ) + ( 1 − a s ) S ( k , l ) [ 6 ] S(k,l ) = {a_s}S(k,l-1) + (1 - {a_s})S(k,l )\left[ 6\right] S(k,l)=asS(k,l1)+(1as)S(k,l)[6]

局部最小值追踪

现在需要找到每L帧中的最小能量,公式如下

在这里插入图片描述

如何判断语音是否存在

根据当前帧的能量和上一步搜索到的最小能量的比值,这个比值的门限是 δ \delta δ,参考论文取值为5.0
S ( k , l ) S min ⁡ ( k , l ) > δ [ 12 ] \frac{{S(k,l)}}{{{S_{\min }}(k,l)}} > \delta\left[ 12\right] Smin(k,l)S(k,l)>δ[12]

计算 P ( k , l ) P(k,l) P(k,l)

这里又加入了一个平滑因子,来计算 P ( k , l ) P(k,l) P(k,l),也就是说当前帧的语音存在概率和上一帧语音存在的概率是有一个权重 a p {a_p} ap
P ( k , l ) = a p P ( k , l − 1 ) + ( 1 − a p ) I ( k , l ) [ 13 ] P(k,l ) = {a_p}P(k,l-1) + (1 - {a_p})I(k,l )\left[ 13\right] P(k,l)=apP(k,l1)+(1ap)I(k,l)[13]

计算流程总结

参数列表

参数意义
N频域点数512
M时域每帧大小128
L最小值追踪窗125
a d {a_d} ad噪音频谱平滑因子0.95
a s {a_s} as频谱能量平滑因子0.8
a p {a_p} ap语音存在概率平滑因子0.2
δ \delta δ比值门限值,用来确定语音是否存在5.0

计算流程图
在这里插入图片描述

参考文献

Noise Estimation by Minima Controlled Recursive Averaging for Robust Speech Enhancement 【Israel Cohen, Member, IEEE, and Baruch Berdugo】

这篇关于基于MCRA的语音噪音估计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/377969

相关文章

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

基于人工智能的智能家居语音控制系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 随着物联网(IoT)和人工智能技术的发展,智能家居语音控制系统已经成为现代家庭的一部分。通过语音控制设备,用户可以轻松实现对灯光、空调、门锁等家电的控制,提升生活的便捷性和舒适性。本文将介绍如何构建一个基于人工智能的智能家居语音控制系统,包括环境准备

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

【阅读文献】一个使用大语言模型的端到端语音概要

摘要 ssum框架(Speech Summarization)为了 从说话人的语音提出对应的文本二题出。 ssum面临的挑战: 控制长语音的输入捕捉 the intricate cross-mdoel mapping 在长语音输入和短文本之间。 ssum端到端模型框架 使用 Q-Former 作为 语音和文本的中介连接 ,并且使用LLMs去从语音特征正确地产生文本。 采取 multi-st

数据集 3DPW-开源户外三维人体建模-姿态估计-人体关键点-人体mesh建模 >> DataBall

3DPW 3DPW-开源户外三维人体建模数据集-姿态估计-人体关键点-人体mesh建模 开源户外三维人体数据集 @inproceedings{vonMarcard2018, title = {Recovering Accurate 3D Human Pose in The Wild Using IMUs and a Moving Camera}, author = {von Marc

数据集 Ubody人体smplx三维建模mesh-姿态估计 >> DataBall

Ubody开源人体三维源数据集-smplx-三维建模-姿态估计 UBody:一个连接全身网格恢复和真实生活场景的上半身数据集,旨在拟合全身网格恢复任务与现实场景之间的差距。 UBody包含来自多人的现实场景的1051k张高质量图像,这些图像拥有2D全身关键点、3D SMPLX模型。 UBody由国际数字经济学院(IDEA)提供。 (UBody was used for mesh r

【语音告警】博灵智能语音报警灯JavaScript循环播报场景实例-语音报警灯|声光报警器|网络信号灯

功能说明 本文将以JavaScript代码为实例,讲解如何通过JavaScript代码调用博灵语音通知终端 A4实现声光语音告警。主要博灵语音通知终端如何实现无线循环播报或者周期播报的功能。 本代码实现HTTP接口的声光语音播报,并指定循环次数、播报内容。由于通知终端采用TTS语音合成技术,所以本次案例中无需预先录制音频。 代码实战 为了通过JavaScript调用博灵语音通知终端,实现HT

讯飞XFS5152 语音模块在RK3288 上的应用

公司产品使用XFS5152语音模块作为语音提示应用在RK3288 平台上,这里记录一下驱动调试过程。 XFS5152 支持 UART、I2C 、SPI 三种通讯方式,将收到的中文、英文文本进行语音合成。 产品中RK3288 使用I2C连接该模块,但存在一个问题该模块只支持低速率的I2C,速度最大只能到15KHz, 但RK3288 支持的标准I2C速率为100KHz,实际测试发现虽然可以设置到