语音信号滤波与逆滤波效果分析

设滤波器传递函数为H(z),则输入信号X(z)到输出信号Y(z)的滤波变换是:

         Y(z)=X(z)H(z)

         滤波时输入信号X(z)和系统函数H(z)已知,通过滤波过程计算输出信号Y(z);逆滤波时则是输出信号Y(z) 和系统函数H(z)已知,试图从输出信号Y(z)中恢复输入信号X(z),即实现X(z)=Y(z)/H(z)变换。

         如果滤波过程没有让X(z)损失任何成分,只是各种频谱成分数值变化了,则从Y(z)通过逆滤波可以几乎完整地恢复出X(z)。例如,一个单频正弦波,通过一个截止频率远高于信号频率的低通滤波器,则从滤波后信号恢复原始信号很容易,只要把系统函数H(z)的分子分母颠倒作为逆滤波器系统函数就可以了,恢复信号误差几乎为0。但是,如果过滤的是个语音信号,由于频谱损失难免(变成0值),则通过逆滤波恢复出的原始信号就不那么理想了。

         下面总结几个主要概念

一、滤波器与逆滤波器

         MATLAB中滤波与逆滤波都可以用filter实现,只要根据滤波器参数指标设计出相应形式的滤波器就行。滤波器形式可以有多种选择。例如,设计一个4阶低通Butterworth滤波器,分别实现滤波与逆滤波。其MATLAB代码是

         [B, A] = butter(4, 0.5);

         SigY = filter(B,A,SigX);

         xSig = filter(A,B,SigY);

其中B,A是数字滤波器系数;SigX是输入信号时间序列,SigY是输出信号时间序列,xSig是SigX的逆滤波信号。下面两个图是所设计4阶Butterworth滤波器滤波和逆滤波的幅频特性和相频特性曲线图,可以看到滤波与逆滤波特性是完全互补的。

二、正弦信号的滤波与逆滤波

         产生一个单频正弦波信号,用上面的滤波器滤波,再逆滤波,绘图比较结果

% 产生正弦波并滤波,再对滤波后信号逆滤波

t           = 0:0.02:2;    

originalSig    = sin(2*pi*40*t);

[B, A]            = butter(4,0.5);

filteredSig    = filter(B,A,originalSig);

inversedSig = filter(A,B,filteredSig);

% 绘图比较原始信号和逆滤波信号

xI = 1 : length(originalSig);

subplot(211);

plot(xI, originalSig, 'k-', xI, inversedSig, 'r--');

% 原始信号与逆滤波信号样点差值的绝对值

subplot(212);

xDiff = abs(originalSig - inversedSig);

plot(xDiff);

三、语音信号的滤波与逆滤波

         取MATLAB R2018b中一个语音信号,用上面的滤波器滤波。代码如下:

%  strong.mat文件中有两个信号:英语单词strong的男女声发音

load(fullfile(matlabroot,'examples','signal','strong.mat'))

originalSig   = his;

[B, A]           = butter(4,0.5);

filteredSig    = filter(B,A,originalSig);

inversedSig = filter(A,B,filteredSig);

% 绘图比较原始信号和逆滤波信号,

xI = 1 : length(originalSig);

subplot(211);

plot(xI, originalSig, 'k-', xI, inversedSig, 'r--');

% 误差信号:原始信号与逆滤波信号样点差的绝对值

subplot(212);

xDiff = abs(originalSig - inversedSig);

plot(xDiff);

可以看到,虽然逆滤波后的波形与原始波形还是高度重叠,但是误差数值与正弦波情况下相比,已经上升了几个数量级。

 

         实际中,一般不知道滤波器传递函数,都是假设其为具有某些参数的某种形式滤波器,然后通过一些优化原则得到模型参数。例如,处理室内混响语音时,一般假设混响语音是室内声源直达麦克风的信号与六个墙面(四面墙加上地面和屋顶)多次反射并衰减信号的组合,把这种思路建模为一个室内冲激响应。想得到原始语音,就要对混响语音逆滤波。这时候就要想办法通过混响信号找到一个逆滤波器,通过逆滤波尽可能恢复原信号。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值