《语音信号处理》实验报告材料

《语音信号处理》实验报告材料
《语音信号处理》实验报告材料

实用

中南大学

信息科学与工程学院

语音信号处理

实验报告

指导老师:覃爱娜

学生班级:信息0704

学生名称:阮光武

学生学好:0903070430

提交日期:2010年6月18日

实验一

语音波形文件的分析和读取

一、实验的任务、性质与目的

本实验是选修《语音信号处理》课的电子信息类专业学生的基础实验。通过实验:

(1)掌握语音信号的基本特性理论:随机性,时变特性,短时平稳性,相关性等;

(2)掌握语音信号的录入方式和*.WAV音波文件的存储结构;

(3)使学生初步掌握语音信号处理的一般实验方法。

二、实验原理和步骤:

WAV文件格式简介

WAV文件是多媒体中使用了声波文件的格式之一,它是以RIFF格式为标准。每个WAV文件的头四个字节就是“RIFF”。WAV文件由文件头和数据体两大部分组成,其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分。常见的WAV声音文件有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。采样率是指声音信号在“模拟→数字”转换过程中,单位时间内采样的次数;采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为8位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。WAV文件数据块包含以脉冲编码调制(PCM)格式表示的样本。在单声道WAV文件中,道0代表左声道,声道1代表右声道;在多声道WAV文件中,样本是交替出现的。WAV文件的格式见表1。

表1 wav文件格式说明表

(1)选取WINDOWS下MEDIA中的任一WAV文件,采用播放器进行播放,观察其播放波形,定性描述其特征;

(2)根据WAV文件的存储格式,利用MATLAB或C语言,分析并读取文件头和数据信息;

(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('ringout.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('为双声道')

end

a=fread(f,[1,1]);

[a31,count31]=fread(f,[1,1]); %读取采样率

[a32,count32]=fread(f,[1,1]);

disp('采样平率=')

disp(a32*2^8+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*2^8+a61)

[a7,count7]=fread(f,[4,2]); %跳过读data及语音信号长度

[a8,count8]=fread(f,[1,1]); %读取第一个数据

disp('第一个数据为:') %显示第一个数据

disp(a8)

实验二

语音信号的时域参量分析

一、实验的任务、性质与目的:

(1)增强学生对语音时域分析理论的理解,尤其是语音的短时能量、幅度和过零

率的的分析和应用;

(2)进一步提高学生分析问题和解决问题的能力从而培养学生初步掌握进行科学

研究的方法和总结实验结果的能力。

二、实验原理和步骤:

(1)利用MATLAB 或C 语言,针对ringout.wav 文件,求取语音信号的短时能量函数、

短时平均幅度函数和短时平均过零率三大时域参量; 三大时域参量的定义式是: 短时能量函数和短时平均幅度函数

∑∑-=-====???-≤≤=-≤≤+=1

1

02)

()

(...

,2,1,001

01)(10)

()()(N m n N m n n n n m x M m x E T T T n N m m w N N m m n x m w m x 为帧移长度其他为帧长

短时平均过零率

??

?<-=≥=--=∑-=0

)(1

))(sgn(0)(1

))(sgn(sgn[.])]

1(sgn[)(sgn[211

n x n x n x n x m x m x Z N m n n n 为符号函数 (2)将三大时域参量的结果用波形图的方式显示出来; (3)分析并标识波形图上的清浊音信息。

三、实验设备

PC 机。

四、实验结果

(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');

elseif(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=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(i)=abs(b(i+1)-b(i));

end %求出每相邻两点符号的差值的绝对值k=1;

j=0;

while (k+N-1)

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文件中轻、浊音交替周期行出现,

无论是短时能量函数,还是短时平均幅度函数,从函数的幅值便可看出,幅度大的是浊音,幅度小的是轻音。很容易区分。

短时平均过零数,与信号的频率有关,两者正相关,也就是说声音信号的频率越高,短时平均过零数越大,因此可以用来区分清音和浊音,清音的平率高,

过零数大,而浊音则相对较小。

相关主题
相关文档
最新文档