余华数字信号处理实验二.docx
《余华数字信号处理实验二.docx》由会员分享,可在线阅读,更多相关《余华数字信号处理实验二.docx(13页珍藏版)》请在冰豆网上搜索。
余华数字信号处理实验二
《数字信号处理》实验二
学院:
电子与信息学院
专业班级:
通信工程4班
学号:
201130301443
姓名:
李腾辉
实验名称:
实验二
实验日期:
2013.11.21
第二次实验
一.实验目的
*理解采样率和量化级数对语音信号的影响
*设计滤波器解决实际问题
二.实验内容
①语音及音乐信号的采样、滤波
②音乐信号处理
三.实验细节
①语音及音乐信号的采样、滤波
1题目要求
实验要求:
利用电脑的声卡录一段语音信号及音乐信号,观察使用不同采样率及量化级数所得到的信号的听觉效果,从而确定对不同信号的最佳的采样率;分析音乐信号的采样率为什么要比语音的采样率高才能得到较好的听觉效果。
注意观察信号中的噪声(特别是50hz交流电信号对录音的干扰),设计一个滤波器去除该噪声。
2解答过程
我分别使用了8k,16k,32k三种采样率录制了三段语音信号,量化级数均采用16位,通过反复的回放对比,发现虽然高于8k的采样率的声音更加饱满,音质更佳,但是对于语音信号来说,8k采样率用于通话交流系统已经足够了,采样率的提高对于音质的提升不大,反而需要更大的信道带宽,得不偿失。
同样的,我又分别录制了8k,16k以及32k三种采样率的音乐信号,通过反复对比,可以明显感觉到8k采样率的音乐明显少了许多频率成分,失真严重,高音部分基本听不到了,总之对于音乐信号,8k采样率太低,不适合音乐的欣赏,16k采样率较8k来说频率成分丰富了很多,音乐更加优美动听,32k采样率在此基础上音质有所提升,但个人感觉提升不是很大。
我又对比了16k音乐信号的三种不同量化电平(8bit,16bit,32bit)的效果,显然地8bit对应只有256个量化电平,音乐听起来相当粗糙,明显不合适,16bit已经达到了65536个量化电平,是当前音乐主流的量化数,32bit占用了大量了存储空间,音质提升也不大。
综上分析,对于语音信号,采用8kHz的采样率,8位量化电平数已经足以进行语音交流;而对于音乐信号,最好能达到16kHz以上的采样率,16位的量化电平足以。
附录制的语音音乐信号图
下面是我针对voice_8k.wav这个语音信号,对其50Hz噪声进行消除的程序。
我首先分析了这个信号的时域和频域的谱图,如下图所示。
这段语音信号的内容是“我爱祖国天安门”,从时域图来看,这段信号大约长4秒,全程即使在没有语音的部分也可以看出有小的上下波动,这即是50Hz噪声信号加进去产生的。
再看它的频谱图,我用了40960点的DFT变换,由于实信号的对称性,我截取了前20480点作出上图,可以明显看到,在50Hz处有一个明显的冲激,这就是噪声信号,下面我将设计一个50Hz的陷波器来消除这个滤除这个噪声。
陷波器的传输函数为
其中f为陷波器要滤除信号的频率,a为与陷波器深度相关的参数,a越大,深度越深。
由此设计一个f=50的陷波器如下
经过此陷波器后的语音信号如下所示:
可以看出时域图中原来的杂波干扰减少了。
可以看出,原始信号中50Hz附近的冲激被抑制掉了。
通过对比滤波前后的语音信号可以发现,滤波后的声音清晰了些。
总图对比:
=====================================================
下面贴出程序的代码:
f0=50;%50Hz陷波器
fs=8000;%采样率8000Hz
Ts=1/fs;
NLen=40960;%NLen点DFT变换
apha=-2*cos(2*pi*f0*Ts);
beta=0.96;
b=[1apha1];
a=[1apha*betabeta^2];
figure
(1);
freqz(b,a,NLen,fs);%陷波器特性显示
x=wavread('voice2_8k_noise.wav');%原信号
y=filter(b,a,x);%陷波器滤波处理
n=1:
length(x);
m=1:
NLen;
xfft=fft(x,NLen);%对信号进行频域变换
xfft=xfft.*conj(xfft)/NLen;
y1=fft(y,NLen);
y2=y1.*conj(y1)/NLen;
figure
(2);%滤除前后的信号对比。
subplot(2,2,1);plot(n,x);grid;
xlabel('Time(s)');ylabel('Amplitude');title('Inputsignal');
subplot(2,2,3);plot(n,y);grid;
xlabel('Time(s)');ylabel('Amplitude');title('Filteroutput');
subplot(2,2,2);plot(m*fs/NLen,xfft);axis([0400000.15]);grid;
xlabel('Frequency(Hz)');ylabel('Magnitude(dB)');title('Inputsignal');
subplot(2,2,4);plot(m*fs/NLen,y2);axis([0400000.15]);grid;
xlabel('Frequency(Hz)');ylabel('Magnitude(dB)');title('Filteroutput');
音乐信号处理
1题目要求
*设计函数实现一段语音或音乐的回声产生
*设计均衡器,使得得不同频率的混合音频信号,通过一个均衡器后,增强或削减某些频率区域,以便修正低频和高频信号之间的关系
2.1解答过程
回音可以由简单的延时单元产生。
直达声和在R抽样周期后出现的一种单个回音,可以用梳状滤波器产生,微分方程为:
y[n]=x[n]+αx[n-R]|α|<1
传输函数为:
H(z)=1+αz-R
梳状滤波器时域和频域波形图如下所示
时域上形状大致相同,幅度有微小变化。
频谱上滤波前后两边跳动变换较大,幅度变化较大。
也可以使用全通滤波器,全通滤波器的传递函数公式为
H(Z)=y(Z)/X(Z)=(-K+Z^(-m))/(1-K*Z^(-m)),其中m为回声延时取样,k为反馈系数。
用直接1型表示这个传递函数则为:
y(n)=k*x(n)+x(n-m)+k*y(n-m)
可见其实际上是一个简单的IIR滤波器,时间n的输出有时间n的输入和m点之前的输入与输出计算而得。
由于这个IIR滤波器的频率响应为水平直线,所以被称为全通滤波器。
全通滤波器时域和频域波形图如下所示
对比梳状滤波器和全通滤波器,发现全通滤波器产生的回声效果更佳,可构成一个混响系统,而梳状滤波器则只是单纯的延时叠加。
附程序:
单回声滤波器
[y,fs,bits]=wavread('voice2_8k.wav');
y=y(:
1);
z=[zeros(3000,1);y];
y=[y;zeros(3000,1)];
a=0.5;
R=5000;%滤波器阶数设置,其值越高,回声越明显
Bz1=[1,zeros(1,R-1),a];%单回声滤波器系统函数分子
Az1=
(1);%单回声滤波器系统函数分母
y2=filter(Bz1,Az1,y);%单回声滤波器系统函数
Y2=fft(y2,6001);
[h,w]=freqz(Bz1,Az1);%求设计的滤波器频谱
subplot(3,2,1);plot(abs(h));
title('单回声滤波器幅频响应');
subplot(3,2,2);plot(angle(h));
title('单回声滤波器相频响应');
subplot(3,2,3:
4);plot(y2);title('单回声滤波器时域图');
subplot(3,2,5);plot(abs(Y2));title('单回声滤波器幅频');
subplot(3,2,6);plot(angle(Y2));title('单回声滤波器相频');
sound(y2,fs,bits);
全通滤波器
[y,fs,bits]=wavread('voice2_8k.wav');
y=y(:
1);
z=[zeros(3000,1);y];
y=[y;zeros(3000,1)];
a=0.5;
R=5000;%滤波器阶数设置,其值越高,回声越明显
Bz1=[a,zeros(1,R-1),1];%全通滤波器系统函数分子
Az1=[1,zeros(1,R-1),a];%全通滤波器系统函数分母
[h,w]=freqz(Bz1,Az1);
yy2=filter(Bz1,Az1,y);
YY2=fft(yy2,6001);
subplot(3,2,1);plot(abs(h));
title('全通滤波器幅频响应');
subplot(3,2,2);plot(angle(h));
title('全通滤波器相频响应');
subplot(3,2,3:
4);plot(yy2);title('全通结构时域图');
subplot(3,2,5);plot(abs(YY2));title('全通结构幅频');
subplot(3,2,6);plot(angle(YY2));title('全通结构相频');
sound(yy2,fs,bits);
2.2解答过程
均衡器的基本功能是调节各频段的信号强弱,为了满足该功能,采用如下的方法:
Step1:
设计出对应八个频段的八个带通滤波器;
Step2:
对原始信号分八路用八个带通滤波器进行滤波;
Step3:
将八个滤波器的滤波结果加权求和,权值的设计与均衡器的调节要求一致。
这样最终得到的结果便是所需要的均衡结果。
其中第2步中各带通滤波器的输入信号均为原始信号,而不是“串联”地滤波。
设原始输入信号为x(n),第i路的输出信号为
,第i路的权值为
,均衡器的输出信号为y(n),则有
(5)
(6)
式中,
、
为滤波器的参数,N为滤波器的阶数。
设计的均衡器如下:
8个滚动条分别对8个频率段进行处理,每个滚动条的值都是从0到1,初始值为0.5。
这一部分的原理是将采样点N分成0~(
)和
~N两部分,两部分之间对应相等。
然后对滚动条上的值进行对应处理,实现程序如下:
globalcash;
y=cash;%获得全局变量值
Fs=22000;
t=str2double(get(handles.time,'String'));
N=2^ceil(log2(Fs*t));%获得采样点的值
P=fft(y,N);
Pyy=2*sqrt(P.*conj(P))/N;
f=Fs*(0:
N/2-1)/N;
f(N/2+1:
N)=f(N/2:
-1:
1);%采样点分段
n=8;
fmax=max(f);%在频率值中寻找最大值
iffmax>30
s=get(handles.s1,'Value');%从滚动条1获得一个0-1之间的值,
%但只能缩小该频段声音信号
a=find(f>=30&f<=100);%在30-100Hz的频率段进行处理
b=(s*2)^n;%s*2可以实现对声音信号的放大和缩小
Pyy(a)=Pyy(a)*b;P(a)=(P(a).*b).*b;%将系数叠加在原信号上
end
iffmax>100%对100-200Hz信号的处理
s=get(handles.s3,'Value');
a=find(f>=100&f<=200);
b=(s*2)^n;
Pyy(a)=Pyy(a)*b;P(a)=(P(a).*b).*b;
end
iffmax>200%对200-500Hz信号的处理
s=get(handles.s4,'Value');
a=find(f>=200&f<=500);
b=(s*2)^n;
Pyy(a)=Pyy(a)*b;P(a)=(P(a).*b).*b;
end
四.实验感想
通过此次试验,我理解了采样率和量化级数对语音和音乐信号的影响,学会了如何设计一个简单的数字滤波器进行回声的合成、频率的均衡。
总体而言,这次试验不只让我对数字信号处理有了更深的理解,更让我明白到在程序设计中会遇到很多问题,这些都是在平时学习中所不曾注意到的,面对这些问题通过查阅资料、网络、和同学的探讨,最终是可以得到很好地解决的。