语音降噪论文“A Hybrid Approach for Speech Enhancement Using MoG Model and Neural Network Phoneme Classifier”的研读
最近认真的研读了这篇关于降噪的论文。它是一种利用混合模型降噪的方法,即既利用了生成模型(MoG高斯模型),也利用了判别模型(神经网络NN模型)。本文根据自己的理解对原理做了梳理。
论文是基于“Speech Enhancement Using a Mixture-Maximum Model”提出的MixMAX模型的。假设噪声是加性噪声,干净语音为x(t),噪声为y(t),则在时域带噪语音z(t)可以表示为z(t) = x(t) + y(t)。对z(t)做短时傅里叶变换(STFT)得到Z(k),再取对数谱(log-spectral)可得到Zk(k表示对数谱的第k维,即对数谱的第k个频段(frequency bin)。若做STFT的样本有L个,则对数谱的维数是 L/2 + 1)。相应的可得到Xk和Yk。MixMAX模型是指加噪后语音的每个频段上的值Zk是对应的Xk和Yk中的大值,即 = MAX(Xk, Yk)。
语音x由音素组成,设定一个音素可用一个高斯表示。假设音素有m个,则干净语音的密度函数f(x)可以表示成下式:
fi(x)表示第i个音素的密度函数。由于x是用多维的对数谱表示的,且各维向量之间相互独立,所以fi(x)可以表示成各维向量的密度函数fi,k(xk)的乘积。各维的密度函数表示如下式:
μi,k表示这一维上的均值,δi,k表示这一维上的方差。ci表示这个音素所占的权重,权重的加权和要为1。
噪声y只用一个高斯表示。同语音一样,y也是用多维的对数谱表示的,y的密度函数可以表示如下:
同样gk(yk)表示如下:
对于y每一维上的密度函数,其概率分布函数Gk(y)为:
其中erf()为误差函数,表示如下:
同理可求得干净语音中每个音素的每一维上的概率分布函数,如下式:
对于带噪语音Z来说,当语音音素给定时(即i给定时)其对数谱的第k维分量Zk的分布函数Hi,k(z)可以通过下式求得:
上式就是求I = i时的条件概率。由于X和Y相互独立,就变成了X和Y的第k维向量上的分布函数的乘积。对Zk的分布函数Hi,k(z)求导,就得到了的密度函数hi,k(z),表示如下:
所以z的密度函数h(z)通过下式求得:
带噪语音Z已知,我们的目标是要根据带噪语音估计出干净语音X,即求出Z已知条件下的X的条件期望。基于MMSE估计,X的条件期望/估计表示如下:
上式中X的条件期望又转换成了每个音素条件期望的加权和。条件概率q(i | Z = z)可根据全概率公式得到,如下:
对于每个音素的条件期望,表示如下:。对于每个音素的对数谱的每一维的条件期望,表示如下:
其中:
定义 ,可以推得x的对数谱的每一维上的估计如下式:
可以把用基于谱减的
替代,其中β表示消噪程度。ρk可以看成是干净语音的概率。所以
抵消掉正负项,可得:
上式就是求消噪后的语音的对数谱的每维向量的数学表达式。zk可根据带噪语音求得,β要tuning,知道ρk后xk的估计就可得到了。对得到的每维向量做反变换,可得到消噪后的时域的值。
上文已给出,其中p(I = i | Z = z)表示在Z已知下是每个音素可能的概率,或者说一帧带噪语音是每个音素的可能的概率,用pi表示。pi可以通过全概率公式求出,即
。但对每种语言来说,总的音素的个数是已知的(比如英语中有39个音素),这样求每帧是某个音素的概率是一个典型的分类问题。神经网络(NN)处理分类问题是优于传统方法的,所以可以用NN来训练一个模型,处理时用这个模型来计算每帧属于各个音素的概率,即算出pi,再和ρi,k做乘累加(ρi,k用基于MOG模型的方法求出),就可得到ρk了(
)。有了ρk,xk的估计就可求出了。可以看出NN模型的作用是替换计算pi的传统方法,使计算pi更准确。
干净语音的高斯模型并不是用常规的EM算法训练得到的,而是基于一个已做好音素标注的语料库得到的,论文作者用的是TIMIT库。每帧跟一个音素一一对应,把属于一个音素的所有帧归为一类,算对数谱的各个向量的值,最后求均值和方差,得到这个向量的密度函数表达式,均值和方差的计算如下式:
其中Ni表示属于某一音素的帧的个数。一个音素的所有向量的密度表达式相乘,就得到了这个音素的密度函数表达式。再通过属于这个音素的帧数占所有帧数的比例得到权重
(), 这样干净语音的高斯模型就建立好了。
对于非稳态噪声来说,噪声参数(μY,k和δY,k)最好能自适应。噪声参数的初始值可以通过每句话的前250毫秒求得(基于前250毫秒都是噪声的假设),求法同上面的干净语音的高斯模型,数学表达式如下:
噪声参数的更新基于以下算式:
其中α为平滑系数,0 < α < 1,也需要tuning。噪声参数(μY,k和δY,k)更新了,Gk(y)和gk(yk)就更新了,hi,k(z)也就更新了,从而ρi,k也更新了。
综上, 基于生成-判别混合模型的降噪算法如下:
1) 训练阶段
输入:
根据已标注好音素的语料库,得到对数谱向量z1,…zn(用于算MOG),MFCC向量v1,…,vn(用于NN训练)和每帧相对应的音素标签i1,…,in。
MoG 模型训练:
根据对数谱向量z1,…,zn算干净语音的MOG
NN模型训练:
根据(v1,i1),…(vn,…,in)训练一个基于音素的多分类模型
2) 推理阶段
输入:
带噪语音的对数谱向量以及MFCC向量
输出:
消噪后的语音
计算步骤:
语音降噪论文“A Hybrid Approach for Speech Enhancement Using MoG Model and Neural Network Phoneme Classifier”的研读的更多相关文章
- 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)
白翔的CRNN论文阅读 1. 论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...
- 论文笔记:(2019)GAPNet: Graph Attention based Point Neural Network for Exploiting Local Feature of Point Cloud
目录 摘要 一.引言 二.相关工作 基于体素网格的特征学习 直接从非结构化点云中学习特征 从多视图模型中学习特征 几何深度学习的学习特征 三.GAPNet架构 3.1 GAPLayer 局部结构表示 ...
- Speech Enhancement via Deep Spectrum Image Translation Network
文中提出了一种深度网络来解决单通道语音增强问题. 链接:https://arxiv.org/abs/1911.01902 简介 因为背景噪声和混响的存在,录音通常会被扭曲,会对后端的语音识别等技术产生 ...
- VoIP语音处理流程和知识点梳理
做音频软件开发10+年,包括语音通信.语音识别.音乐播放等,大部分时间在做语音通信.做语音通信中又大部分时间在做VoIP语音处理.语音通信是全双工的,既要把自己的语音发送出去让对方听到,又要接收对方的 ...
- 论文翻译:2020_A Recursive Network with Dynamic Attention for Monaural Speech Enhancement
论文地址:基于动态注意的递归网络单耳语音增强 论文代码:https://github.com/Andong-Li-speech/DARCN 引用格式:Li, A., Zheng, C., Fan, C ...
- 论文翻译: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 ...
- 论文翻译:Fullsubnet: A Full-Band And Sub-Band Fusion Model For Real-Time Single-Channel Speech Enhancement
论文作者:Xiang Hao, Xiangdong Su, Radu Horaud, and Xiaofei Li 翻译作者:凌逆战 论文地址:Fullsubnet:实时单通道语音增强的全频带和子频带 ...
- 论文翻译:2020_WaveCRN: An efficient convolutional recurrent neural network for end-to-end speech enhancement
论文地址:用于端到端语音增强的卷积递归神经网络 论文代码:https://github.com/aleXiehta/WaveCRN 引用格式:Hsieh T A, Wang H M, Lu X, et ...
- 论文翻译:2019_Deep Neural Network Based Regression Approach for A coustic Echo Cancellation
论文地址:https://dl.acm.org/doi/abs/10.1145/3330393.3330399 基于深度神经网络的回声消除回归方法 摘要 声学回声消除器(AEC)的目的是消除近端传声器 ...
随机推荐
- mysql建表约束
--mysql建表约束--主键约束它能够唯一确定一张表中的内容,也就是我们通过某个字段添加约束,就可以是的该字段唯一(不重复)且不为空.create table user( id int pr ...
- java四种字符串拼接方式
1.直接用"+"号 2.使用String的方法concat 3.使用StringBuilder的append 4.使用StringBuffer的append
- Python—关于Pandas缺失值问题(国内唯一)
获取文中的CSV文件用于代码编程以及文章首发地址,请点击下方超链接 获取CSV,用于编程调试请点这 在本文中,我们将使用Python的Pandas库逐步完成许多不同的数据清理任务.具体而言,我们将重点 ...
- iovec结构体使用说明
http://blog.163.com/lichuan0502@126/blog/static/9933534820111033228285/
- Python信息搜集
1.IP查询 IP查询是通过当前所获取到的URL去查询对应IP地址的过程.可以应用socket库函数中的gethostbuname()获取域名所对应的IP值,代码如下: 查询域名www.biadu.c ...
- xctf - stack2
xctf - stack2 文件check一下,几乎全开了 运行一下程序,好像很正常呢: 再来一个大的,好像有点儿问题,变1.00了 在ida中查看,在输入的时候没有检查数据大小 可以通过劫持eip获 ...
- JMeter自定义采样器插件开发
JMeter自定义采样器插件开发 目录 JMeter自定义采样器插件开发 1. 简介 2. 需求简介 3.成品展示 成功展示 失败展示 4. 准备开发环境 4.1 准备pom文件 4.2 新建Java ...
- OkHttp:NoClassDefFoundError
1 问题描述 使用OkHttp时报错: Caused by: java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at okh ...
- unzip解压中文乱码
1 问题描述 直接 unzip xxx.zip 乱码,肯定是编码问题了不用问.但是unzip没有指定编码的选项: 网上的解决方案如下: unzip -O GBK/GB18030CP936 xx.zip ...
- ES6 第二天
三点运算符 <script type="text/javascript"> function func(...params){ params.forEach(funct ...