数字信号处理课程设计 下载本文

内容发布更新时间 : 2024/11/17 16:29:54星期一 下面是文章的全部内容请认真阅读。

青 岛 科 技 大 学

《数字信号处理》课程设计报告

______________ 声音去噪与噪音定位

题 目

王传旭 指导教师__________________________ 吴旭东 学生姓名__________________________ 1208020213 学生学号__________________________

信息科学技术学院 _______________________________信息工程 122班 班 院(部)____________________________专业________________

_2014_年 _12_月 _21_日

1.目的与要求

数字信号处理课程设计

现有原始语音文件“语音001.wav”,以及混有正弦噪声的语音文件“original_voice_Noise_by_SineWaves.wav”,试解决如下问题: 1)试分析有几个正弦噪声,他们的频率是多少Hz?

2)设计滤波器,一并滤除这些噪声,并将滤除噪声后的语音序列,保存为“voice_noise_filteredOUT.wav”文件,用播放器试听该文件,并与原始语音文件“语音001.wav”比较,感受噪声抑制的效果。

3)利用实验一的相关计算方法,大致判定这些正弦噪声在原始语音文件“语音001.wav”中出现的位置。

2.主要技术和原理

2.1 学会使用matlab软件,掌握利用matlab进行数字信号处理的方法。 2.2 学会如何利用matlab库函数进行声音文件的输入与输出存储。 2.3 如何利用matlab绘制各种图形。

2.4 无限长单位冲击响应(IIR)数字滤波器与有限长单位冲击响应(FIR)数字滤波器的设计。 2.5 快速傅里叶变换。 2.6 线性卷积。

2.7 幅频响应与相频响应的分析。 2.8 对滤波器滤波效果的检测。

2.9 数字信号处理方法是以数值计算为特点,它与模拟电路处理信号相比具有精度高、抗干

扰能力强、便于集成、灵活性高等优点。

3.总体方案设计

3.1 声音文件的读入。

利用如下语句进行声音信号的读入:

[x,fs,nbits] = wavread(‘D:\\...\\...\\sound_and_noise3.wav’); 注意:声音文件路径要写对。

函数说明:(1)x为采样数据存放数组。在matlab的Command Window中通过输入whos x语

句可以发现x为列向量,通过x = x’;将其转化为行向量。

(2)fs为抽样频率,fs = 44100Hz。 (3)nbits为采样数据位宽,nbits = 16bit。

1

3.2 时域观察。

利用plot(x);语句可以画出采样信号的时域波形,但是由于采样点数太多,有207270个,所以在时域也观察不出有价值的信息。

3.3 频域分析。

利用freqz(x)函数,画出输入语音信号的幅频响应与相频响应,如下图:

观察幅频响应图,发现图中许多高峰,并不能定位噪音的频率,必须寻求其他的方法来确定噪音的频率,与同学交流后发现采用3.4中方法能准确的找出噪音的频率。

3.4 噪音频率的确定。

利用快速傅里叶变换,将时域信号x变换到频域分析。 f = fs*(0:x_len/2-1)/x_len; %模拟域频率

X = fft(xdeal,x_len); %快速傅里叶变换 plot(f,abs(X(1:x_len/2))); %画图

图中,三个最高峰即为噪音频率,原始信号中有3个不同频率的噪音,三个噪音的频率分别为:f1 = 3500Hz,f2 = 4600Hz,f3 = 5500Hz.

3.5 滤波器的设计

常用的滤波器有IIR(Infinite Impulse Response)数字滤波器与FIR(Finite Impulse Response filter)数字滤波器两种。

IIR滤波器在设计上可以借助成熟的模拟滤波器成果,如巴特沃斯(Butterworth)、契比雪夫(Chebyshev)、椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,现根据数字滤波器的指标,求出模拟滤波器的指标,然后设计出模拟滤波器,最后根据冲击响应不变法或双线性变换法,将模拟滤波器转化为数字滤波器。但是IIR数字滤波器的相位不好控制,对相位要求较高时,需加一个全通系统,对相位加以校正。

FIR滤波器采用窗函数法设计。与IIR滤波器相比,FIR滤波器有以下几个特点: (1)由于单位抽样响应h(n)是有限长的,因此FIR数字滤波器一定是稳定的。

(2)经延时移位,h(n)总可变成因果序列,所以FIR DF(Digital Filter数字滤波器)总可以由因果系统实现。

(3)h(n)为有限长,可以用FFT实现FIR DF。

(4)FIR的系统函数是Z-1的多项式,是全零点系统,故IIR的设计方法不适用。 (5)FIR的相位特性可以是相性的,因此,它有更广泛的应用。

(6)FIR滤波器可以设计出理想正交变换器、理想微分器、线性调频器、多通带多阻带等各种网络。

综上所述,选用窗函数法设计FIR滤波器来去除噪声。矩形窗函数法设计各种滤波器的原理:

(1) FIR低通滤波器:h(n)?(2) FIR全通滤波器:

sin(?c(n?N?1))2N?1?(n?)2n??0,N?1?

sin(?(n?当?c??,则低通变为全通:h(n)?N?1))2N?1?(n?)2n??0,N?1?

(3) FIR高通滤波器:

高通滤波器的频谱=全通滤波器的频谱-低通滤波器的频谱

N?1N?1sin(?(n?))sin(?c(n?))22h(n)hp??n??0,N?1? N?1N?1?(n?)?(n?)22(4) FIR带通滤波器:

带通滤波器的频谱=低通滤波器?H的频谱-低通?L滤波器的频谱。

N?1N?1))sin(?L(n?))22h(n)Bp??N?1N?1?(n?)?(n?)22(5) FIR带阻滤波器:

sin(?H(n?n??0,N?1?

带阻滤波器的频谱=全通滤波器的频谱-带通[?H,?L]滤波器的频谱

N?1N?1N?1))sin(?H(n?))sin(?L(n?))222h(n)BS??[?]N?1N?1N?1?(n?)?(n?)?(n?)222(6) FIR多通带多阻带滤波器:

sin(?(n?n??0,N?1?

滤波器的频谱=全通滤波器的频谱-带通[?H1,?L1]滤波器的频谱-带通[?H2,?L2]滤波器的频谱

N?1N?1N?1))sin(?H1(n?))sin(?L1(n?))222h(n)BS??[?]N?1N?1N?1?(n?)?(n?)?(n?)222 N?1N?1sin(?H2(n?))sin(?L2(n?))22?[?]n??0,N?1?N?1N?1?(n?)?(n?)22这里,需要设计一个四通带三阻带的FIR滤波器,阻带带宽设为100Hz,滤波器的阶数N=100,用matlab编程实现如下: %%%%构建FIR滤波器

fL1 = 3450; %噪声1的频率f1=3500Hz fH1 = 3550;

fL2 = 4550; %噪声2的频率f2=4600Hz fH2 = 4650;

fL3 = 5450; %噪音3的频率f3=5500Hz fH3 = 5550;

wL1 = 2*pi*fL1/fs; %化为数字角频率 wH1 = 2*pi*fH1/fs; wL2 = 2*pi*fL2/fs; wH2 = 2*pi*fH2/fs; wL3 = 2*pi*fL3/fs; wH3 = 2*pi*fH3/fs;

N = 1001; M = (N-1)/2; h = zeros(1,N); for n=0:1:N-1 if n==M;

h(n+1) = (pi - wH1 + wL1 - wH2 + wL2 - wH3 + wL3)/pi; else

sin(?(n?