技术内容
【技术领域】
本发明涉及一种语音增强的方法。
【背景技术】
由于大量环境噪声的存在,麦克风采集到的语音信号普遍信噪比不 够高,所以需要通过语音增强的方法来提升输入语音的信噪比。相关技 术的语音增强的方法需要使用VAD(Voice Activity Detection,语音激 活检测)来区分语音信号部分和噪声信号部分,所以需要的计算量和存 储空间都偏大,对硬件的要求比较高,在制成专用芯片时需要的硅的面 积也比较大,必将增加成本。
因此实有必要对相关技术的语音增强的方法进行改良。
【发明内容】
本发明的目的在于提供一种资源需求量小的语音增强的方法。
本发明的目的是这样实现的:
一种语音增强的方法,其包括如下步骤:
①将声音采集装置采集到的带噪语音信号用芯片进行分帧处理, 再加窗变换到频域;
②用子带分析滤波器将变换到频域后的带噪语音信号划分为若干 子带,则相邻两子带间设有子带区间,再计算每个子区间的能量并进行 平滑,得到经平滑后的每个子带区间的能量;
③用最小值统计法找出每个子带区间的噪声能量;
④用频谱减算法根据经平滑后的每个子带区间的能量和统计出的 噪声能量求出每个子带区间的倍乘因子;
⑤用计算的倍乘因子对每个子带区间的变换到频域后的带噪语音 信号进行处理,得到全频带增强后的语音信号;
⑥用子带综合滤波器把全频带增强后的语音信号合成为语音谱;
⑦把语音谱变换到时间域得到变换到时域后的全频带增强后的语 音信号,再把相邻的变换到时域后的全频带增强后的语音信号的重叠部 分进行相加操作后得到最终输出信号。
与相关技术比较,本发明语音增强的方法避免了VAD的使用,其方 法简单,资源需求量小。使用了很小的计算量,实现了一定的信噪比提 升。
【附图说明】
图1为本发明的语音增强的方法的流程示意图。
【具体实施方式】
本发明语音增强的方法,其包括如下步骤:
①将声音采集装置采集到的带噪语音信号用芯片进行分帧处理, 再加窗变换到频域;
②用子带分析滤波器将变换到频域后的带噪语音信号划分为若干 子带,则相邻两子带间设有子带区间,再计算每个子区间的能量并进行 平滑,得到经平滑后的每个子带区间的能量;
③用最小值统计法找出每个子带区间的噪声能量;
④用频谱减算法根据经平滑后的每个子带区间的能量和统计出的 噪声能量求出每个子带区间的倍乘因子;
⑤用计算的倍乘因子对每个子带区间的变换到频域后的带噪语音 信号进行处理,得到全频带增强后的语音信号;
⑥用子带综合滤波器把全频带增强后的语音信号合成为语音谱;
⑦把语音谱变换到时间域得到变换到时域后的全频带增强后的语 音信号,再把相邻的变换到时域后的全频带增强后的语音信号的重叠部 分进行相加操作后得到最终输出信号。
本发明选取带噪语音信号的频率为8KHZ。
对在时域中的带噪语音信号进行分帧,是将带噪语音信号以帧为单 位等分成若干带噪信号单元。所述带噪信号单元由采样点组成,本发明 中选取了8KHz的采样频率,根据短时谱分析的需要,帧长一般设定成 10~35ms之间,本实施方式以32ms分帧,即一帧带噪信号单元设有256 个采样点,自然地,任意一帧带噪信号单元具有一定的帧长,本发明中 任意帧的帧长为256。为了防止相邻两帧的带噪信号单元间的块效应, 在分帧时要使相邻两帧的带噪信号单元之间有一定的混叠部分,即,本 帧数据中有D个数据为前一帧数据的部分数据,其中混叠部分描述如 下:
s(n)=d(m,D+n) 0≤n G ( k ) = 2 M * Σ n = 0 M - 1 g ( n ) e - j 2 πnk / M 0≤k≤M-1
其中,M=256,为离散傅利叶变换的计算长度。
这样就将带噪语音信号s从时域变换到了频域。
变换到频域后的带噪语音信号包括语音信号和噪声信号,该信号以 帧为单位划分为若干子带,则相邻子带设有子带区间。
本发明采用子带分析滤波器划分子带。划分子带操作很容易实现, 因为DFT操作已经相当于把本发明的8KHz的带宽等份成256等分。 根据采样定理约束,本发明选取256个子带中有效的、频率较低的129 个子带进行处理。
本发明,用如下公式计算每个子区间的能量并进行平滑:
E(k)=|G(k)|2 0≤k≤N-1
Pxn(m,k)=αPxn(m-1,k)+(1-α)E(k) 0≤k≤N-1
其中,Pxn表示经平滑后的每个子带区间的能量,m表示当前帧的序号, k表示当前的子带的序号,α=0.81056表示平滑因子。N为选取的子带 总数,即129。
经平滑后的每个子带区间的能量包括语音能量和噪声能量。
本发明,每个子带区间的噪声能量的寻找采用了R.Martin提出的 最小值统计方法找出每个子带区间的噪声能量。该方法通过假设噪声能 量是平稳和连续的,而语音能量是有间断的。所以可以对过去一段时间 内每个子区间平滑后的能量进行搜索,找到能量的最小值作为噪声能 量。
Pn(m,k)=min(Pxn(m,k),Pxn(m-1,k),...) 0≤k≤N-1
其中,m表示当前帧的序号,k表示当前的子带的序号,N=129, 搜索的时间大约为1.5秒钟。
该搜索的时间1.5秒钟大致等于188帧信号对应的时间长度。得到 该数据的具体方法为:考虑到75%的重叠,188帧对应的时间长度 188*0.032*(1-75%)=1.504。即本发明是对过去188帧经平滑后的每个子 带区间的能量进行比较,其中的最小值作为该子带当前时刻的噪声能 量。
求倍乘因子模块应用了幅度谱减法的原理,给要减去的噪声能量乘 以一个大于1的因子进一步提高语音增强的效果。本发明利用经平滑后 的每个子带区间的能量和统计出的噪声能量求出每个子带区间的倍乘 因子,计算公式为:
0≤k≤N-1
其中,q为倍乘因子,m表示当前帧的序号,k表示当前的子带的 序号,N=129子带总数,σ表示一个大于1的因子,对于频率为400Hz 以下的子带,它的值随频率的增大而减小,对于400Hz以上的子带就稳 定在1.3。由于统计出来的噪声往往比平均值要小,所以σ的作用是使 系统减去比原来更加多的噪声,达到更好的去噪效果。
将子带分析滤波器输出的每个子带区间变换到频域后的带噪语音 信号G乘以倍乘因子后,得到的就是该子带区间增强后的语音信号,129 个子带区间的增强后语音信号构成了全频带增强后的语音信号。
H(k)=q(k)*G(k) 0≤k≤N-1
其中,N=129子带总数,H(k)为第k个子带区间的语音增强后的信 号。
子带综合滤波器把全频带增强后的语音信号合成为语音谱。本发明 把129个子带的增强后的语音信号通过共轭变换求出256点完整的语音 谱。
H(k)={H(k) 0≤k≤N-1
H(M-k) N≤k≤M-1
}
其中,N=129子带总数,M=256,即帧长。
最后的时域变换及输出部分进行的操作有:
第一步:逆DFT变换,把语音谱变换到时间域得到变换到时域后的全 频带增强后的语音信号。
第二步:将相邻的变换到时域后的全频带增强后的语音信号的重叠 部分进行相加操作。
时域的变换用通用的逆DFT(逆离散傅利叶变换)实现。
0≤k≤M-1
其中,M=256,为帧长。h为变换到时域后的全频带增强后的语音 信号。
相邻的变换到时域后的全频带增强后的语音信号的重叠部分相加可
以用如下的方法来表示。
h′(n)={h(m,n)+h(m-1,n+L); 0≤n