1《信号与系统》课程设计语音信号的分析和处理学院:通信与信息工程学院班级:2010012030班学生:李雷(2010012030018)阚姗蕾(2010012030037)指导教师:崔琳莉2011年12月19日2一、摘要声音是由物体的振动产生,以声波的形式在介质中传播,介质主要可分为固体,液体以及气体。声波振动内耳的听小骨,这些振动被转化为微小的电子脑波,它就是我们觉察到的声音。内耳采用的原理与麦克风捕获声波或扬声器的发音一样,它是移动的机械部分与气压波之间的关系。在国际标准中,人声的频率范围是300Hz~3400Hz,不同的人或乐器产生的声音频率不一致,通过对声音信号的研究能够更好的处理声音信号的处理以及传输。Matlab作为一款主要面对科学计算、可视化以及交互式程序设计的高科技计算软件,能够很好的完成对声音信号的分析和处理,快速的得出声音信号的时域图以及频域图。关键字:声音频率时域图频域图MatlabSoundcomesfromtheshakeofobjectsandspreadsintheformofwavesinmediumconsistsofsolid,liquidandgas.Soundwavesshaketheossiclesintheears,transformedintofinalelectronicbrainwavesandthenwehearthesound.Theprincipletheearworkswhichisthesameastheprinciplethemicrophoneandthespeakerworks,isusingtherelationbetweenmechanicalpartandbarometricwave.InISO,thefrequencydomainisfrom300Hzto3400Hz,differsindifferentpeopleandmusicalinstruments.Thestudyofthesoundsignalhelptobetterdealwiththesignals.Asasoftwaremajorinscientificcalculation,Matlabisvisualandinteractive.Itiscapableofperfectlyfinishingtheanalysisanddisposeofthesoundsignalbysketchingthetimedomainfigureandfrequencydomainfigure.Keywords:sound,frequency,timedomainfigure,frequencydomainfigure,Matlab3二、实验要求通过MATLAB的函数wavread()可以读入一个.wav格式的音频文件,并将该文件保存到指定的数组中。例如下面的语句(更详细的命令介绍可以自己查阅MATLAB的帮助)中,将.wav读入后存放到矩阵y中。y=wavread('SpecialEnglish.wav');对于单声道的音频文件,y只有一行,即一个向量;对于双声道的音频文件,y有两行,分别对应了两个声道的向量。我们这里仅对一个声道的音频进行分析和处理即可。注意:.wav文件的采样频率为44.1KHz,采样后的量化精度是16位,不过我们不用关心其量化精度,因为在MATLAB读入后,已将其转换成double型的浮点数表示。在获得了对应音频文件的数组后,我们可以对其进行一些基本的分析和处理。可以包括:1、对语音信号进行频域分析,找到语音信号的主要频谱成分所在的带宽,验证为何电话可以对语音信号采用8KHz的采样速率。2、分析男声和女声的差别。我们知道男声和女声在频域上是有些差别的,一般大家都会认为女声有更多高频的成分,验证这种差别。同时,提出一种方法,能够对一段音频信号是男声信号、还是女声信号进行自动的判断。3、语音与乐器音频的差别。比较语音信号与乐器音频信号的差别,尤其是在频域上的差别。4、.wav文件的采样速率为44.1KHz,仍然远远高于我们通常说的语音信号需要的频谱宽度,例如在电话对语音信号的采样中,我们仅仅使用8KHz的采样速率。对读入的音频数据进行不同速率的降采样,使用wavplay()命令播放降采样后的序列,验证是否会对信号的质量产生影响。降采样的方法很简单,例如命令y=wavread('SpecialEnglish.wav');将语音文件读入后保存在向量y中,这时对应的采样频率为44.1KHz。使用y1=y(1:2:length(y))命令,就可以4将原序列y每隔1个采样后放入序列y1中,这时y1序列对应的采样频率即为22KHz。5、自己下载获得一段中文语音信号(可以使用诸如“千千静听”等工具将.mp3文件转换成.wav文件),对中文语音与英文语音进行比较。三、实验内容3.1、对语音信号进行频域分析,找到语音信号的主要频谱成分所在的带宽,验证为何电话可以对语音信号采用8KHz的采样速率。对声音信号)(tx的频谱图进行分析,使用Matlab绘制该语音信号的频谱图,观察频谱图,读出声音信号的频率范围,由采样定理可知,如果需要重建声音信号)(tx,需产生一个周期冲激串,其冲激幅度就是采样得到的样本值,将该冲激串通过一个增益为T,截止频率为M,而小于Ms的理想低通滤波器,该低通滤波器的输出就是)(tx。使用Matlab中的快速傅里叶变换(fft),绘制出声音文件)(tx的时域图和频域图,对频域图进行分析,观察可得声音信号)(tx的主要频率范围为200Hz~1800Hz,根据采样定理可得,采样频率应不小于3600Hz,故电话使用8kHz的采样频率能保证声音无失真采样及恢复。5程序代码:[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分别绘出6两段声音信号的频谱图,从图中可以看出,男生的声音频率主要分布在200Hz~800Hz,女生的声音频率主要分布在300Hz~1800Hz,女生的声音高频成分较多。这是因为,声波是由物体振动产生的机械波,男人声带宽而厚,振动频率低;女人声带窄而薄,振动频率高。而我们平时所感受得男生声音低沉,女生声音尖细,则是由于发声时男女声带的振动频率的高低不同,所以男女音调的高低不同。7使用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将图像画在一张图上%8plot(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;9sum1%低频信号量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;10fori=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的低频范围内,音色最为丰满,它们的主要区别在于钢琴泛音较多。相比于前面所绘制的语音信号的频谱,乐器在某些频率点的小范围内会形成一个冲击,所以声音会比较有冲击力。并且,乐器有基音和泛音,而人声没有泛音,所以会产生乐器声悠扬的效果。111213程序代码: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);14df3=Fs/len