1、语音信号处理实验报告材料中南大学信息科学与工程学院语音信号处理实验报告指导老师 : 覃爱娜学生班级 : 信息0704学生名称 : 阮光武学生学好 : 0903070430提交日期 : 2010年6月18日实验一 语音波形文件的分析和读取一、实验的任务、性质与目的本实验是选修语音信号处理课的电子信息类专业学生的基础实验。通过实验:(1)掌握语音信号的基本特性理论:随机性,时变特性,短时平稳性,相关性等;(2)掌握语音信号的录入方式和*.WAV音波文件的存储结构;(3)使学生初步掌握语音信号处理的一般实验方法。二、实验原理和步骤:WAV文件格式简介WAV文件是多媒体中使用了声波文件的格式之一,它是
2、以RIFF格式为标准。每个WAV文件的头四个字节就是“RIFF”。WAV文件由文件头和数据体两大部分组成,其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分。常见的WAV声音文件有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。采样率是指声音信号在“模拟数字”转换过程中,单位时间内采样的次数;采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为8位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位
3、分别代表左右两个声道。WAV文件数据块包含以脉冲编码调制(PCM)格式表示的样本。在单声道WAV文件中,道0代表左声道,声道1代表右声道;在多声道WAV文件中,样本是交替出现的。WAV文件的格式见表1。偏移地址字节数数据类型内 容文件头00H4charRIFF标志04H4long int文件长度08H4charWAVE标志0CH4charfmt标志10H4过渡字节(不定)14H2int格式类别(10H为PCM形式的声音数据)16H2int通道数,单声道为1,双声道为218H2int采样率(每秒样本数),表示每个通道的播放速度1CH4long int波形音频数据传送速率,其值为通道数每秒数据位数
4、每样本的数据位数8。播放软件利用此值可以估计缓冲区的大小。20H2int数据块的调整数(按字节算的),其值为通道数每样本的数据位值8。播放软件需要一次处理多个该值大小的字节数据,以便将其值用于缓冲区的调整。22H2每样本的数据位数,表示每个声道中各个样本的数据位数。如果有多个声道,对每个声道而言,样本大小都一样。24H4char数据标记符data28H4long int语音数据的长度表1 wav文件格式说明表(1)选取WINDOWS下MEDIA中的任一WAV文件,采用播放器进行播放,观察其播放波形,定性描述其特征;(2)根据WAV文件的存储格式,利用MATLAB或C语言,分析并读取文件头和数据
5、信息;(3)将文件的通道数、采样频率、样本位数和第一个数据读取并显示出来。三、实验设备PC机。四,实验结果(1)实验对象:选择windows系统自带的ringout.wav为实验对象。图1-1 整体波形图1-2 部分波形(2)文件信息:文件头为: RIFF通道数= 1 为双声道采样平率= 11025样本位数= 1第一个数据为: 0五、实验代码y,fs,n=wavread(ringout.wav); %观察波形figure(1)plot(y) y,fs,n=wavread(ringout.wav,1 500); %显示波形中的前面一段,便于观察figure(2)plot(y)f=fopen(ri
6、ngout.wav,r);disp(文件头为:)a0=fscanf(f,%4s,1,1); %显示RIFF标志disp(a0)f=fopen(ringout.wav,r);a1,count1=fread(f,2,11); %跳过读RIFF标志,文件长度,wave fmt标志, 过渡字节及读格式类别共4*5+2=22个字节a2,count2=fread(f,1,1); %读取通道数的两个字节disp(通道数=)disp(a2)if a4=1 disp(为单声道)else disp(为双声道)enda=fread(f,1,1);a31,count31=fread(f,1,1); %读取采样率a32
7、,count32=fread(f,1,1);disp(采样平率=)disp(a32*28+a31)a4,count4=fread(f,4,1); %传输数据速率a5,count5=fread(f,2,1); %读取数据块的调整数a61,count61=fread(f,1,1); %读取每样本的数据位数a62,count62=fread(f,1,1); disp(样本位数=)disp(a62*28+a61)a7,count7=fread(f,4,2); %跳过读data及语音信号长度a8,count8=fread(f,1,1); %读取第一个数据disp(第一个数据为:) %显示第一个数据dis
8、p(a8)实验二语音信号的时域参量分析一、实验的任务、性质与目的:(1)增强学生对语音时域分析理论的理解,尤其是语音的短时能量、幅度和过零率的的分析和应用;(2)进一步提高学生分析问题和解决问题的能力从而培养学生初步掌握进行科学研究的方法和总结实验结果的能力。二、实验原理和步骤:(1)利用MATLAB或C语言,针对ringout.wav文件,求取语音信号的短时能量函数、短时平均幅度函数和短时平均过零率三大时域参量;三大时域参量的定义式是:短时能量函数和短时平均幅度函数 短时平均过零率(2)将三大时域参量的结果用波形图的方式显示出来;(3)分析并标识波形图上的清浊音信息。三、实验设备PC机。四、
9、实验结果(1)采用MATLAB语言对三大时域参量求取:短时能量函数a=wavread(C:ringout.wav); subplot(6,1,1),plot(a); N=32; for i=2:6 h=linspace(1,1, (i-1)*N); %形成一个矩形窗,长度为N En=conv(h,a.*a); %求卷积得其短时能量函数En subplot(6,1,i),plot(En); if(i=2) legend(N=32); elseif(i=3) legend(N=64); elseif(i=4) legend(N=128); elseif(i=5 legend(N=256); els
10、eif(i=6) legend(N=512); end end短时平均幅度函数a=wavread(C:ringout.wav); subplot(6,1,1),plot(a); N=32; for i=2:6 h=linspace(1,1,(i-1)*N); %形成一个矩形窗,长度为N En=conv(h,abs(a); %求卷积得其短时平均幅度函数En subplot(6,1,i),plot(En); if(i=2) legend(N=32); elseif(i=3) legend(N=64); elseif(i=4) legend(N=128); elseif(i=5) legend(N=
11、256); elseif(i=6) legend(N=512); end end短时平均过零率a=wavread(ringout.wav); n=length(a); N=320; subplot(3,1,1),plot(a); h=linspace(1,1,N); %形成一个矩形窗,长度为N En=conv(h,a.*a); %求卷积得其短时能量函数En subplot(3,1,2),plot(En); for i=1:n-1 if a(i)=0 b(i)= 1; else b(i) = -1; end if a(i+1)=0 b(i+1)=1; else b(i+1)=-1; end w(
12、i)=abs(b(i+1)-b(i); end %求出每相邻两点符号的差值的绝对值 k=1; j=0; while (k+N-1)n Zm(k)=0; for i=0:N-1; Zm(k)=Zm(k)+w(k+i); end j=j+1; k=k+160; %每次移动半个窗 end for w=1:j Q(w)=Zm(160*(w-1)+1)/640; %短时平均过零率 end subplot(3,1,3),plot(Q);(2)将三大时域参量的结果用波形图的方式显示出来图2-1短时能量函数的波形图2-2短时平均幅度函数图2-3短时平均过零率(3)分析并标识波形图上的清浊音信息很明显,在这个WAV文件中轻、浊音交替周期行出现,无论是短时能量函数,还是短时平均幅度函数,从函数的幅值便可看出,幅度大的是浊音,幅度小的是轻音。很容易区分。 短时平均过零数,与信号的频率有关,两者正相关,也就是说声音信号的频率越高,短时平均过零数越大,因此可以用来区分清音和浊音,清音的平率高,过零数大,而浊音则相对较小。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1