1、课程设计任务书学生姓名: 专业班级: 电信1204 指导教师: 工作单位: 信息工程学院 题 目: 程控宽带放大器的设计 初始条件:程控宽带放大器是电子电路中常用模块,在智能仪器设备及嵌入式系统中有广泛的应用。因此对于电子信息专业的技术人员来说,熟练掌握该项技术很有必要。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)输入阻抗1K,单端输入,单端输出,放大器负载电阻为600;(2)3dB通频带10kHz6MHz,在20kHz5MHz频带内增益起伏 y,fs,nbits=wavered (OriSound); %把语音信号加载入Matlab 仿真软件平台中
2、然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:Xk=fft(xn,N)参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。其程序如下:y,fs,nbits=wavread (01south_girl.wav); %原始文件是南方姑娘的片段sound(y,fs,nbits); %回放语音信号N=
3、 length (y) ; %求出语音信号的长度Y=fft(y,N); %傅里叶变换subplot(2,1,1);plot(y,b);title(原始信号波形);grid;subplot(2,1,2);plot(abs(Y),b);title(原始信号频谱);grid;程序结果如下图1:图1 原始信号波形及频谱3.3 语音信号加噪与频谱分析MATLAB中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数 。我们可以直接应用两个函数:一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。在本次课程设计中,
4、我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生nn服从标准高斯分布的随机数矩阵,后者产生mn的随机数矩阵。在这里,我们选用Randn(m,n)函数。语音信号添加噪声及其频谱分析的主要程序如下:y,fs,nbits=wavread (01south_girl.wav);N = length (y) ; %求出语音信号的长度Noise=0.01*randn(N,2); %随机函数产生噪声Si=y+Noise; %语音信号加入噪声 sound(S
5、i);subplot(2,1,1);plot(Si,b);title(加噪语音信号的时域波形);S=fft(Si); %傅里叶变换subplot(2,1,2);plot(abs(S),b); title(加噪语音信号的频域波形);程序结果如下图2:图2 加噪后的波形及频谱分析3.4 设计FIR和IIR数字滤波器IIR滤波器和FIR滤波器的设计方法完全不同。IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法,常用的方法有窗函数
6、法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。对于数字高通、带通滤波器的设计,通用方法为双线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下:(1)确定所需类型数字滤波器的技术指标。(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为=2/T tan(0.5) (3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。(4)设计模拟低通滤波器。(5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。(6)采用双线性变换法将相应类型
7、的过渡模拟滤波器转换成所需类型的数字滤波器。我们知道,脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。为了克服之一缺点,可以采用双线性变换法。下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步骤:(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。(3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。如前所述,IIR滤波器和FIR滤波器的设计方法有很大的区别。下
8、面我们着重介绍用窗函数法设计FIR滤波器的步骤。如下:(1)根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。(2)构造希望逼近的频率响应函数。(3)计算h(n).。(4)加窗得到设计结果。接下来,我们根据语音信号的特点给出有关滤波器的技术指标:低通滤波器的性能指标:fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB高通滤波器的性能指标:fp=3500Hz,fc=4000Hz,As=100dB,Ap=1dB;带通滤波器的性
9、能指标:fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1和ellip设计IIR滤波器,利用Matlab中的函数freqz画出各步步器的频率响应。hn=fir1(M,wc,window),可以指定窗函数向量window。如果缺省window参数,则fir1默认为哈明窗。其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman窗,其相应的都有实现函数。MATLAB信号处理工具箱函数buttp bu
10、ttor butter是巴特沃斯滤波器设计函数,其有5种调用格式,本课程设计中用到的是N,wc=butter(N,wc,Rp,As,s),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下:B,A=cheby1(N,Rp,wpo,ftypr)B,A=cheby1(N,Rp,wpo,ftypr,s)函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。3.
11、5 用滤波器对加噪语音信号进行滤波用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。函数fftfilt用的是重叠相加法实现线性卷积的计算。调用格式为:y=fftfilter(h,x,M)。其中,h是系统单位冲击响应向量;x是输入序列向量;y是系统的输出序列向量;M是有用户选择的输入序列的分段长度,缺省时,默认的输入向量的重长度M=512。函数filter的调用格式:yn=filter(B,A.xn),它是按照直线型结构实现对xn的滤波。其中xn是输入信号向量,yn输出信号向量。代
12、码如下:y,fs,bits=wavread(01south_girl.wav); %读音乐文件,该文件已放在默认路径下sound(y,fs,bits); %播放原音乐文件n = length (y); %求出语音信号的长度 Noise=0.01*randn(n,2); %随机函数产生噪声s=y+Noise; %语音信号加入噪声 wavwrite(s,fs,bits,01加噪后音乐.wav); %保存加噪后的文件sound(s,fs,bits); %播放加噪后的文件S=fft(s); %傅里叶变换 %-IIR带阻滤波器 的设计 Start-%Fp1=400; Fp2=3800; Fs1=600;
13、 Fs2=3600; Ft=8000; Ap1=1; Ap2=1; As=50; dbs=fdesign.bandstop(Fp1,Fs1,Fs2,Fp2,Ap1,As,Ap2,Ft); hdbs=design(dbs,cheby1) b,a = sos2tf(hdbs.sosMatrix, hdbs.ScaleValues); %取得滤波器系数h,w=freqz(b,a); %得到频率响应figure(1);plot(w*8000*0.5/pi,abs(h); %绘制频率响应title(IIR带阻滤波器); grid;%-IIR带阻滤波器 的设计 end-%z21=fftfilt(b,s);
14、 z21=z21*10000*0.5;sound(z21,fs,bits); %播放带阻滤波后的文件wavwrite(z21,fs,bits,02带阻滤波后.wav); %保存带阻滤波后的文件m21=fft(z21); %求滤波后的信号 figure(2); subplot(2,2,1); plot(abs(S),b); title(滤波前信号的频谱,fontweight,bold);grid; subplot(2,2,2); plot(abs(m21),b); title(滤波后信号的频谱,fontweight,bold); grid; subplot(2,2,3); plot(s,b);
15、title(滤波前信号的波形,fontweight,bold); grid; subplot(2,2,4); plot(z21,b); title(滤波后的信号波形,fontweight,bold); grid;3.6 实验现象记录及分析上述程序运行后,依次出现以下现象:一,首先是读取并播放原始音乐文件;二,对原文件加入噪声,并播放加噪后的音乐文件;这个地方有如下一句:Noise=0.05*randn(n,2); %随机函数产生噪声其中 0.05是一个系数,通过改变它的大小,可以控制添加噪声的大小。在此处,0.05和0.01的差别就很大了,0.01只是可以听到噪声,但是勉强还可以“欣赏”音乐;
16、但是调到0.05以后,噪声会相当明显,就是“颗粒”状的噪音。我添加了播放加噪音乐的语句:sound(s,fs,bits); %播放加噪后的文件通过它可以了解加噪后的效果,与之前播放的原文件进行对比。然后还有一句是保存加噪后的音乐文件,方便进一步分析:wavwrite(s,fs,bits,01加噪后音乐.wav); 三,然后创建滤波器,并绘出其频率特性曲线。这里我选择的是带阻滤波器,因为我们的音乐原文件频率主要集中在较低频和相对较高频的地方(本报告的前面已经绘出了原始信号的频谱图,由它而知),而所加噪声在频率域内几乎成均匀分布(这一点从加噪后的信号频域波形可以看出来),所以,我就采用带阻滤波器来
17、进行滤波。然后还有一句,保存带阻滤波后的音乐文件,方便进一步分析。wavwrite(z21,fs,bits,02带阻滤波后.wav); 带阻滤波的频谱特性图如下图3所示:图3四,利用上一步创建的滤波器对加噪后的音乐文件进行滤波。然后播放滤波后的音乐文件。这个方便与前面的滤波前的音乐文件进行对比分析,滤波效果一听就对比出来了。五,为了方便进一步定量、直观的分析,最后将滤波前后的时域、频域的波形画在一个figure里面。如下图4所示。从该图中对比滤波前后的两个频谱图可以看出,处于阻带内的噪声频率大部分都被滤掉了;对比滤波前后的两个时域波形图,可知波形的确有了改善;对比滤波后的时域波形和前面的原始信
18、号时域波形,可以看出,二者基本一致。而在实验过程中通过声音回放各个阶段的文件,确认的确是起到了较好的滤波作用。3.7调试过程遇到的问题及解决办法调试程序的过程中遇到了很多问题,但是正是在遇到问题、解决问题的过程中学到了新的知识。比如对原始音乐文件加噪后,要播放该加噪文件,最开始采用的是:sound(s); %播放加噪后的文件但是播放的时候只能听到嗡嗡的声音,我原以为加入噪声后就应该这样,但是其实并不是这样的。应该加上采样频率fs和采样位数bits:图4sound(s,fs,bits); %播放加噪后的文件接着又遇到一个问题,就是我虽然在后面加了播放滤波后的文件的语句,但是仿真的时候给我的感觉是
19、并没有听到这个地方有放出声音,感觉是播放完了加噪后的音乐文件后直接就开始进行最后的绘图。调试到这里,我感觉很困惑,因为程序运行的时候并没有提示任何出错信息,能执行的最后一步绘图操作,说明中间的步奏并没有错误,至少没有语法上的错误。然后我无意中注意到,在最后所绘制的图中,滤波前的时域波形幅值大概是0.1,而原始音乐文件的时域波形幅值大概是0.05,但是滤波后的时域波形幅值大概只有0.000001。我就猜想,是不是因为它这个幅值太小,所以播放的时候几乎听不到呢。根据这个思路,我就加大了滤波输出信号的幅度。如下:z21=z21*10000*0.5;然后再来仿真,果然,听到了滤波输出后的音乐文件。为了
20、能让滤波前后的对比效果更加明显,我又增大了噪声的幅度:Noise=0.05*randn(n,2); %随机函数产生噪声4总结语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,课题更多的还是体现了数字信号处理技术。从课题的中心来看,课题“含噪声的语音信号分析与处理设计”是希望将数字信号处理技术应用于语音处理这一实际领域,这里就是指对语音及加噪、滤波(即去噪)处理。作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。这一过程的实现,用到了处理数字
21、信号的强有力工具MATLAB。通过MATLAB里几个命令函数的调用,很轻易的在实际语音与数字信号的理论之间搭了一座桥。课题的特色在于它将语音信号看作一个向量,于是就把语音数字化了。那么,就可以完全利用数字信号处理的知识来解决语音及加噪处理问题。我们可以像给一般信号做频谱分析一样,来对语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。通过比较加噪前后,语音的频谱和语音回放,能明显的感觉到加入噪声后回放的声音与原始的语音信号有很大的不同,前者随较尖锐的干扰啸叫声。从含噪语音信号的频谱图中可以看出含噪声的语音信号频谱,在整个频域范围内分是布均匀。其实,这正是干扰所造成的。通过滤波前
22、后的对比,低通滤波后效果最好,高通滤波后的效果最差。由此可见,语音信号主要分布在低频段,而噪声主要分布在高频段。而本次试验中,我采用的是带阻滤波器,保留了低频分量,滤除了相对处于高频的噪音信号。参考文献1 刘泉,阙大顺数字信号处理原理与实现北京:电子工业出版社,20052 高西全,丁玉美数字信号处理第3版北京:西安电子科技大学出版社,20083 张磊,毕靖,郭莲英MATLAB实用教程北京:人民邮电出版社,20084 张威MATLAB基础与编程入门西安:西安电子科技大学出版社,20065 周利清,苏菲数字信号处理基础北京:北京邮电大学出版社,2005本科生课程设计成绩评定表姓 名苗强强性 别男专业、班级电子信息工程、1204班课程设计题目:含噪声的语音信号分析与处理设计课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日14