声音信号的分析处理_第1页
声音信号的分析处理_第2页
声音信号的分析处理_第3页
声音信号的分析处理_第4页
声音信号的分析处理_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《信号与系统》课程设计语音信号的分析和处理学院:通信与信息工程学院班级:2023012030班学生:指导教师:崔琳莉2011年12月19日一、摘要声音是由物体的振动产生,以声波的形式在介质中传播,介质主要可分为固体,液体以及气体。声波振动内耳的听小骨,这些振动被转化为微小的电子脑波,它就是我们觉察到的声音。内耳采用的原理与麦克风捕获声波或扬声器的发音一样,它是移动的机械局部与气压波之间的关系。在国际标准中,人声的频率范围是300Hz~3400Hz,不同的人或乐器产生的声音频率不一致,通过对声音信号的研究能够更好的处理声音信号的处理以及传输。Matlab作为一款主要面对科学计算、可视化以及交互式程序设计的高科技计算软件,能够很好的完成对声音信号的分析和处理,快速的得出声音信号的时域图以及频域图。关键字:声音频率时域图频域图MatlabSoundcomesfromtheshakeofobjectsandspreadsintheformofwavesinmediumconsistsofsolid,liquidandgas.Soundwavesshaketheossiclesintheears,transformedintofinalelectronicbrainwavesandthenwehearthesound.Theprincipletheearworkswhichisthesameastheprinciplethemicrophoneandthespeakerworks,isusingtherelationbetweenmechanicalpartandbarometricwave.InISO,thefrequencydomainisfrom300Hzto3400Hz,differsindifferentpeopleandmusicalinstruments.Thestudyofthesoundsignalhelptobetterdealwiththesignals.Asasoftwaremajorinscientificcalculation,Matlabisvisualandinteractive.Itiscapableofperfectlyfinishingtheanalysisanddisposeofthesoundsignalbysketchingthetimedomainfigureandfrequencydomainfigure.Keywords:sound,frequency,timedomainfigure,frequencydomainfigure,Matlab二、实验要求通过MATLAB的函数wavread()可以读入一个.wav格式的音频文件,并将该文件保存到指定的数组中。例如下面的语句〔更详细的命令介绍可以自己查阅MATLAB的帮助〕中,将.wav读入后存放到矩阵y中。y=wavread('SpecialEnglish.wav');对于单声道的音频文件,y只有一行,即一个向量;对于双声道的音频文件,y有两行,分别对应了两个声道的向量。我们这里仅对一个声道的音频进行分析和处理即可。注意:.wav文件的采样频率为44.1KHz,采样后的量化精度是16位,不过我们不用关心其量化精度,因为在MATLAB读入后,已将其转换成double型的浮点数表示。在获得了对应音频文件的数组后,我们可以对其进行一些根本的分析和处理。可以包括:对语音信号进行频域分析,找到语音信号的主要频谱成分所在的带宽,验证为何可以对语音信号采用8KHz的采样速率。分析男声和女声的差异。我们知道男声和女声在频域上是有些差异的,一般大家都会认为女声有更多高频的成分,验证这种差异。同时,提出一种方法,能够对一段音频信号是男声信号、还是女声信号进行自动的判断。语音与乐器音频的差异。比拟语音信号与乐器音频信号的差异,尤其是在频域上的差异。.wav文件的采样速率为44.1KHz,仍然远远高于我们通常说的语音信号需要的频谱宽度,例如在对语音信号的采样中,我们仅仅使用8KHz的采样速率。对读入的音频数据进行不同速率的降采样,使用wavplay()命令播放降采样后的序列,验证是否会对信号的质量产生影响。降采样的方法很简单,例如命令y=wavread('SpecialEnglish.wav');将语音文件读入后保存在向量y中,这时对应的采样频率为44.1KHz。使用y1=y(1:2:length(y))命令,就可以将原序列y每隔1个采样后放入序列y1中,这时y1序列对应的采样频率即为22KHz。自己下载获得一段中文语音信号〔可以使用诸如“千千静听〞等工具将.mp3文件转换成.wav文件〕,对中文语音与英文语音进行比拟。三、实验内容3.1、对语音信号进行频域分析,找到语音信号的主要频谱成分所在的带宽,验证为何可以对语音信号采用8KHz的采样速率。对声音信号的频谱图进行分析,使用Matlab绘制该语音信号的频谱图,观察频谱图,读出声音信号的频率范围,由采样定理可知,如果需要重建声音信号,需产生一个周期冲激串,其冲激幅度就是采样得到的样本值,将该冲激串通过一个增益为T,截止频率为,而小于的理想低通滤波器,该低通滤波器的输出就是。使用Matlab中的快速傅里叶变换(fft),绘制出声音文件的时域图和频域图,对频域图进行分析,观察可得声音信号的主要频率范围为200Hz~1800Hz,根据采样定理可得,采样频率应不小于3600Hz,故使用8kHz的采样频率能保证声音无失真采样及恢复。 程序代码:[x,fs,bits]=wavread('相声.wav');%将原声音信号转化为字符串%subplot(211);plot(x);%绘制声音信号的时域图%title('时域分析图');subplot(212);y=fft(x,fs);df=fs/length(y);fx=df*(0:length(y)-1);%将横坐标转化为频率值%plot(fx,abs(y));%绘制声音信号的频谱图%axis([080000500]);title('频域分析图');3.2、分析男声和女声的差异。我们知道男声和女声在频域上是有些差异的,一般大家都会认为女声有更多高频的成分,验证这种差异。同时,提出一种方法,能够对一段音频信号是男声信号、还是女声信号进行自动的判断。首先,我们选择了普通的男生和女生分别演唱同一首歌,用matlab分别绘出两段声音信号的频谱图,从图中可以看出,男生的声音频率主要分布在200Hz~800Hz,女生的声音频率主要分布在300Hz~1800Hz,女生的声音高频成分较多。这是因为,声波是由物体振动产生的机械波,男人声带宽而厚,振动频率低;女人声带窄而薄,振动频率高。而我们平时所感受得男生声音消沉,女生声音尖细,那么是由于发声时男女声带的振动频率的上下不同,所以男女音调的上下不同。使用Matlab对男声女声的声音信号在不同频率的分布比例进行分析,运行程序后可得出,在低频范围〔150Hz~1000Hz〕内男声低频比例n1=9.5343e-006女声低频比例n2=8.6394e-006 在高频范围〔1000Hz~1800Hz〕内男声高频比例m1=7.5965e-006女声高频比例m2=8.2355e-006以上的数据计算进一步验证了女声频率较高的假设,我们可以通过这种计算来分辨男声女声。程序代码:%画男生声音、女生声音的频谱图y1=wavread('lu_ll.wav');Fs=44100;%采样频率%yt1=fft(y1);%傅里叶变换%df=Fs/length(yt1);Fx=df*(0:length(yt1)-1);%将横轴变为频率轴%figure(1)subplot(211); %subplot将图像画在一张图上%plot(y1);title('男声时域波形');%画语音信号的时域波形%subplot(212); plot(Fx,abs(yt1));axis([010000010000]);title('男声频谱图');xlabel('频率/Hz');y2=wavread('lu_ksl.wav');Fs=44100;%采样频率%yt2=fft(y2);%傅里叶变换%df=Fs/length(yt2);Fx=df*(0:length(yt2)-1);%将横轴变为频率轴%figure(2)subplot(211); %subplot将图像画在一张图上%plot(y2);title('女声时域波形');%画语音信号的时域波形%subplot(212); plot(Fx,abs(yt2));axis([01000005000]);title('女声频谱图');xlabel('频率/Hz');%计算男生和女生信号中高频和低频信号所占的比例:[y1Fs]=wavread('lu_ll.wav');y1=y1(:,1);yt1=fft(y1);[y2Fs]=wavread('lu_ksl.wav');y2=y2(:,1);yt2=fft(y2);sum1=0;fori=200:1000%计算男声的低频比例%sum1=sum1+abs(yt1(i));endsum=0;fori=1:length(yt1)sum=sum+abs(yt1(i));endn1=sum1/sum;sum1%低频信号量sum%总信号量n1%比例sum1=0;fori=200:1000%计算女声的低频比例%sum1=sum1+abs(yt2(i));endsum=0;fori=1:length(yt2)sum=sum+abs(yt2(i));endn2=sum1/sum;sum1sumn2%高频%sum1=0;fori=3000:3800%计算男声的高频比例%sum1=sum1+abs(yt1(i));endsum=0;fori=1:length(yt1)sum=sum+abs(yt1(i));endm1=sum1/sum;sum1summ1sum1=0;fori=3000:3800%计算女声的高频比例%sum1=sum1+abs(yt2(i));endsum=0;fori=1:length(yt2)sum=sum+abs(yt2(i));endm2=sum1/sum;sum1summ23.3、语音与乐器音频的差异。比拟语音信号与乐器音频信号的差异,尤其是在频域上的差异。我们找了五种不同的乐器演奏的《梁祝》,试图不仅分析语音信号和乐器音频信号的差异,还要分析不同乐器音频信号的差异。使用狸窝软件进行时间截取和格式转换,分析得到频谱如下: 对于乐器来说,低频段表示音色的饱满度,高频段表示音色的明亮度。从图中可以看出,古筝的泛音较强,这印证了我们听觉的感受,钢琴和笛子的频谱主要集中在500~1000Hz的低频范围内,音色最为饱满,它们的主要区别在于钢琴泛音较多。相比于前面所绘制的语音信号的频谱,乐器在某些频率点的小范围内会形成一个冲击,所以声音会比拟有冲击力。并且,乐器有基音和泛音,而人声没有泛音,所以会产生乐器声悠扬的效果。程序代码:y1=wavread('笛子_0.wav');y2=wavread('钢琴_0.wav');y3=wavread('小提琴_0.wav');y4=wavread('萨克斯_0.wav');y5=wavread('古筝_0.wav');Fs=44100;%采样频率%yt1=fft(y1);%傅里叶变换%yt2=fft(y2);yt3=fft(y3);yt4=fft(y4);yt5=fft(y5);df1=Fs/length(yt1);Fx1=df1*(0:length(yt1)-1);df2=Fs/length(yt2);Fx2=df2*(0:length(yt2)-1);df3=Fs/length(yt3);Fx3=df3*(0:length(yt3)-1);df4=Fs/length(yt4);Fx4=df4*(0:length(yt4)-1);df5=Fs/length(yt5);Fx5=df5*(0:length(yt5)-1);figure(1) plot(Fx1,abs(yt1));axis([08000010000]);title('笛子频谱图');xlabel('频率/Hz');figure(2)plot(Fx2,abs(yt2));axis([08000010000]);title('钢琴频谱图');xlabel('频率/Hz');figure(3)plot(Fx3,abs(yt3));axis([08000010000]);title('小提琴频谱图');xlabel('频率/Hz');figure(4)plot(Fx4,abs(yt4));axis([08000010000]);title('萨克斯频谱图');xlabel('频率/Hz');figure(5)plot(Fx5,abs(yt5));axis([08000010000]);title('古筝频谱图');xlabel('频率/Hz');3.4、.wav文件的采样速率为44.1KHz,仍然远远高于我们通常说的语音信号需要的频谱宽度,例如在对语音信号的采样中,我们仅仅使用8KHz的采样速率。对读入的音频数据进行不同速率的降采样,使用wavplay()命令播放降采样后的序列,验证是否会对信号的质量产生影响。使用Matlab对声音信号进行降采样,分别把声音信号的采样频率将为原采样频率的1/2,1/5,1/10。当采样频率为原信号采样频率的1/2时,声音与原声音无明显变化,观察频谱图,亦无明显变化;当采样频率为原信号采样频率的1/5时,声音与原声音相比有差异,观察频谱图,发现频谱图变化很大;当采样频率为原信号采样频率的1/10时,声音与原声音相比已明显失真,信号内容不可区分,观察频谱图,频谱图已完全不一致,降采样后的信号失真严重。结论:当采样频率越低时,采样得到的声音信号的音质将降低。程序如下:[x,fs,bits]=wavread('星空的旋律.wav');%将声音信号采样称字符串%fs%声音x(t)信号频率%x1=x(1:2:length(x));%对原声音信号进行1/2降采样%x2=x(1:5:length(x));%对原声音信号进行1/5降采样%x3=x(1:10:length(x));%对原声音信号进行1/10降采样%subplot(411);%wavplay(x,fs);%播放原声音信号%y=fft(x,fs);df=fs/length(y);fx=df*(0:length(y)-1);plot(fx,abs(y));%绘制原声音信号的频谱分析图%axis([080000500]);title('原声音频谱分析图');subplot(412);%wavplay(x1,fs/2);%播放1/2降采样声音信号%y1=fft(x1,fs/2);df=fs/length(y1);fx=df*(0:length(y1)-1);plot(fx,abs(y1));%绘制1/2降采样后信号的频谱分析图%axis([080000500]);title('采样频率为原信号的1/2频谱分析图');subplot(413);%wavplay(x2,fs/5);%播放1/10降采样声音信号%y2=fft(x2,fs/5);df=fs/length(y2);fx=df*(0:length(y2)-1);plot(fx,abs(y2));%绘制1/5降采样后信号的频谱分析图%axis([080000500]);title('采样频率为原信号的1/5频谱分析图');subplot(414);%wavplay(x3,fs/10);%播放1/10降采样声音信号%y3=fft(x3,fs/10);df=fs/length(y3);fx=df*(0:length(y3)-1);plot(fx,abs(y3));%绘制1/10降采样后信号的频谱分析图%axis([080000500]);title('采样频率为原信号的1/10频谱分析图');四、实验结论在实验开始的时候,使用录音软件〔AdobeAudition〕录制所需的男声女声,同时,在各大音乐网站下载所需的音频文件,但是一般下载到的只有.mp3格式的音频文件,故使用狸窝全能视频转换器将.mp3文件或其他格式的音频文件转化为.wav格式的音频文件。 使用Matlab对下载到的音频文件〔相声.wav〕进行时域分析和频域分析,并绘制相应的时域图和频域图,时域图可以显示幅值与时间的关系,频域图可以显示幅值与频率的关系。对绘制频域图进行解读,该文件的主要频率范围为200Hz~1800Hz,通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论