哈尔滨理工大学学士学位论文 本文中定义除语音、音乐、静音和噪音之外的声音为环境声音。主要分析音频来源和含有的类别信息。本文将音频分为:纯语音,带背景音的语音,音乐,环境音,噪音,静音等六类。
2.2 层次化音频结构分析框架
音频结构分析是指对音频作时域上的分割。结构分析的任务是将组成音频的音频帧序列分割成时间上连续的几个集合,每个集合是一个内容上相对独立的、连续的结构单元。时间粒度较小的结构单元,由于时间粒度过小,很难从中提取有价值的内容语义;时间粒度过大的结构单元,根据现有的技术对这样的结构单元直接处理是难于实现的。因此,音频结构分析应该集成不同时间粒度的结构单元,从低到高分层实现。
音频 音频高层语义音频镜头音频镜头 高层语义 音频镜头音频段1 音 频 音频段k 音频分割 音频帧1 音 频 音频帧k 音频分类 音频特征 特征抽取 图2-2 层次化音频结构图
本文定义如下具有不同时间粒度的音频语义单元。
音频帧(frame):音频是一个非平稳随即过程,其特性是随时间变化的,但这种变化是很缓慢的。鉴于此可以将音频段分为一系列相继短段进行处理,成为音频帧。
音频段(clip):由于音频帧的时间粒度太小,很难从中提取有意义的语义内容,所以需要在帧的基础上定义时间粒度更大的音频结构单元(通常
- 6 -
哈尔滨理工大学学士学位论文 比帧长大若干个数量级),本文称之为音频段(clip)(5)。clip由若干帧组成,时间长度一定是本文中音频分类的基本对象,具有一定语义,如语音clip,音乐clip等。clip的特征在音频帧特征的基础上计算得到。
音频镜头(short):这是从视频镜头引申过来的概念。由于dPi太短,不适合进行语义内容分析。本文中定义含有同种音频类别的音频结构单元为音频镜头,音频镜头由若干相同类别的dPi组成,时间粒度更大,时间长度不定,是音频分割的结果。具有一定的语义,如环境音镜头,音乐镜头等。
音频高层语义单元:由音频镜头的不同组合形成的具有完整丰富语义内容的音频结构单元。根据需要可以有多层。它的分析是以下层单元为基础的,是音频结构化的目标(高层语义单元的生成方法不在本文研究范围之内)。
上述这些结构单元是层次化音频结构组成要素,描述了音频结构化从低到高不断提升的过程。本文提出一种新的层次化音频结构如上图所示。音频帧和音频dPi是特征抽取对象,其中clip的特征在音频帧特征的基础上计算得到;音频段是音频分类对象,该层次上得到的是经过类别标注的音频clip序列;相同类别的。hp序列构成音频镜头,采用的相关技术是音频分割技术;音频clip和音频镜头都具有一定的语义,主要是类别信息。不同的音频结构的不同组合形成高层音频结构单元,是具有完整丰富语音内容的音频对象。
- 7 -
哈尔滨理工大学学士学位论文 第3章 音频信号特征的提取
音频特征分析与抽取是音频分类的基础,所选取的特征应该能够充分表示音频频域和时域的重要分类特性,对环境的改变具有鲁棒性和一般性。
特征抽取的基础是数字信号处理技术和信号系统理论,实际应用中特征抽取包括三个步骤:原始音频预处理,特征抽取和特征集的构造。
3.1 语音端点检测的基本方法
3.1.1 短时加窗处理
虽然语音信号是非平稳过程,是时变的,但是人的发音器官的肌肉运动速度较慢,所以可以将语音信号认为是局部平稳的或短时平稳。因此可以采用一个一定长度的窗函数来截取语音信号形成分析帧,即对语音数据加一个滑动的窗口。为了能够得到高的频率分辨率并克服泄漏现象,本文选择汉明窗(9)。汉明窗表达式如下,其中N为窗长:
?0.54?0.46cos?2?/?N?1??,0?n?N?1 (3-1) w?n????0,其他 窗函数的长度对能否反映语音信号的幅度变化起决定性的作用。如果N太大,窗函数等效于很窄的低通滤波器,此时信号的短时信息将缓慢变化,因而不能充分地反映波形变化的细节;反之,如果N太小,则信号的能量将按照信号波形的细微状况而很快地起伏。因此,通常认为一个语音帧内,应含有1~ 7个基音周期,在采样率为10kHz的情况下,N 选择在100~200量级是合适的。分帧可以是连续的,也可以是交叠的。为了使特征参数的平滑过渡,保证其连续性,分帧常采用交叠的。
3.1.2 短时平均能量
语音信号分为有声段和无声段,无声段就是背景噪声段。由于有声段的能量大于无声段,因此传统检测方法认为,在高保真度录音的环境中,只要计算输入信号的短时能量,就能够把有声段和无声段区分开来。
由于语音信号的能量随时间而变化,清音和浊音之间的差别想当显著。因此对短时能量和短时平均幅度进行分析,可以描述语音的这种特征变化情况。
定义n时刻某语音信号的短时平均能量En为 En?m????[x(m)w(n?m)]??2?m?n?(N?1)?[x(m)w(n?m)]n2 (3-2)
- 8 -
哈尔滨理工大学学士学位论文 式中N为窗长,可见短时能量为一帧样点值的平方和。特殊地,当窗函数为矩形窗时,有
En?也可以从另外一个角度来解释。 令h(n)=w2(n) 则 En?m?n?(N?1)?xn2(m) (3-3)
m????x??2(m)h(n?m)?x2(n)*h(n),此式可以理解为:首先语音信
号各个样点值平方,然后通过一个冲激响应为h(n)的滤波器,输出由短时能量构成的时间序列,如下图所示
X(n) ( · )X(n) h(n) 2En
图3-1 流程图
冲激响应h(n)的选择或者说窗函数的选择直接影响着短时能量的计算。若h(n)对x2(n)的平滑作用非常显著,使得短时能量几乎没多大变化,无法反应语音的时变特征。反之,若h(n)的序列长度过小,那么等效窗又不能提供足够的平滑,以至于语音振幅瞬时变化的许多细节仍然被保留了下来,从而看不出振幅包络的变化规律。通常N的选择与语音的基音周期相联系,一般要求窗长为几个周期的数量级。
下面给出matlab的实现过程
fid=fopen('D:/test.wav','rt'); x=fscanf(fid,'%f'); fclose(fid);
%计算N=200,帧移为100的语音能量
s=fra(200,100,x) %对输入信号进行分帧,其中帧长200,帧移100
s2=s.^2; %一帧内各样点能量 energy=sum(s2) %求一帧能量
subplot(211) %定义画图数量和布局 plot(energy) %画N=200的语音能量图
- 9 -
哈尔滨理工大学学士学位论文 xlabel('帧数')
ylabel('短时能量E')
legend('N=200') %曲线标识 %计算N=400,帧移为200的语音能量 s=fra(400,200,x) s2=s.^2; energy=sum(s2) subplot(212) plot(energy) ylabel('短时能量E')
legend('N=400')
其中fra()为分帧函数,其MATLAB程序如下:
function f=fra(len,inc,x) %对读入数据进行分帧,len为帧长,inc为帧重叠样点数
%x为读入语音数据 fh=fix(((size(x,1)-len)/inc)+1) %计算帧数
f=zeros(fh,len); %设一个零矩阵,行为帧数,列为帧长 i=1;n=1;
while i<=fh %帧间循环 j=1;
while j<=len %帧内循环 f(i,j)=x(n); j=j+1;n=n+1; end
n=n-len+inc; i=i+1; end
matlab仿真结果如下:
图3-2 语音信号的短时平均能量
- 10 -