

已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
李永棠 基于matlab的语言信号设计成 绩指导教师:日 期:数字信号处理课程设计 题 目:基于matlab的语音信号设计姓 名: 院 系: 电子信息工程系 专 业: 通信工程 班 级: 092 学 号: 指导教师: 2012年 6 月2李永棠 基于matlab的语音信号设计基于matlab的语音信号设计(电子信息工程学系 指导教师:)1. 课程设计目的1.了解语音信号的产生、采集,能绘制语音信号的频率响应曲线及频谱图;2.学会用matlab对语音信号进行分析和处理;3.掌握用滤波器去除语音信号噪声的方法,观察去噪前后的语音信号。2. 课程设计基本要求 1. 学会 matlab 的使用,掌握 matlab 的程序设计方法。 2. 掌握在 windows 环境下语音信号采集的方法。 3. 掌握数字信号处理的基本概念、基本理论和基本方法。 4. 掌握 matlab 设计 fir 和iir数字滤波器的方法。 5. 学会用 matlab 对信号进行分析和处理。3. 课程设计原理数字滤波器根据其冲激响应函数的时域特性,可分为2种,即无限长冲激响应(iir)滤波器和有限长冲激响应(fir)滤波器。fir和iir的滤波原理都是进行卷积,就是对数入信号进行某种计算。a.利用模拟滤波器设计iir数字滤波器方法(1)根据所给出的数字滤波器性能指标计算出相应的模拟滤波器的设计指标。 (2)根据得出的滤波器性能指标设计出相应的模拟滤波器的系统函数h(s)。(3)根据得出的模拟滤波器的系统函数h(s),经某种变换得到对该模拟滤波器相应的。b.fir滤波器的窗函数设计法fir滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:(1)通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。(2)由性能指标确定窗函数w(n)和窗口长度n。(3)求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计fir滤波器系数向量b(n)。c.在matlab中本次设计涉及到的几个重要函数(1)采样:y,fs,nbit=wavread,返回采样值放在向量y中,fs为采样频率(hz),nbit为采样位数。 (2)快速傅里叶变换:y=fft(y,n),其中x为有限长序列,n为序列y的长度,y为序列y的dft。 (3)数字滤波器的频率响应:h,w=freqz(b,a,n),返回数字滤波器的n点复频率响应,b和a是滤波器系数的分子和分母向量;h是复频率响应,w是频率点,n默认为512。(模拟滤波器的频率响应用函数freqs)。4.课程设计内容基本要求:(1)录制一段自己的语音信号,并对录制的信号进行采样;(2)画出采样后语音信号的时域波形和频谱图;(3)给定滤波器的性能指标,采用窗函数法或双线性变换设计fir滤波器或设计iir滤波器,并画出滤波器的频率响应;(4)然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;(5)回放语音信号。扩展部分:(1)设计gui界面进行对该语音处理系统的界面化管理。(2)实现matlab界面中的直接录音功能5.详细设计过程与调试分析5.1 语音信号的采集 录制原始语音:我们利用windows的录音机,录制了一段自己的声音(“同志们,我们一起吃饭吧”,单声道),时间在3s左右。接着保存为wav格式(存在matlab软件的work文件夹下,命名为“chifan”)。5.2 原始语音信号的分析利用函数wavread对语音信号进行采样,并读取语音的相关信息,并通过函数sound听到采样后自己所录的一段声音,并画出它的时域和频域的图形。12程序如下:filename=chifan.wav;y1, fs, nbits=wavread(filename);fprintf(语音 %s 的信息:n, filename);fprintf(语言长度 = %g 秒n, length(y1)/fs);fprintf(取样频率 = %g 取样点/秒n, fs);fprintf(解析度 = %g 位元/取样点n, nbits);sound(y1,fs);m=length(y1);time=0:1/fs:(m-1)/fs; % 时间轴的向量yf1=fft(y1);figure;subplot(2,2,1);plot(time,y1);axis(0,4,-1.5,1.5);title(原信号的时域图);xlabel(时间);ylabel(幅度);subplot(2,2,2);plot(0:fs/(m):fs*(m-1)/m,abs(yf1);axis(0,25000,0,1200);title(原始语音信号频谱);xlabel(频率);ylabel(幅度)运行结果: 图1 原始信号分析5.3 对语音信号进行加噪处理利用函数awgn给语音信号加上高斯白噪声,调用sin函数来单音正弦信号。通过函数sound来听到加完噪声后的声音,并画出它的时域和频域的图形。程序如下:filename=chifan.wav;y1, fs, nbits=wavread(filename);fprintf(语音 %s 的信息:n, filename);fprintf(语言长度 = %g 秒n, length(y1)/fs);fprintf(取样频率 = %g 取样点/秒n, fs);fprintf(解析度 = %g 位元/取样点n, nbits);m=length(y1);time=0:1/fs:(m-1)/fs;% 时间轴的向量g=awgn(y1,20); %给语音信号加上高斯白噪声sound(g,fs); %回放加噪信号g=fft(g); %对加噪后的语音信号进行dft变换n=0.5*sin(2*pi*7000*time);%噪声为7khz的正弦信号y2=y1+n;wavplay(y2,fs,async);%播放加噪声后的语音信号yf2=fft(y2);figure;subplot(2,2,1);plot(time,g);axis(0,4,-1.5,1.5);title(加高斯噪声后语音信号时域图);xlabel(时间);ylabel(幅度);subplot(2,2,2);plot(0:fs/(m):fs*(m-1)/m,abs(g);axis(0,25000,0,1200);title(加高斯噪声后语音信号频谱图);xlabel(频率);ylabel(幅度);subplot(2,2,3);plot(time,y2);axis(0,4,-1.5,1.5);title(加正弦信号的时域图);xlabel(时间);ylabel(幅度);subplot(2,2,4);plot(0:fs/(m):fs*(m-1)/m,abs(yf2);axis(0,25000,0,1200);title(加正弦信号的频谱图);xlabel(频率);ylabel(幅度)运行结果: 图2 原始信号加噪信号的时域和频谱图 5.4 设计数字滤波器和画出其频谱响应5.4.1设计个巴特沃斯低通滤波器设定通带截止频率(fp=1000)、阻带截止频率(fs=3000)、通带波纹系数(rp=0.5)、阻带波纹系数(rs=40)、抽样频率(fc=22050)。程序如下:%巴特沃斯低通滤波器fp=1000;fs=3000;rp=0.5;rs=40;fc=22050;wp=2*fp/fc;ws=2*fs/fc; %将模拟域转化成数字域。n,wc=buttord(wp,ws,rp,rs); %估算巴特沃思滤波器的阶数n和3db截止频率wc。b,a=butter(n,wc); %求传输函数的分子和分母多项式的系数。figure;freqz(b,a,256,fc); %求滤波器的频率响应。title(巴特沃斯低通滤波器的幅频和相频特性图);运行结果: 图3 巴特沃斯滤波器的性能5.4.2用kaiser窗设计个fir低通滤波器 通带截止频率(fp=1000)、阻带截止频率(fs=2000)、通带波纹系数(ap=1)、阻带波纹系数(as=100)、抽样频率(fc=22050)。程序如下:%用kaiser窗设计的低通滤波器fp=1000;fc=1200;as=100;ap=1;fs=22050;wc=2*fc/fs;wp=2*fp/fs; %wc为通带截止频率n=ceil(as-7.95)/(14.36*(wc-wp)/2)+1;%计算kaiser窗所需阶数nalph=0.1102*(as-8.7); %计算kaiser窗的控制参数alphwin=kaiser(n+1,alph); hn=fir1(n,wc,win); %调用kaiser计算低通滤波器的系数向量hnfigure;freqz(hn,1,512,fs); %计算数字滤波器的频率响应title(低通滤波器的幅频和相频特性图);运行结果: 图3 fir低通滤波器性能5.5用滤波器对信号进行滤波滤波处理5.5.1用巴特沃斯滤波器对加噪语音进行滤波处理 对语音信号进行滤波处理,测试设计好的滤波器是否对我们的语音信号进行了处理。这里用的是iir滤波器,所以利用函数filter对信号进行滤波。,即x= filter(b,a,y),x即是滤波后的语音信号,我们将滤波前后的时域波形进行对比,看是否有处理好,并且我们对其进行快速傅里叶变换,即x=fft(signal),目的是对比滤波前后的频域频谱,进一步具体分析我们设计的滤波器是否达到我们的设计要求。程序如下:%用巴特沃斯低通滤波器进行滤波filename=chifan.wav;y1, fs, nbits=wavread(filename);fprintf(语音 %s 的信息:n,filename);fprintf(语言长度= %g 秒n, length(y1)/fs);fprintf(取样频率 = %g 取样点/秒n, fs);fprintf(解析度 = %g 位元/取样点n, nbits);m=length(y1);time=0:1/fs:(m-1)/fs;% 时间轴的向量n=0.5*sin(2*pi*8000*time);%噪声为8khz的正弦信号y2=y1+n;yf1=fft(y1);yf2=fft(y2);figure;fp=1000;fs=3000;rp=0.5;rs=40;fc=22050;wp=2*fp/fc;ws=2*fs/fc; %将模拟域转化成数字域。n,wc=buttord(wp,ws,rp,rs); %估算巴特沃思滤波器的阶数n和3db截止频率wc。b,a=butter(n,wc); %求传输函数的分子和分母多项式的系数。h,w=freqz(b,a,256,fc) %求滤波器的频率响应。x=filter(b,a,y2); %由传输函数的分子和分母多项式的系数得到模拟滤波器x=fft(x); %将x信号进行快速傅里叶变换。sound(x,fc,nbits); %将滤波后的信号x进行回放。subplot(3,2,1);plot(time,y1);axis(0,4,-1.5,1.5);title(原信号的时域图);xlabel(时间);ylabel(幅度);subplot(3,2,2);plot(0:fs/(m):fs*(m-1)/m,abs(yf1);axis(0,25000,0,1200);title(原始语音信号频谱);xlabel(频率);ylabel(幅度);subplot(3,2,3);plot(time,y2);axis(0,4,-1.5,1.5);title(加正弦噪声信号的时域图);xlabel(时间);ylabel(幅度);subplot(3,2,4);plot(0:fs/(m):fs*(m-1)/m,abs(yf2);axis(0,25000,0,1200);title(加正弦噪声信号的频谱图);xlabel(频率);ylabel(幅度);subplot(3,2,5);plot(time,x);axis(0,4,-1.5,1.5);title(滤波后信号的时域图);xlabel(时间);ylabel(幅度);subplot(3,2,6);plot(0:fs/(m):fs*(m-1)/m,abs(x);axis(0,25000,0,1200);title(滤波后信号的频谱图);xlabel(频率);ylabel(幅度);运行结果: 图4 巴特沃斯低通滤波器对加正弦噪声语音进行处理 图5 巴特沃斯低通滤波器对加白噪声信号进行处理5.5.2用kaiser窗设计的fir低通滤波器对语音进行滤波处理程序如下:(只需把5.4.1中的滤波器对应的程序段改成如下)fp=2000;fc=3000;as=100;ap=1;fs=22050; %kaiser窗设计的低通滤波器wc=2*fc/fs;wp=2*fp/fs;n=ceil(as-7.95)/(14.36*(wc-wp)/2)+1;beta=0.1102*(as-8.7);win=kaiser(n+1,beta);b=fir1(n,wc,win);x=fftfilt(b,y2);x=fft(x);运行结果: 图6 fir低通滤波器对加正弦噪声信号进行滤波处理 图7 fir低通滤波器对加正弦噪声信号进行滤波处理5.6实现matlab录音 可以实现在matlab界面中进行录音,并能保存该录音文件并调用播放器对其进行播放。程序如下:%用matlab实现录音fs=22050;% 取样频率duration=5;% 录音时间wavefile=test.wav;% 存储的文件名fprintf(按任意键开始 %g 秒录音:, duration); pausefprintf(录音中.);y=wavrecord(duration*fs, fs);fprintf(录音结束n);fprintf(按任意存储录音至 %s 档案., wavefile); pausenbits=8;% 每点的解析度为 8-bitwavwrite(y, fs, nbits, wavefile);fprintf(存档结束n);fprintf(按任意键开始播放 %s.n, wavefile);dos(start , wavefile);% 开启wav对应的播放器播放所录得语音运行结果:按任意键开始 5 秒录音:录音中.录音结束;按任意存储录音至 test.wav 档案.存档结束;按任意键开始播放 test.wav.的语音。5.7.gui界面设计并导入程序设计gui界面如下,并将上面对应的程序写到界面中各个按钮对应的回调函数中。 图8 gui界面设计6.结果分析与体会6.1运行结果分析 1.滤波器的作用就是滤除掉阻带内有频率分量,保留通带内的频率分量。通过观察滤波前后语音信号波形的变化,即观察图4和图5,可以知道,时域中我们观察到滤波后的语音信号发生了衰减,同时去除了噪音分量,说明滤波器起到了滤波作用,但语音信号发生了衰减;从频域波形中我们可以明显看到我们设计的滤波器对我们的语音信号进行了滤波处理,可以看出滤波器滤掉了一部分频率范围内的信号,同时将噪声进行了滤除;分别听原始语音和滤波后的语音信号,发现滤波后的语音信号噪声几乎没了,同时滤波后的语音信号强度稍有减弱,音色有一点低沉,不过基本达到了滤波的效果。所以本次设计的两个滤波器达到了设计要求。2. 滤波器指标的设定是很关键的一步,ws,和wp要设置合适,ws设置太大噪音太多。wp设置太小会导致声音的丢失。我们应该认真查看频谱,再确定ws,和wp。由频谱图可以看出:我的语音信号大多集中在03000hz,所以我取了fp=1000hz,fs=3000hz。6.2出现的问题及解决方法(1)画图时刚开始直接用plot(y),而没有加入取样个数及取样间隔导致话出来的图和理论推导的坐标点的值不一致,通过加入取样个数及取样间隔如plot(0:fs/(m):fs*(m-1)/m,abs(yf1);解决了这问题。(2)由于我的电脑是win7的系统,我使用录音把我的原始声音给录下来时,发现格式不是wav格式,后来我用格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程文件管理与发放管理办法
- 师德建设考核管理办法
- 幼儿园组织与管理
- 安徽省备案管理暂行办法
- 临朐中学教学课件培训
- 眼部烧伤预防与急救处理
- 勤学教育班会实施纲要
- 住户秘密规则管理办法
- 乡镇公务绩效管理办法
- 2025至2030中国便携式渗水测试仪行业发展趋势分析与未来投资战略咨询研究报告
- 2025年小学美术教师招聘考试必考美术学科专业知识汇编(160题)
- DB43-T 2066-2021 河湖管理范围划定技术规程
- 《体重管理年行动》科普指南课件
- 技术经理人考试试题及答案
- uom无人机考试试题及答案
- 误差检测优化策略-全面剖析
- 生态环保培训课件
- 2025年理财师资格考试参考题目试题及答案
- 柔性引进团队协议书
- 2025-2030布比卡因产业发展分析及发展趋势与投资前景预测报告
- 阿托品的临床应用
评论
0/150
提交评论