《语音信号处理》实验报告.docx
《《语音信号处理》实验报告.docx》由会员分享,可在线阅读,更多相关《《语音信号处理》实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
《语音信号处理》实验报告
盛年不重来,一日难再晨。
及时宜自勉,岁月不待人。
中南大学
信息科学与工程学院
语音信号处理
实验报告
指导老师:
覃爱娜
学生班级:
信息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位的短整数(shortint00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。
WAV文件数据块包含以脉冲编码调制(PCM)格式表示的样本。
在单声道WAV文件中,道0代表左声道,声道1代表右声道;在多声道WAV文件中,样本是交替出现的。
WAV文件的格式见表1。
偏移地址
字节数
数据类型
内容
文件头
00H
4
char
"RIFF"标志
04H
4
longint
文件长度
08H
4
char
"WAVE"标志
0CH
4
char
"fmt"标志
10H
4
过渡字节(不定)
14H
2
int
格式类别(10H为PCM形式的声音数据)
16H
2
int
通道数,单声道为1,双声道为2
18H
2
int
采样率(每秒样本数),表示每个通道的播放速度
1CH
4
longint
波形音频数据传送速率,其值为通道数×每秒数据位数×每样本的数据位数/8。
播放软件利用此值可以估计缓冲区的大小。
20H
2
int
数据块的调整数(按字节算的),其值为通道数×每样本的数据位值/8。
播放软件需要一次处理多个该值大小的字节数据,以便将其
值用于缓冲区的调整。
22H
2
每样本的数据位数,表示每个声道中各个样本的数据位数。
如果有多个声道,对每个声道而言,样本大小都一样。
24H
4
char
数据标记符"data"
28H
4
longint
语音数据的长度
表1wav文件格式说明表
(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',[1500]);%显示波形中的前面一段,便于观察
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标志,文件长度,wavefmt标志,过渡字节及读格式类别共4*5+2=22个字节
[a2,count2]=fread(f,[1,1]);%读取通道数的两个字节
disp('通道数=')
disp(a2)
ifa4==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文件,求取语音信号的短时能量函数、短时平均幅度函数和短时平均过零率三大时域参量;
三大时域参量的定义式是:
短时能量函数和短时平均幅度函数
短时平均过零率
(2)将三大时域参量的结果用波形图的方式显示出来;
(3)分析并标识波形图上的清浊音信息。
三、实验设备
PC机。
四、实验结果
(1)采用MATLAB语言对三大时域参量求取:
短时能量函数
a=wavread('C:
\ringout.wav');
subplot(6,1,1),plot(a);
N=32;
fori=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;
fori=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);
fori=1:
n-1
ifa(i)>=0
b(i)=1;
else
b(i)=-1;
end
ifa(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;
fori=0:
N-1;
Zm(k)=Zm(k)+w(k+i);
end
j=j+1;
k=k+160;%每次移动半个窗
end
forw=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文件中轻、浊音交替周期行出现,
无论是短时能量函数,还是短时平均幅度函数,从函数的幅值便可看出,幅度大的是浊音,幅度小的是轻音。
很容易区分。
短时平均过零数,与信号的频率有关,两者正相关,也就是说声音信号的频率越高,短时平均过零数越大,因此可以用来区分清音和浊音,清音的平率高,过零数大,而浊音则相对较小。
盛年不重来,一日难再晨。
及时宜自勉,岁月不待人。