《《数字信号处理》课程设计-语音信号的处理与滤波.docx》由会员分享,可在线阅读,更多相关《《数字信号处理》课程设计-语音信号的处理与滤波.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录摘要3一、课程设计目的:3二、课程设计内容:3三、基本步骤:3四、滤波流程图5五、具体内容与实现步骤:61. 录制、存储、回放声音信号62. 分别取 8000 个和 16000 个数据进行频谱分析73. 对声音进行滤波9六、学习心得15摘要:本次课程设计主要是利用 MATLAB 工具对歌曲语音进行录制, 然后设计IIR 滤波器,并通过所设计的滤波器进行语音信号滤波以及分析等,对以前所学的知识信号与线性系统、MATLAB7.0进行一个系统的归纳和进一步理解,并且在实际应用操作当中体会数字信号处理这门课程的相关知识。一、课程设计目的:综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论
2、推导得出相应结论,并利用 MATLAB 作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。二、课程设计内容:1. 熟悉并掌握 MATLAB 中有关声音(wave)录制、播放、存储和读取的函数。2. 在 MATLAB 环境中,使用声音相关函数录制 2 秒左右自己的声音,抽样率是 8000Hz/s。(考虑如何解决一个实际问题:录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,如何排除对这些无效点的采样?)3. 分别取 8000 个和 16000 个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。4. 针对电话信道
3、(最高 3500Hz),设计一个 FIR 或 IIR 滤波器进行滤波,把抽样率转变为 7000Hz/s,并进行频谱分析,得到幅度和相位谱。5把处理后的所有数据储存为声音文件,与原始声音进行比较。三、基本步骤:1 语音信号的采集熟悉并掌握 MATLAB 中有关声音(wave)录制、播放、存储和读取的函数, 在 MATLAB 环境中,使用声音相关函数录制 3 秒左右自己的声音。(考虑如何解决一个实际问题:录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象, 如何排除对这些无效点的采样?)2. 语音信号的频谱分析要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性
4、,从而加深对频谱特性的理解。3. 设计数字滤波器并画出其频率响应给出各滤波器的性能指标:(1) 低通滤波器性能指标:f 1000 Hz,f 1200 Hz,A 100dB,A 1dB。bcsp(2) 高通滤波器性能指标:f 4800 Hz,f 5000 Hz A 100dB,A 1dB。c(3) 带通滤波器性能指标:fp13200Hz,A 100dB,A 1dB。b1200 Hz,fp2s3000 Hz,fsc1p1000 Hz,fsc2sp要求用窗函数法和双线性变换法设计上面要求的 3 种滤波器。在 Matlab 中, 使用函数 butter,cheby1 等函数设计 IIR 滤波器;利用M
5、atlab 中的函数 freqz 画出各滤波器的频率响应。4. 用滤波器对信号进行滤波要求用自己设计的各种滤波器分别对采集的信号进行滤波,在 Matlab 中, FIR 滤波器利用函数 fftfilt 对信号进行滤波,IIR 滤波器利用函数 filter 对信号进行滤波。5. 比较滤波前后语音信号的波形及频谱要求在一个窗口同时画出滤波前后的波形及频谱。6. 回放语音信号在 Matlab 中,使用相关声音函数对声音进行回放。辨别滤波前后的声音有何变化。四、滤波(低通、带通、高通)流程图如下:矗由信号频率及所要取 得的信号频率确定滤波器技术指标由技术指标确定滤波器类型观察滤波后的信号频谱图(与滤波
6、嘈前频谱图对比,播放滤波后语音) 画出信号频谱图并对信号滤波设计 IIR 滤波器五、具体内容与实现步骤:(1) 录制、存储、回放声音信号(韩红-青藏高原)。代 码 如 下 : fs=8000;%采样频率t=5;%录音时间fprintf(5 秒钟录音中); x=wavrecord(t*fs, fs,double);%wavrecord 为声音采集函数,开始录制声音wavwrite(x,fs,F:shengyinyin.wav);%存放所录声音fprintf(n 录 音 结 束 n); y=wavread(F:shengyinyin.wav);%读取此前声音信号路径sound(y);%播放声音信号
7、y1=wavread(F:shengyinyin.wav,1 40000); %读取声音文件subplot(2,1,1);plot(y1);title(原始声音信号时域图形); xlabel(时间);ylabel(幅值); grid;y2=wavread(F:shengyinyin.wav,5000 30000); %读取声音文件subplot(2,1,2);plot(y2);title(截取后的有效声音信号时域图形); xlabel(时间);ylabel(幅值); grid;录制刚开始时,出现一些幅值比较小的点,后面也出现一些。出现这种现象的原因主要是录音开始时,未播放声音所致,出现了一些无
8、效点,而后面出现的无效的点,主要是已经没有声音了,但如果我们一直播放声音再开始录音就不会出现这类情况。我们首先要想办法要去掉这些无效点(2) 分别取 8000 个和 16000 个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。代码如下:y=wavread(F:shengyinyin.wav); %读取声音文件d=fft(y,8000);%快速傅里叶变换%对语音信号做 8000 点的 FFT 变换,FFT 是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。k=0:7999;wk=2*k/8000;
9、%关于的归一化figure();%窗口图subplot(2,2,1); plot(wk,abs(d);%绘制幅频特性图axis(0 1 0 100);%关于 xy 轴的取值xlabel( / );%关于 x 轴的标注ylabel(幅度谱);%关于 y 轴的标注title(取 8000 个数据进行频谱分析);%备注标题grid;%打网格subplot(2,2,2);plot(wk,angle(d);%绘制相频特性图xlabel( / );%关于 x 轴的标注ylabel(相位谱);%关于 y 轴的标注axis(0 1 -4 4);%关于 xy 轴的取值title(取 8000 个数据进行频谱分析
10、);%备注标题grid;%打网格y=wavread(F:shengyinyin.wav );% 读取声音文件d=fft(y,16000); k=0:15999;wk=2*k/16000;%关于 的归一化subplot(2,2,3); plot(wk,abs(d); %绘制幅频特性图axis(0 1 0 200); ;%关于 xy 轴的取值xlabel( / ); %关于 x 轴的标注ylabel(幅度谱);%关于 y 轴的标注title(取 16000 个数据进行频谱分析);%备注标题grid;%打网格subplot(2,2,4);plot(wk,angle(d); %绘制相频特性图xlabe
11、l( / );%关于 x 轴的标注ylabel(相位谱);%关于 y 轴的标注axis(0 1 -4 4); ;%关于 xy 轴的取值title(取 16000 个数据进行频谱分析);%备注标题grid%打网格取 8000 点进行频谱分析和取 16000 点进行频谱分析所得的幅度谱和相位谱的图形基本上是相同的;不同之处是 8000 点图形线比 16000 点的图形线梳。(3) IR 滤波器进行滤波,把抽样率为 fs=7000Hz/s,并进行频谱分析,得到幅度和相位谱。低通滤波器: 代码如下:fs=7000;%采样频率y=wavread(F:shengyinyin.wav ); % 读取声音文件
12、wp=2*1200/fs; % Wp 为归一化通带截止频率(0 到 1 之间的整数) ws=2*2000/fs; %Ws 为归一化阻带截止频率Rp=0.5; %Rp 为单位为分贝的通带波纹系数Rs=60; %Rs 为最小阻带衰减N,Wn=cheb1ord(wp,ws,Rp,Rs);%求阶数 N 和滤波器截止频率 Wn num,den=cheby1(N,Rp,Wn); % 传输分子和分母的系数h,w=freqz(num,den);%求频率响应figure();%窗口图f=fft(y,1024); %快速傅里叶变换k=0:1023;wk=2*k/1024;%关于 的归一化subplot(2,2,1
13、)plot(wk,abs(f);%绘制幅频特性图axis(0 1 0 15); %关于 xy 轴的取值xlabel( /);%关于 x 轴的标注ylabel(幅度谱);%关于 y 轴的标注title( 原 语 音 幅 度 谱 ); subplot(2,2,2)plot(wk,angle(f);%绘制相频特性图xlabel( / );%关于 x 轴的标注ylabel(相位谱);%关于 y 轴的标注title(原语音相位谱);axis(0 1 -4 4); %关于 xy 轴的取值w=filter(num,den,y); % 滤波wavwrite(w,fs,F:shengyinyin3.wav);%
14、写 入 滤 波 后 的 语 音 文 件y1=wavread(F:shengyinyin3.wav); % 读取滤波后的语音文件f1=fft(w,1024); %快速傅里叶变换k=0:1023;wk=2*k/1024;%关于 的归一化subplot(2,2,3)plot(wk,abs(f1);axis(0 1 0 15); %关于 xy 轴的取值xlabel( /);%关于 x 轴的标注ylabel(幅度谱);%关于 y 轴的标注title(低通滤波后语音幅度谱); subplot(2,2,4)plot(wk,angle(f1);axis(0 1 -4 4);%关于 xy 轴的取值xlabel(
15、 / ); %关于 x 轴的标注ylabel(幅度谱); %关于 y 轴的标注title(低通滤波后语音相位谱); grid;%打网格sound(y1);%播放滤波后声音带通滤波器:fs=7000;%采样频率Wp=0.3 0.5;% Wp 为归一化通带截止频率(0 到 1 之间的整数) Ws=0.2 0.6;%Ws 为归一化阻带截止频率Rp=0.5; %Rp 为单位为分贝的通带波纹系数Rs=60; %Rs 为最小阻带衰减N,Wn=cheb1ord(Wp,Ws,Rp,Rs);%求阶数 N 和滤波器截止频率 Wn num,den=cheby1(N,Rp,Wn); %传输分子和分母的系数h,w=fr
16、eqz(num,den); %求频率响应y3=wavread(F:shengyinyin.wav); %figure();% 窗 口 图 f3=fft(y3,1024); %快速傅里叶变换k=0:1023;wk=2*k/1024;%关于的归一化subplot(2,2,1)plot(wk,abs(f3);axis(0 1 0 15); %关于 xy 轴的取值xlabel( /);%关于 x 轴的标注ylabel(幅度谱);%关于 y 轴的标注title( 原 语 音 幅 度 谱 ); subplot(2,2,2)plot(wk,angle(f3);axis(0 1 -4 4);%关于 xy 轴的
17、取值xlabel( / ); %关于 x 轴的标注ylabel(幅度谱); %关于 y 轴的标注title(原语音相位谱);grid;%打网格wavwrite(w,fs,F:shengyinyin5.wav); w=filter(num,den,y3);% wavwrite(w,fs,F:shengyinyin5.wav);%w=wavread(F:shengyinyin5.wav); % 读取滤波后的语音文件f1=fft(w,1024); %快速傅里叶变换k=0:1023;wk=2*k/1024;%关于 的归一化subplot(2,2,3)plot(wk,abs(f1);axis(0 1 0
18、 3); %关于 xy 轴的取值xlabel( /);%关于 x 轴的标注ylabel(幅度谱);%关于 y 轴的标注title(带通滤波后语音幅度谱); subplot(2,2,4)plot(wk,angle(f1);axis(0 1 -4 4);%关于 xy 轴的取值xlabel( /);%关于 x 轴的标注ylabel(幅度谱);%关于 y 轴的标注title(带通滤波后语音相位谱); grid;%打网格sound(w);%播放滤波后声音高通滤波器:fs=7000;%采样频率Wp=0.4; % Wp 为归一化通带截止频率(0 到 1 之间的整数) Ws=0.5; %Ws 为归一化阻带截止
19、频率Rp=0.5;%Rp 为单位为分贝的通带波纹系数Rs=100;%Rs 为最小阻带衰减N,Wn=cheb1ord(wp,ws,Rp,Rs);%求阶数 N 和滤波器截止频率 Wn num,den=cheby1(N,Rp,Wn,high); % 传输分子和分母的系数h,w=freqz(num,den);%求频率响应y3=wavread(F:shengyinyin.wav ); % 读取声音文件figure()%窗口图f=fft(y,1024); %快速傅里叶变换k=0:1023;wk=2*k/1024;%关于 的归一化subplot(2,2,1)plot(wk,abs(f);xlabel( /
20、);%绘制幅频特性图axis(0 1 0 15);%关于 xy 轴的取值ylabel(振幅(幅值); title(原语音幅度谱); %原语音幅度谱subplot(2,2,2)plot(wk,angle(f);%绘制相频特性图axis(0 1 -4 4);%关于 xy 轴的取值xlabel( / );ylabel(振幅(幅值);title(原语音相位谱); %原语音幅度谱w=filter(num,den,y);%滤波wavwrite(w,fs,F:shengyinyin3.wav);%存储录音信号y1=wavread(F:shengyinyin3.wav); %读取滤波后语音信号f1=fft(w
21、,1024); %快速傅里叶变换subplot(2,2,3)plot(wk,abs(f1); %绘制幅频特性图axis(0 1 0 2);%关于 xy 轴的取值xlabel( / );ylabel(振幅(幅值);% 低通滤波后语音幅度谱title(高通滤波后的幅度谱); subplot(2,2,4)plot(wk,angle(f1);%绘制相频特性图axis(0 1 -4 4);%关于 xy 轴的取值xlabel( / );ylabel(振幅(幅值);title(高通滤波后语音相位谱); %原语音幅度谱grid;%打网格sound(y1);%播放滤波后声音150. 510. 51420亟面乏晦
22、靠t01垣竖湮鉴原语音幅度谱原语音相位谱25贝,fTT2511合01毛01号鉴高通滤被后的幅度谱1。5000 _ 5WITT卜2合理亟崇-40见fTT嘈卜240高通滤被后语音相位谱1设计界面如下:语音信号的处理与蟋波通信092韦覂武开始录音频谙图高通滤波回放录音低通滤波关闭时域图带通滤波六、学习心得这门数字信号处理教程课是我们通信工程的专业课,它与信号与线性系统分析有紧密的联系,打好信号与线性系统分析基础对学起数字信号处理教程来是事半功倍的。因此,在做这次课程设计时我也时常翻起信号与线性系统分析结合相关知识来复习的。这门学科主要以数学为基础,较为抽象,因此我们在学习这门课的时候,学要细心和耐心。通过这次课程设计,学到了很多东西。首先,在做这次课程设计前我又把此前上过的课程MATLAB7.0 从入门与精通重新复习了一遍,进一步深入地了解了相关函数的用法。其次,通过本次课程设计,再结合课堂上老师所教授的具体分析方法,我加深了对“信号”的理解。对信号的采集,处理,传输,显示,存储和分析等有了一个系统的掌握和理解。在做课程设计的过程中会遇到很多的困难,在困难面前不要放弃,只要有细心和耐心,坚持下去会达到想要的设计结果。最后,做课程设计贵在持之以恒,遇到困难总是在所难免,不能因一时的困难而放弃,做课程设计重要的是一种过程,在过程中学到了许多学习的方法,独立学习能力和与同学交流精神。