基于循环神经网络的语音增强模型计算量压缩方法



1.本发明属于语音增强的领域,具体涉及一种基于循环神经网络状态跳跃更新的语音增强模型计算量压缩方法。


背景技术:



2.使用传声器在真实环境中采集到说话人的语音信号时,会同时采集到各种干扰信号,它们可能是背景噪声、房间混响等。这些噪声干扰在信噪比较低时会降低语音的质量,并且使语音识别准确率严重下降。从噪声干扰中提取目标语音的技术称为语音增强技术。
3.最近,多种基于深度学习的模型被用于语音增强中。包括卷积神经网络(cnn)、循环神经网络(rnn)和注意力机制(attention)等模型均成功运用在语音增强领域,并相对于传统的谱减法等算法(boll,s.f.(1979)suppression of acoustic noise in speech using spectral subtraction,ieee transactions on acoustics,speech and signal processing,27,113

120.)具有显著的性能优势。一般而言,循环神经网络适合实时处理,而注意力机制更擅长对上下文信息建模。相对于循环神经网络和注意力机制,卷积神经网络使用权重共享机制有着更少的可训练参数。中国专利cn112927707a就使用了一种基于循环神经网络和注意力机制的深度学习模型进行语音增强。然而,为了达到良好性能,这些基于神经网络的语音增强算法具有数十亿的浮点计算需求。对有限计算资源和高实时应用场景,就需要轻量化的网络模型。
4.除了直接训练一个小神经网络,通过对大的神经网络进行压缩也常用于神经网络部署。文献(k.tan and d.wang,"towards model compression for deep learning based speech enhancement,"in ieee/acm transactions on audio,speech,and language processing,vol.29,pp.1785-1794,2021,doi:10.1109/taslp.2021.3082282.)已经成功将剪枝和量化等常见的神经网络压缩方法应用在语音增强模型压缩中。文献(hao,x.,wen,s.,su,x.,liu,y.,gao,g.,li,x.(2020)sub-band knowledge distillation framework for speech enhancement.proc.interspeech 2020,2687-2691,doi:10.21437/interspeech.2020-1539)应用知识蒸馏方法,通过更大模型的输出来监督更小语音增强模型训练。
5.上述方法都在训练阶段进行,无法在推断时结合数据特性动态调整。在实际运用中,根据不同的数据特征或是计算量限制,对语音增强模型的计算量进行灵活的调整具有重要意义。


技术实现要素:



6.本发明提出了一种基于循环神经网络隐状态跳跃更新的语音增强模型计算量压缩方法,该方法能够被运用在具有循环神经网络结构的语音增强模型中,在有限的性能损失下显著降低循环神经网络的平均计算量。
7.本发明采用的技术方案为:
8.基于循环神经网络的语音增强模型计算量压缩方法,包括以下步骤:
9.步骤1,使用清晰语音数据和噪声数据构造用于训练的含噪语音数据;
10.步骤2,构建包含至少一个循环神经网络模块的深度神经网络作为语音增强模型;
11.步骤3,向所述循环神经网络模块中添加隐状态跳跃结构,并向训练误差函数中添加隐状态跳跃频率的正则化项;
12.步骤4,以步骤3得到的训练误差函数为目标,使用步骤1的含噪语音数据训练所述深度神经网络;
13.步骤5,向完成训练的深度神经网络输入待增强语音的复数时频谱,使用自适应跳跃或是指定跳跃频率的方式实现循环神经网络模块的隐状态跳跃更新,以实现语音增强模型的计算量压缩。
14.与现有技术相比,本发明的有益效果为:本发明的方法能够运用在多种基于深度学习的语音增强网络中,以较低的性能损失显著降低模型运算量,并且可以方便地在运行时调整计算量。
附图说明
15.图1是本发明方法的处理流程图。
16.图2是本发明所使用的循环神经网络隐状态跳跃模型处理流程图。
17.图3是隐状态跳跃模型在t时刻隐状态跳跃状态的处理流程图。
18.图4是隐状态跳跃模型在t时刻隐状态更新状态的处理流程图。
19.图5是实施例中使用的双路卷积循环神经网络的具体结构图,其主要结构为编码器、两层双路卷积循环网络、解码器。其中编解码器分别由5层卷积网络和转置卷积网络构成对称结构,并由跳层连接相连,相应的输出通道数被标注在每一个卷积层上方。
20.图6是实施例中使用的双路卷积循环神经网络具体结构图,其主要由两个循环神经网络组成,分别是时间维度并行的双向gru和频率维度并行的单向gru,每一个gru层后面连接着一个全连接层和归一化层。
21.图7是现有的基于结构化剪枝的算法、直接减少循环神经网络输出维度的方法和本发明的方法在测试语音数据集上(a)sdr、(b)pesq和(c)stoi指标随计算量的变化曲线。
22.图8是本发明的方法在理想vad标签和神经网络预测的vad标签条件下,在测试语音数据集上(a)sdr、(b)pesq和(c)stoi指标以及(d)循环神经网络的平均更新频率随着γ的变化曲线。
具体实施方式
23.本发明基于循环神经网络隐状态跳跃更新的语音增强模型计算量压缩方法主要包括以下几个部分:
24.1、语音增强模型构建和训练
25.1)构造含噪语音数据
26.若清晰语音信号为s(t),加性噪声信号为n(t),则构造的含噪语音信号为:
27.x(t)=s(t)+n(t)
28.对x(t)做n点fft的短时傅里叶变换,得到t帧f维(f=n/2+1)复数频谱为x=
{x1,...,x
t
},其中将复数频谱分解为实部虚部,并作为语音增强模型的输入。
29.2)构建一个拥有循环神经网络模块的语音增强模型
30.构建一个基于深度学习的语音增强模型,可以仅仅使用循环神经网络(rnn),也可以是卷积循环神经网络(crn)。该模型中至少具有一个循环神经网络结构,常见的循环神经网络有长短期记忆网络(lstm)和门控循环单元(gru)。该模型以含噪语音特征为输入,以清晰语音特征或是清晰语音掩蔽函数为输出。
31.3)在语音增强模型上添加隐状态跳跃模型
32.循环神经网络(rnn)模块的计算过程可以表示为:
[0033][0034]
其中s(
·
)表示循环神经网络的计算函数,x
t
表示t时刻的输入向量,s
t-1
表示t-1时刻的隐状态向量,表示循环神经网络输出的t时刻的隐状态向量。以此为基础,添加一个全连接层,其输入是循环神经网络t-1时刻的隐状态输出s
t-1
,其输出是t时刻的微分跳跃概率δp
t
。可以表示为:
[0035]
δp
t
=σ(ws
t-1
+b)
[0036]
其中w和b分别表示权重矩阵和偏置向量,σ(
·
)表示sigmoid函数。δp
t
将被累加在累计跳跃概率p
t
上,p
t
通过四舍五入函数得到判断是否进行隐状态更新的二值门g
t
。如果g
t
为1则在t时刻使用循环神经网络更新的隐状态输出;如果g
t
为0则使用上一时刻的隐状态s
t-1
作为输出。计算过程可以表示为:
[0037][0038]
其中s
t
表示t时刻循环神经网络模块最终的隐状态输出。p
t
的更新可以表示为:
[0039]
p
t+1
=g
t
δp
t
+(1-g
t
)(p
t
+min(δp
t
,1-p
t
))
[0040]
其中p
t+1
表示t+1时刻的累计跳跃概率,min(
·
)表示取最小值函数。
[0041]
4)模型训练
[0042]
若语音增强模型输出的增强语音信号为语音增强模型训练目标为最小化误差函数常见的语音增强目标函数有:
[0043]
a)负尺度不变信噪比(neg-sisnr)
[0044][0045]
其中s和是清晰语音和增强语音信号组成的向量。
[0046]
b)压缩频谱均方误差(cmse)
[0047]
对s(t)和做n点fft的短时傅里叶变换,分别得到对应的复数频谱s(t,f)和对频谱的幅度以幂指数加权压缩,其压缩复数频谱可以表示为sc(t,f)和由下式计算:
[0048][0049][0050]
其中c=0.3为幅度压缩幂值。压缩频谱均方误差可以表示为:
[0051][0052]
其由压缩频谱复数均方误差项和幅度均方误差项组成,其中λ=0.3为复数均方误差项的权重,t和f分别表示二值门矩阵在时间和频率轴的索引。
[0053]
在上述语音增强目标函数基础上,还需要引入对循环神经网络的隐状态更新频率进行约束的正则化项,可以表示为:
[0054][0055]
以及
[0056][0057]
将第i层循环神经网络的二值门输出的均值通过均方误差(mse)或是平均绝对值误差(mae)约束到μi。其中gi表示模型中第i个循环神经网络的隐状态跳跃结构输出的二值门矩阵,tr和fr分别表示二值门矩阵在时间和频率轴的维度,μi代表第i个循环神经网络目标更新频率。
[0058]
最终的训练误差函数可以表示为:
[0059][0060]
其中λ表示正则化项的权重。
[0061]
2、在增强阶段降低计算量
[0062]
对待增强语音信号做n点fft的短时傅里叶变换得到对应的复数频谱。将复数频谱输入训练好的语音增强模型,得到增强语音。在模型推理过程中可以通过以下几种方式降低循环神经网络的计算量:
[0063]
1)自适应跳跃方式,使用和训练时类似的累计跳跃概率的计算方式:
[0064]
p
t+1
=g
t
δp
t
+(1-g
t
)(p
t
+min(δp
t
,1-p
t
))
[0065]
其中δp
t
=γσ(ws
t-1
+b),γ为增强阶段使用的概率缩放因子。当γ=1时,累计概率的计算和训练阶段一致;当γ<1时可以降低隐状态更新的频率而进一步降低计算量;当γ>1时可以提高隐状态更新的频率而提高计算量。γ可以固定设置,也可以根据语音活动检测(vad)结果在语音段和纯噪声段分别设置。
[0066]
2)指定跳跃频率方式,使用固定的微分跳跃概率δp
t
。δp
t
可以通过下式设置:
[0067][0068]
其中n为计算量相对于原始循环神经网络下降的倍数,ε=0.01是一个小量。当模型在频率维度有f个并行的循环神经网络时,可是使用如下初始化方法:
[0069][0070]
其中p0是初始累计跳跃概率,维度为f
×
1,由f个循环神经网络初始的累计跳跃概率拼接构成,在频率维度将其以n为周期初始化,保证每一个时刻均只有个循环神经网络更新,计算量相应降低为原始的倍。
[0071]
实施例
[0072]
下面结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[0073]
1、训练及测试样本和客观评价标准
[0074]
本实施例的训练数据和测试样本均来源于wsj0 si-84语音库,该语音库包涵约40小时的清晰语音数据,分为训练集、验证集和测试集。本实施例的含噪语音数据由wsj0 si-84语音库的清晰语音数据与deep noise suppression challenge(reddy,c.k.a.,gopal,the interspeech 2020deep noise suppression challenge:datasets,subjective testing framework,and challenge results.proc.interspeech 2020,2492-2496,doi:10.21437/interspeech.2020-3038)的噪声数据按照从-5到5db均匀随机分布的信噪比混合生成,并按照wsj0 si-84的训练集和验证集分割。用于测试的音频,选择wsj0 si-84测试集和musan以及noisex等噪声以-5、0、5db信噪比混合而成,每种信噪比各650条。
[0075]
本实施例采用信号失真比(sdr)、语音质量的感知评价(pesq)和短时可懂度(stoi)作为增强性能的客观评价指标。在本实施例中,对语音增强后的测试样本和清晰语音做sdr、pesq和stoi计算得到性能评价。
[0076]
本实施例采用每秒兆乘加次数(m macs)作为神经网络计算量的衡量指标。
[0077]
2、参数设置
[0078]
1)信号的短时傅里叶变换
[0079]
本实施例中所有的信号采样率均为16khz,进行短时傅里叶变换使用汉宁窗,窗长为512(32ms),帧移为256(16ms)。
[0080]
2)语音增强模型
[0081]
参考附图5,本实施例中所采用的语音增强模型,采用文献(le,x.,chen,h.,chen,k.,lu,j.(2021)dpcrn:dual-path convolution recurrent network for single channel speech enhancement.proc.interspeech 2021,2811-2815,doi:10.21437/interspeech.2021-296)所述双路卷积循环神经网络(dpcrn)。该模型输入特征为含噪语音的频谱的实部和虚部和对数功率谱,它们被拼接为一个三维张量x∈r
t
×f×3,其中频率维度f=257。输入特征由编码层、双路循环神经网络层和解码层处理之后,输出是清晰语音的复数比率掩蔽函数(crm),将其乘以含噪频谱得到清晰频谱,再由逆短时傅里叶变换得到清晰语音信号。其中编码层解码层分别由5层卷积层和转置卷积层构成。参考附图6,双路循环神经网络层一共有四层循环神经网络,分别是两层时间维度并行的双向gru和两层频率维度并行的单向gru构成。每一层循环神经网络输出的特征是三维张量其中tr=t,分别表示时间维长度和频率维度长度,c=128表示每一个gru输出隐状态的维度。将不使用隐状态跳跃更新的模型称为基线模型;对所有循环神经网络添加隐状态跳跃更新结构后得到的模型被称作跳跃模型;在跳跃模型基础上,使用模型同时进行语音活动性检测(vad)的多任务学习,这个模型被称作vad模型。
[0082]
3)模型的训练
[0083]
基线模型使用压缩频谱均方误差(cmse)作为训练误差函数。表示为:
[0084]
跳跃模型在cmse的基础上,添加基于mse的隐状态跳跃正则化项,表示为:
[0085][0086][0087]
其中正则化项的权重λ=0.01,μi被设置为0.5。更进一步地,vad模型在mse的基础上,添加对vad的预测误差,可以表示为:
[0088][0089]
其中mse(
·
,
·
)表示均方误差函数,和v分别表示预测的vad标签和理想的vad标签。
[0090]
所有模型的训练均使用adam优化器以0.001的初始学习率进行优化。如果验证集上误差没有继续下降5轮就将学习率减半;如果验证集上误差没有继续下降10轮就停止训练。
[0091]
3、方法的具体实现流程
[0092]
参考附图1,方法的实现主要分为训练阶段和增强阶段。
[0093]
训练阶段使用训练集的含噪语音做短时傅里叶变换得到复数谱输入语音增强模型,并计算模型输出和对应的清晰语音的误差,使用优化器最小化该误差函数。增强阶段对测试的含噪语音做短时傅里叶变换得到复数谱,输入语音增强模型,得到增强后的语音。
[0094]
为了体现本发明相对于现有方法计算量的下降,本实施例将和文献(wen w,he y,
rajbhandari s,“learning intrinsic sparse structures within long short-term memory”,in international conference on learning representations(iclr)2017)中所使用的结构化剪枝算法相对比。基线模型的计算量约为1115m macs,其中双路循环神经网络层计算量约为819m macs,是主要的计算复杂度来源。本实施例在双路循环神经网络层中的所有循环神经网络上使用了三种降低计算量的方法,分别是上述的结构化剪枝、直接降低循环神经网络的输出维度和本发明的方法。附图7中方点、三角点和圆点曲线分别表示三种方法把模型压缩到不同的计算量情况下的性能变化曲线,其中图(a)、图(b)和图(c)的纵坐标分别是增强语音的平均sdr、pesq和stoi值。可以发现,本发明的方法在不同的计算量下几乎都达到了三种方法中最优的效果。相对于其他方法调整计算量需要重新训练,本发明的方法还可以实现运行中动态调整计算量。本实施例根据vad模型的语音和非语音判决,在非语音帧使用不同的概率缩放因子γ控制非语音帧循环神经网络的平均更新频率以动态调整计算量。附图8的图(a)、图(b)、图(c)和图(d)分别给出了vad模型增强语音的平均sdr、pesq、stoi值和循环神经网络平均更新频率随γ变化曲线。其中三角点曲线是根据理想vad标签的结果,方点曲线是根据模型预测vad标签的结果,虚线是基线模型的结果。图(d)中上三角点、下三角点曲线和方点、圆点曲线分别表示语音帧和非语音帧的循环神经网络的平均更新频率。可以发现本发明的方法可以通过γ方便地控制非语音帧的计算量,并且在γ选择在0.3到0.8时甚至可以做到降低计算量但保证性能基本不变,甚至在sdr和pesq指标更优的结果。

技术特征:


1.基于循环神经网络的语音增强模型计算量压缩方法,其特征在于,包括以下步骤:步骤1,使用清晰语音数据和噪声数据构造用于训练的含噪语音数据;步骤2,构建包含至少一个循环神经网络模块的深度神经网络作为语音增强模型;步骤3,向所述循环神经网络模块中添加隐状态跳跃结构,并向训练误差函数中添加隐状态跳跃频率的正则化项;步骤4,以步骤3得到的训练误差函数为目标,使用步骤1的含噪语音数据训练所述深度神经网络;步骤5,向完成训练的深度神经网络输入待增强语音的复数时频谱,使用自适应跳跃或是指定跳跃频率的方式实现循环神经网络模块的隐状态跳跃更新,以实现语音增强模型的计算量压缩。2.根据权利要求1所述的基于循环神经网络的语音增强模型计算量压缩方法,其特征在于,所述步骤3中,所述隐状态跳跃结构的具体结构如下:向循环神经网络模块添加一个全连接层,用于估计隐状态更新概率;全连接层以循环神经网络上一时刻的隐状态s
t-1
为输入,以t时刻的微分跳跃概率δp
t
为输出,表示为:δp
t
=σ(ws
t-1
+b)其中w和b分别表示权重矩阵和偏置向量,σ(
·
)表示sigmoid函数;微分跳跃概率δp
t
将被累计在t时刻的跳跃概率p
t
上,对累计跳跃概率p
t
通过四舍五入函数得到二值门g
t
,如果g
t
为1则在t时刻使用循环神经网络更新的隐状态输出;如果g
t
为0则使用上一时刻的隐状态s
t-1
作为输出,计算过程表示为:其中s
t
表示t时刻循环神经网络模块最终的隐状态输出,p
t
的更新公式为:p
t+1
=g
t
δp
t
+(1-g
t
)(p
t
+min(δp
t
,1-p
t
))其中p
t+1
表示t+1时刻的累计跳跃概率,min(
·
)表示取最小值函数。3.根据权利要求1所述的基于循环神经网络的语音增强模型计算量压缩方法,其特征在于,所述步骤3中,所述训练误差函数中使用了以下隐状态跳跃频率的正则化项:以及其中g
i
表示模型中第i个循环神经网络的隐状态跳跃结构输出的二值门矩阵,t
r
和f
r
分别表示二值门矩阵在时间和频率轴的维度,t和f分别表示二值门矩阵在时间和频率轴的索引,μ
i
代表第i个循环神经网络目标更新频率。4.根据权利要求1所述的基于循环神经网络的语音增强模型计算量压缩方法,其特征在于,所述步骤5中,使用自适应跳跃的方式实现循环神经网络模块的隐状态跳跃更新,其累计跳跃概率的计算方式为:p
t+1
=g
t
δp
t
+(1-g
t
)(p
t
+min(δp
t
,1-p
t
))
其中δp
t
=γσ(ws
t-1
+b),γ为概率缩放因子:当γ=1时,累计概率的计算和步骤4的训练阶段一致;当γ<1时,降低隐状态更新的频率而进一步降低计算量;当γ>1时,提高隐状态更新的频率而提高计算量。5.根据权利要求4所述的基于循环神经网络的语音增强模型计算量压缩方法,其特征在于,概率缩放因子γ的值为固定设置或者根据语音活动检测结果在语音段和纯噪声段分别设置。6.根据权利要求1所述的基于循环神经网络的语音增强模型计算量压缩方法,其特征在于,所述步骤5中,使用指定跳跃频率的方式实现循环神经网络模块的隐状态跳跃更新,采用固定的微分跳跃概率δp
t
:其中n为计算量相对于原始循环神经网络模块下降的倍数,ε=0.01;当所述语音增强模型在频率维度有f个并行的循环神经网络模块时,使用如下初始化方法:其中p0是初始累计跳跃概率,维度为f
×
1,由f个循环神经网络模块初始的累计跳跃概率拼接构成,在频率维度将其以n为周期初始化,保证每一个时刻均只有个循环神经网络模块更新。

技术总结


本发明公开了一种基于循环神经网络的语音增强模型计算量压缩方法。该方法包括以下步骤:(1)使用清晰语音数据和噪声数据构造用于训练的含噪语音数据;(2)构建包含至少一个循环神经网络模块的深度神经网络作为语音增强模型;(3)在循环神经网络模块中添加隐状态跳跃结构,并向训练误差函数中添加隐状态跳跃频率的正则化项;(4)使用含噪语音训练数据集训练语音增强模型;(5)在增强阶段使用自适应跳跃或是指定跳跃频率的方式实现循环神经网络的隐状态跳跃更新,实现计算量压缩。本发明的方法能够使用在多种基于深度学习的语音增强算法中,具有可以在推断时动态调节计算量的能力。力。力。


技术研发人员:

乐笑怀 卢晶

受保护的技术使用者:

南京大学

技术研发日:

2022.07.04

技术公布日:

2022/11/1

本文发布于:2024-09-24 11:21:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/18251.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:神经网络   语音   模型   状态
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议