日番谷数字信号处理课程设计说明书.docx

上传人:b****3 文档编号:24724159 上传时间:2023-05-31 格式:DOCX 页数:16 大小:103.35KB
下载 相关 举报
日番谷数字信号处理课程设计说明书.docx_第1页
第1页 / 共16页
日番谷数字信号处理课程设计说明书.docx_第2页
第2页 / 共16页
日番谷数字信号处理课程设计说明书.docx_第3页
第3页 / 共16页
日番谷数字信号处理课程设计说明书.docx_第4页
第4页 / 共16页
日番谷数字信号处理课程设计说明书.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

日番谷数字信号处理课程设计说明书.docx

《日番谷数字信号处理课程设计说明书.docx》由会员分享,可在线阅读,更多相关《日番谷数字信号处理课程设计说明书.docx(16页珍藏版)》请在冰豆网上搜索。

日番谷数字信号处理课程设计说明书.docx

日番谷数字信号处理课程设计说明书

广西工学院

数字信号处理课程设计

说明书

 

设计题目语音信号的处理与滤波

 

系别计算机工程系

专业班级通信062班

学生姓名杨翠云

学号200600402055

指导教师周坚和

日期2009年1月2日

目录

摘要…………………………………………3

一.设计内容………………………………3

二.滤波器设计原理………………………3

三.设计步骤………………………………4

1.语音信号的采集…………………………………4

2.实际问题的解决…………………………………5

3.比较8000个和16000个数据点的幅度和相位谱…7

4.滤波器的设计及对语音信号进行滤波…………8

四.心得体会……………………………14

五.参考文献……………………………14

摘要:

本课程设计主要是对数字信号处理中所学知识在MATLAB中的综合应用,对语音信号的采样及进行频谱分析,滤波器的设计及利用滤波器对信号的滤波。

——装订线——

一、设计内容:

语音信号的处理与滤波:

使用声音相关函数录制3秒左右自己的声音。

掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数;并解决实际发出声音落后录制动作半拍的现象。

画出采样后语音信号的时域波形和频谱图。

对录制的声音信号分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同。

给定滤波器的性能指标,分别设计一个IIR低通与带通滤波器,并对语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的语音信号进行对比,分析语音信号的变化。

二、滤波器设计原理:

滤波器,顾名思义,就是对系统的输入信号进行滤波。

本设计采用Filter()函数对语音信号进行滤波。

并采用IIR数字滤波器。

其基本步骤(以低通数字滤波器为例):

1)确定数字滤波器的性能指标:

通带临界频率fp、阻带临界频率fr;通带内的最大衰减Ap;阻带内的最小衰减Ar;采样周期T;

2) 确定相应的数字角频率,ωp=2πfpT;ωr=2πfrT;

3) 计算经过预畸的相应模拟低通原型的频率,

4) 根据Ωp和Ωr计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函数Ha(s);

5) 用双线性变换公式代入Ha(s),把s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。

双线性变换不存在混叠问题。

求出所设计的传递函数H(z);即

三.设计步骤

1.语音信号的采集

MATLAB中有关声音(wave)录制、读取、播放、存储和读取的函数有wavrecord();wavread();wavwrite();sound().录制3秒左右自己的声音,画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。

程序代码如下:

fs=8000;%采样频率

y=wavrecord(3*fs,fs,'double');%录制3秒自己的声音

wavplay(y,fs);%播放录音

wavwrite(y,fs,'E:

/音乐');%存储声音

wavread('E:

/音乐');%读取声音

subplot(1,2,1);

plot(abs(y));%画出声音采样后的时域波形

gridon;

title('信号的时域波形');

xlabel('时间');

ylabel('振幅');

y1=fft(y,1024);%对信号做fs点FFT变换

subplot(1,2,2);

f=fs*(0:

499)/1024;%采样点数

plot(f,abs(y1(1:

500)));%画出原始语音信号的幅频响应图

gridon;

title('fft后信号的频谱特性');

xlabel('频率');

ylabel('振幅');

2.实际发出声音落后录制动作半拍问题的解决

录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象。

在MATLAB中先用wavread(‘filename’,’’size’)函数读取声音长度,然后再用wavread('filename',[n1n2])函数从n1点开始读取声音,即去掉了前面的无效点。

程序代码如下:

size=wavread('E:

/音乐','size');%读取声音长度

size=24000;

p=wavread('E:

/音乐',[200024000]);%去除前2000个无效点

wavplay(p,8000);%播放声音

wavwrite(p,8000,'E:

/my');%声音的存储

wavread('E:

/my');%读取声音

subplot(1,2,1)

gridon;

plot(abs(p))%画出去除无效点后的时域波形

title('去除无效点后的时域波形');

xlabel('时间');

ylabel('振幅');

y1=fft(p,1024);%对信号做fs点fft变换

subplot(1,2,2)

gridon;

fs=8000;%采样频率

f=fs*(0:

499)/1024;%采样点数

plot(f,abs(y1(1:

500)))%绘出去除无效点后信号的幅频响应图

title('fft后声音的频谱特性');

xlabel('频率');

ylabel('振幅');

比较去除无效点前后波形可知:

其时域波形和频谱图大体一致,从其时域可看出去除无效点后的波形更贴近Y轴,更加接近实际的声音图形。

 

3.比较8000个和16000个数据点的幅度和相位谱

程序代码如下:

y=wavread('E:

/my');%读取声音

y2=fft(y,8000);

subplot(2,2,1);

f1=fs*(0:

499)/8000;%采样点数

plot(f1,abs(y2(1:

500)));%绘出其幅度图

gridon;

title('8000点的幅度图');

xlabel('频率');

ylabel('振幅');

subplot(2,2,2);

plot(angle(y2));%绘出其相位谱

gridon;

title('8000点的相位谱');

xlabel('频率');

ylabel('相位');

y3=fft(y,16000);

subplot(2,2,3);

f2=fs*(0:

499)/16000;%采样点数

plot(f2,abs(y3(1:

500)));%绘出其幅度图

gridon;

title('16000点的幅度图');

xlabel('频率');

ylabel('振幅');

subplot(2,2,4);

plot(angle(y3));%绘出其相位谱

gridon;

title('16000点的相位谱');

xlabel('频率');

ylabel('相位');

由其幅度谱可看出:

点数越多,其频率越小。

其幅度与点数大致成正比。

4.滤波器的设计及对语音信号进行滤波

设计:

在Matlab中,使用函数butter,cheby1等函数设计IIR滤波器;由给定的性能指标将数字频率预畸为模拟滤波器频率,即w=2/Ttan(W/2).求契比雪夫I型滤波器阶数和滤波器截止频率wn的函数:

[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs)。

然后求传输函数分子和分母的系数;即:

[num,den]=cheby1(N,Rp,Wn)。

最后利用巴特沃思逼近将模拟系数转换为数字系数,并用freqz(num,den)函数画出其频率响应。

滤波:

采用Filter()函数对语音信号进行滤波。

给出各滤波器的性能指标:

(1)低通滤波器性能指标:

fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB。

(2)高通滤波器性能指标:

fc=4800Hz,fb=5000HzAs=100dB,Ap=1dB。

(3)带通滤波器性能指标:

fp1=1200Hz,fp2=3000Hz,fsc1=1000Hz,fsc2=3200Hz,As=100dB,Ap=1dB。

为了比较各种滤波器对信号滤波的效果,本设计采用IIR低通与IIR带通。

程序代码如下:

1)IIR低通滤波器设计:

fs=7000;%采样频率

Wp=1000;%通带临界频率

Ws=1200;%阻带临界频率

Rp=1;%阻带内的最小衰减

Rs=100;%通带内的最大衰减

wc=2*fs*tan(2*pi*Wp/(2*fs));%将数字频率预畸为模拟滤波器的通带最大频率

wt=2*fs*tan(2*pi*Ws/(2*fs));%将数字频率预畸为模拟滤波器的阻带最小频率

[N,wn]=cheb1ord(wc,wt,1,100,'s');%求阶数N和滤波器截止频率wn

[B,A]=cheby1(N,1,wn,'low','s');%传输分子和分母的系数

[num,den]=bilinear(B,A,8000);%模拟转换为数字低通系数向量

freqz(num,den);%求频率响应

gridon;

title('低通滤波器')

对语音信号的滤波:

y=wavread('E:

/my');%读取声音

y1=fft(y,1024);%对声音做fs点FFT变换

fs=7000;%采样频率

Wp=1000;%通带临界频率

Ws=1200;%阻带临界频率

Rp=1;%阻带内的最小衰减

Rs=100;%通带内的最大衰减

wc=2*fs*tan(2*pi*Wp/(2*fs));%将数字频率预畸为模拟滤波器的通带最大频率

wt=2*fs*tan(2*pi*Ws/(2*fs));%将数字频率预畸为模拟滤波器的阻带最小频率

[N,wn]=cheb1ord(wc,wt,1,100,'s');%求出N和阻带截止频率wn

[B,A]=cheby1(N,1,wn,'low','s');%传输分子和分母的系数

[num,den]=bilinear(B,A,7000);%模拟转换为数字低通系数向量

y2=filter(num,den,y);%对声音滤波

sound(y2,8000,16);%播放滤波后的声音

wavwrite(y2,fs,'E:

/低通');%声音的存储

subplot(1,2,1)

gridon

plot(abs(y2))%滤波后信号的时域波形

title('低通后信号的时域波形')

xlabel('时间');

ylabel('振幅');

y3=fft(y2,1024);%将滤波后的声音进行fft的1024点变换

subplot(1,2,2)

gridon;

f=fs*(0:

499)/1024;

plot(f,abs(y3(1:

500)));

title('低通后信号的频谱');

xlabel('频率');

ylabel('振幅');

由低通后信号的频谱易看出:

语音信号经过低通滤波器后,滤除了高频部分,与理论相符。

2)IIR带通滤波器设计:

fs=8000;

Wp=[12003000]/4000;%归一化通带数字截止频率

Ws=[10003200]/4000;%归一化阻带数字截止频率

Rp=1;%阻带内的最小衰减

Rs=100;%通带内的最大衰减

[n,Wn]=buttord(Wp,Ws,Rp,Rs);%求阶数N和滤波器截止频率Wn

[b,a]=butter(n,Wn);%传输分子和分母的系数

freqz(b,a);%求频率响应

gridon;

title('带通滤波器')

对语音信号的滤波:

y=wavread('E:

/my');%读取声音

fs=8000;

Wp=[12003000]/4000;%归一化通带数字截止频率

Ws=[10003200]/4000;%归一化阻带数字截止频率

Rp=1;%阻带内的最小衰减

Rs=100;%通带内的最大衰减

[n,Wn]=buttord(Wp,Ws,Rp,Rs);%求阶数N和滤波器截止频率Wn

[b,a]=butter(n,Wn);%传输分子和分母的系数

y2=filter(b,a,y);%对声音滤波

sound(y2,8000,16)%播放滤波后的声音

wavwrite(y2,fs,'E:

/带通');%声音的存储

subplot(1,2,1)

gridon

plot(abs(y2))%滤波后信号的时域波形

title('带通后信号的时域波形');

xlabel('时间');

ylabel('振幅');

y1=fft(y2,1024);%将滤波后的声音进行fft的1024点变换

subplot(1,2,2)

gridon;

f=fs*(0:

499)/1024;

plot(f,abs(y1(1:

500)));

title('带通后信号的频谱');

xlabel('频率');

ylabel('振幅');

由带通后信号的频谱可得:

经带通滤波器后,滤除了低频与高频部分,与理论相符。

绘制其滤波后的相位图:

y1=wavread('E:

/低通');%读取声音

p1=fft(y1,1024);

subplot(1,2,1)

gridon;

fs=7000;%采样频率

f1=fs*(0:

499)/1024;%采样点数

plot(angle(p1));

title('低通后信号的相位图')

xlabel('频率')

ylabel('相位')

y2=wavread('E:

/带通');

p2=fft(y2,1024);

subplot(1,2,2)

gridon;

fs=7000;%采样频率

f2=fs*(0:

499)/1024;%采样点数

plot(angle(p2));

title('带通后信号的相位图')

xlabel('频率')

ylabel('相位')

四.心得体会

通过本次课程设计,我对MATLAB软件和DSP开发系统作为工具有了更深刻的了解与认识。

同时巩固了数字信号处理所学知识。

提高了对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。

对滤波器的原理和作用有了一定的了解。

加强了我们动手、思考和解决问题的能力,实现了理论和实践的相互结合。

但是,在此设计过程中也遇到了不少问题。

不懂分析相位谱。

比如怎么分析滤波器后的相位谱,滤波后的相位谱能说明什么。

同时认识到自己所学知识的局限性,要真正学好还需发大量时间。

五.参考文献

1)MATLAB在数字信号处理中的应用薛年喜编著清华大学出版社

2)数字信号处理教程程佩青编著清华大学出版社

3)数字信号处理及其MATLAB实现赵红怡张常年编著化学工业出版社

4)matlab6.5及其在信号处理中的应用王宏编著清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1