收藏 分销(赏)

数字信号实验-用DFT分析自己语音频谱实验.doc

上传人:w****g 文档编号:2229076 上传时间:2024-05-23 格式:DOC 页数:24 大小:563.04KB 下载积分:10 金币
下载 相关
数字信号实验-用DFT分析自己语音频谱实验.doc_第1页
第1页 / 共24页
数字信号实验-用DFT分析自己语音频谱实验.doc_第2页
第2页 / 共24页


点击查看更多>>
资源描述
(完整word版)数字信号实验-用DFT分析自己语音频谱实验 《数字信号处理》实验报告 实验四 用DFT分析自己语音频谱实验 班级:计科121 学号:1208060135 姓名:刘国强 成绩: 日期:2014年11月3日 地点:博学楼 706 一、实验目的 1.掌握DFT函数的用法。 2. 利用DFT进行语音信号检测及谱分析。 3.了解信号截取长度对谱分析的影响。 二、实验内容 A: 先学习和模仿以下7个信号处理程序。 B: 然后,把自己录音wav格式,长度5秒以内,用DFT分析,做出频谱图; C: 如果是男生,找一个女生录音做对比分析,观察比较两者频谱特征的差异。 如果是女生,找一个男生录音,做同样对比分析。 1.利用DFT计算信号功率谱。 实验程序: t=0:0.001:0.6; x=sin(2*pi*50*t)+sin(2*pi*120*t)+randn(1,length(t)); Y=dft(x,512); P=Y.*conj(Y)/512; f=1000*(0:255)/512; plot(f,P(1:256)) 2. 进行信号检测。分析信号频谱所对应频率轴的数字频率和频率之间的关系。模拟信号,以 进行取样,求N点DFT的幅值谱。 实验程序: subplot(2,2,1) N=45;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=dft(x,N); plot(q,abs(y));title('DFT N=45') subplot(2,2,2) N=50;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=dft(x,N); plot(q,abs(y));title('DFT N=50') subplot(2,2,3) N=55;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=dft(x,N); plot(q,abs(y));title('DFT N=55') subplot(2,2,4) N=60;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=dft(x,N); plot(q,abs(y));title('DFT N=60') 3. 对2,进一步增加截取长度和DFT点数,如N加大到256,观察信号频谱的变化,分析产生这一变化的原因。在截取长度不变的条件下改变采样频率,观察信号频谱的变化,分析产生这一变化的原因。 N加大到256时的程序: N=256;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=dft(x,N); plot(q,abs(y));title('DFT N=256') 分析原因:在T=0.01s的情况下,第一个序列的周期是100,第二个序列的周期是50,所以当取样点数小于100时,频率分辨率不够,不能够区分出两个信号。当采样点数足够多(256)时,频率分辨率增加,能够区分出两个频率的信号。 将采样间隔变为T=0.1s时,N仍为45的程序: N=45;n=0:N-1;t=0.1*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=dft(x,N); plot(q,abs(y));title('DFT N=45') 分析原因:在T=0. 1s的情况下,第一个序列的周期是10,第二个序列的周期是5,所以当取样点数为45时,能够区分出两个信号。 参数同上,N取64,并在信号中加入噪声w(t)。 figure(2) subplot(2,1,1) N=64;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=dft(x,N); plot(q,abs(y));title('DFT N=64') subplot(2,1,2) N=64;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t)+0.8*randn(1,N); y=dft(x,N); plot(q,abs(y));title('DFT N=64(with noise)') 由图可以看出这种噪音不影响信号检测。 4. 对3,加大噪声到2*randn(1,N)和8*randn(1,N),画出并比较不同噪声下时域波形和频谱。 subplot(2,1,1) N=64;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t)+2*randn(1,N); y=dft(x,N); plot(q,abs(y));title('DFT N=64(with noise2)') subplot(2,1,2) N=64;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t)+8*randn(1,N); y=dft(x,N); plot(q,abs(y));title('DFT N=64(with noise8)') subplot(3,2,1) N=64;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t)+0.8*randn(1,N); plot(x);title('噪声为0.8*w的信号') y=dft(x,N); subplot(3,2,2) plot(q,abs(y));title('噪声为0.8*w时的频谱') subplot(3,2,3) N=64;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t)+2*randn(1,N); plot(x);title('噪声为2*w时的信号') y=dft(x,N); subplot(3,2,4) plot(q,abs(y));title('噪声为2*w时的频谱') subplot(3,2,5) N=64;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t)+8*randn(1,N); plot(x);title('噪声为8*w时的信号') y=dft(x,N); subplot(3,2,6) plot(q,abs(y));title('噪声为8*w时的频谱') 实验分析:当噪声较小时,不影响信号的检测,但当噪声较大时,就看不出原信号的频率成分了,可以继续加大噪声,可看到其频谱杂乱无章了。 5. 用一个N点DFT计算两个长度为N的实序列N点离散傅里叶变换,并将结果和直接使用两个N点DFT得到的结果进行比较。 x=[1 2 3 4 5 6]; y=[6 5 4 3 2 1]; [a,b]=dft_2(x,y) a = Columns 1 through 3 21.0000 -3.0000 + 5.1962i -3.0000 + 1.7321i Columns 4 through 6 -3.0000 -3.0000 - 1.7321i -3.0000 - 5.1962i b = Columns 1 through 3 21.0000 3.0000 - 5.1962i 3.0000 - 1.7321i Columns 4 through 6 3.0000 3.0000 + 1.7321i 3.0000 + 5.1962i 函数文件如下: function [y1,y2]=dft_2(a,b) N=length(a); x=zeros(1,N); x=a+j*b; X=dft(x,N); X0=conj(fliplr(X)); X0=[X0(N) X0(1:N-1)]; y1=(X+X0)./2; y2=(X-X0)./2./j; 直接运行计算 : dft(x) ans = Columns 1 through 3 21.0000 -3.0000 + 5.1962i -3.0000 + 1.7321i Columns 4 through 6 -3.0000 -3.0000 - 1.7321i -3.0000 - 5.1962i dft(y) ans = Columns 1 through 3 21.0000 3.0000 - 5.1962i 3.0000 - 1.7321i Columns 4 through 6 3.0000 3.0000 + 1.7321i 3.0000 + 5.1962i 6.比较DFT和DFT的运算时间。(计时函数 tic, toc) N分别取256,512,1024,2048,4096,… 程序如下: N=256; N=4096; x=randn(1,N); tic y=dft(x,N); toc tic z=dft(x); toc N=256:Elapsed time is 0.172000 seconds. Elapsed time is 0.015000 seconds. N=512:Elapsed time is 0.687000 seconds. Elapsed time is 0.000000 seconds. N=1024:Elapsed time is 3.031000 seconds. Elapsed time is 0.047000 seconds. N=2048:Elapsed time is 13.375000 seconds. Elapsed time is 0.063000 seconds. N=4096:Elapsed time is 59.250000 seconds. Elapsed time is 0.125000 seconds. 7.对给定语音信号进行谱分析,写出采样频率,画出语音信号的波形及频谱,并分析语音信号的频率分布特点。 (1)画时域波形并对整个语音序列做DFT [x,fs]=wavread('C:\ai1.wav'); subplot(2,1,1) N=length(x); n=0:N-1; plot(n,x); xlabel('n'); ylabel('x'); title('时域波形'); subplot(2,1,2); N=length(x); n=0:N-1; t=0.01*n; q=n*2*pi/N; y=dft(x,N); plot(q,abs(y)); xlabel('n'); ylabel('ai1'); title('DFT'); (2)并分别求出k=300,3500所对应的信号频率(Hz) [x,fs]=wavread('C:\ai1.wav') N=length(x); n=0:N-1; t=n*(1/fs); q=n*2*pi/N; n1=300; q1=n1*2*pi/N; f1=q1*fs/(2*pi); n2=3500; q2=n2*2*pi/N; f2=q2*fs/(2*pi); fs = 16000 (3)从语音中截取一段语音(256点)做DFT,得出频谱,画出时域波形及频谱。分别求出k=5,60时所对应的信号频率(Hz) 程序如下: [x,fs]=wavread('C:\ai1.wav'); subplot(2,1,1); N=256; n=0:N-1; x=x(1:256); plot(n,x); xlabel('n'); ylabel('x'); title('256点时域波形'); subplot(2,1,2); N=256; n=0:N-1; t=0.01*n; q=n*2*pi/N; x=x(1:256); y=dft(x,N); plot(q,abs(y)); xlabel('n'); ylabel('ai1'); title('DFT-256'); 三、 实验结果 1.利用DFT计算信号功率谱。 2. 进行信号检测。分析信号频谱所对应频率轴的数字频率和频率之间的关系。模拟信号,以 进行取样,求N点DFT的幅值谱。 对2,进一步增加截取长度和DFT点数,如N加大到256,观察信号频谱的变化,分析产生这一变化的原因。在截取长度不变的条件下改变采样频率,观察信号频谱的变化,分析产生这一变化的原因。 N加大到256时的图片: 在T=0.01s的情况下,第一个序列的周期是100,第二个序列的周期是50,所以当取样点数小于100时,频率分辨率不够,不能够区分出两个信号。当采样点数足够多(256)时,频率分辨率增加,能够区分出两个频率的信号。 将采样间隔变为T=0.1s时,N仍为45的图片: 在T=0. 1s的情况下,第一个序列的周期是10,第二个序列的周期是5,所以当取样点数为45时,能够区分出两个信号。 参数同上,N取64,并在信号中加入噪声w(t)。 由图可以看出这种噪音不影响信号检测。 4. 对3,加大噪声到2*randn(1,N)和8*randn(1,N),画出并比较不同噪声下时域波形和频谱。 当噪声较小时,不影响信号的检测,但当噪声较大时,就看不出原信号的频率成分了,可以继续加大噪声,可看到其频谱杂乱无章了。 5. 用一个N点DFT计算两个长度为N的实序列N点离散傅里叶变换,并将结果和直接使用两个N点DFT得到的结果进行比较。 fft(x) fft(y) 6.比较DFT和DFT的运算时间。(计时函数 tic, toc) N分别取256,512,1024,2048,4096,… N 512 N 1024 N 2048 N 4096 N 256 7.对给定语音信号进行谱分析,写出采样频率,画出语音信号的波形及频谱,并分析语音信号的频率分布特点。 (1)画时域波形并对整个语音序列做FFT a.男生声音图形: b.女生声音图形: 分析:男女生说的内容是一样的,但是男生的声音比较雄厚,因此图像比较宽,而女生的声音比较尖细,图像比较窄。 (2)并分别求出k=300,3500所对应的信号频率(Hz) (3) 从语音中截取一段语音(256点)做DFT,得出频谱,画出时域波形及频谱。分别求出k=5,60时所对应的信号频率(Hz) 男生的: 女生的: 因为截取的录音是在0-256之间,而我所录的声音在这段时间内是没有声音的,因此是两条直线,而当把录音范围扩大后,波形图才会有变化。 将范围改成:99744-100000 图形为: 将范围更改后,发现男生声音和女生声音还是有所不同的。 四、实验感想和建议 通过本次的实验,我学会了如何定义函数,比如说在这次试验里,定义一些工具名词,让主程序更简单, 而在这次试验中,是用fft函数对声音信息进行简单的处理, 利用fft计算信号功率谱。同时也了解到改变截取度会产生不同的结果,接下来了解到了dft和fft运算时间的差距,最后通过研究男生和女生的声音波形图,分析男生和女生声音的不同,更改范围后发现还是有所不同的。 总之,本次实验即是初步进行了简单信号的谱分析,加深了对DFT的理解。同时也认识到了MATLAB接近生活的用途,引起了我的学习兴趣。 24
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服