发明内容
本发明提供一种基于内容的自动音频分析系统及其方法。
本发明的基于内容的自动音频分析系统包括:音频流获取模块,用以依据一定解码规则从外部音频源获取音频流;音频流分段模块,用以对从音频流获取模块获取的音频流进行分段,使得分段后的每个段落具有单一的声学特征;音频流类型判别模块,用以对从音频流分段模块输出的具有单一声学特征的音频流进行分析,得到其确定的声学特征;语音流分析模块,用以对音频流类型判别模块判别出的声学特征为语音的音频流进行识别得到拼音图;基于拼音序列的关键词检索模块,用以对语音流分析模块得到的拼音图进行检索,对感兴趣的关键词,得到该关键词在音频流中的位置。
如图1所示的基于内容的自动音频分析系统,其中,音频流获取模块100,依据一定解码规则从外部音频源获取音频流。外部音频源可以是音频文件101,可以是视频文件102,也可以是音频输入设备103。对于音频文件和视频文件,需要按照一定的解码规则对文件进行解码,得到只包含数据部分的音频流;对于音频输入设备,如麦克风,需要提供该设备到音频分析系统的接口,从而得到只包含数据部分的音频流。得到的音频流送入音频流分段模块进行下一阶段的处理。
音频流分段模块200,对从音频流获取模块获取的音频流进行分段。分段后,每个分段都具有单一的声学特征。对音频流分段需要首先通过能量方差201、能量202两个单元寻找音频流中的静音点,静音点是通过计算音频信号的能量和能量方差得到的。当音频信号的能量值小于特定阈值时,系统判定找到音频流中的静音点;当音频信号能量值的方差值小于特定阈值时,系统判定音频流中存在静音点,在确定音频流中存在静音点后,计算音频信号能量值的方差,当音频信号能量值的方差大于特定阈值时,确定音频流中静音段结束,至此确定找到音频流中的静音点。201、202两个单元的输出的信息经过综合,得出统一的分割点信息。将已知静音点的音频流送入音频特征检测单元203,以得到更细致的音频变化点。通过计算在音频流中取得的相邻音频片段的特征差异度值,可以判定音频特征的变化点。当特征差异度值超过特定阈值后确定音频特征变化点存在。203单元输出的每个分段都已具有单一的声学特征,但是由于203单元对音频处理原理的限制,此时得到的分割信息会过于精细,因此需要进行分段点合并单元204。204单元会检测到相邻分段中声学特性的变化情况,如果发现相邻分段的声学特性十分相似,则判定这两个分段应该合并。分段后的音频流被送入音频流类型判断模块以判断该分段的具体类型。
音频流类型判别模块300,对从音频流分段模块输出的具有单一声学特征的音频流进行分析,得到其确定的声学特征。分析的方法有两种,根据时域特征分类单元301和根据频域特征分类单元302分别根据时域和频域特征对音频流的特征进行分析。301单元通过过零率、短时能量、短时能量均方差、静音帧比、子频带能量分布中的一种时域特征或几种时域特征来判断单一音频流的类型;302单元通过线性预测倒谱系数、梅尔倒谱系数中的一种频域特征或两种频域特征来判断单一音频流的类型。这两个单元是并行处理音频流的,两个单元输出的结果经过置信度的判别之后合并,由此确定声学特征的类型。具有单一声学特性的音频流经过301和302两个单元的判别,其声学特性会被确定。
语音流分析模块400,对音频流类型判别模块判别出的声学特征为语音的音频流进行识别得到拼音图。在本发明的系统中的语音流分析模块,主要对语音流部分进行分析,非语音流部分在经过音频流类型判别模块后被抛弃,只有语音流被送入语音流分析模块进行内容的分析与识别。语音分析主要是基于分帧后的特征矢量分析进行的,因此,从音频流类型判别模块输入的语音流首先进入特征矢量序列提取单元401,得到可以代表该语音流的特征矢量序列。在模型匹配单元402,该特征矢量序列与拼音的声学模型进行匹配,对各个候选拼音序列分别计算拼音的匹配距离。加入拼音间统计依存关系单元403后,拼音序列的匹配距离被重新计算,得到多候选拼音构成的拼音图。此时的拼音图还停留在粗化拼音图404的阶段。对粗化拼音图进行自适应修正和平滑修正后,便可以得到细化拼音图405。405单元被存储,至此对语音流的分析过程结束。
基于拼音序列的关键词检索模块500,对语音流分析模块得到的拼音图进行检索。拼音序列单元502存储待检索的拼音序列,拼音序列和单元405输出的拼音图同时被送入置信度计算单元501,进行置信度的计算。置信度的计算是利用前后向算法,计算拼音串的后验概率,根据事先设定的置信度门限判断该被检索的拼音序列是否在该音频片段中出现。如果经判断,该拼音序列在音频片段中出现,501单元可以同时得到该拼音序列在音频流中的位置。
具体实施方式
参见图1,对于音频分析系统来说,音频流获取模块是整个音频分析的基础,是对数据进行预处理的过程。解码器会针对不同的音频流来源采取不同的解码方式。音频流的来源有多种,asf/wma/wmv/avi/wav/mpeg/mp3/aiff/pcm/raw/vox都是可能的音频流来源,而每种来源中的音频的采样频率和采样位数都不尽相同:例如电话音频的采样频率一般为8000Hz,而CD的采样频率一般为44100Hz;采样位数也会由于来源的不同从8位变化到24位。通过音频流获取模块后,各种不同来源的音频流都被统一成一种格式,该统一格式的音频流具有相同的采样频率和采样位数,并且只包含有数字化的音频本身的信息。
对于一段未知属性的音频流,需要分析其音频特性,这时便需要利用音频分段和音频类型判别的方法。音频分段和音频类型判别是音频检索的基础,在语音识别的前端信号处理中有着十分重要的意义。在基于内容的语音分析系统中,输入语音分析模块的应该是声学特征单一的音频片断。但是,真实环境下采集的语音流往往不满足这样的条件,而是多种特征混杂在一起的。以广播新闻为例,其声学环境复杂多变,句子边界未知,如果不做前端处理便直接送入语音分析模块,会大大降低语音分析模块的性能。这就需要对语音流加以预处理,对语音流进行分割。
停顿作为一个重要的韵律特征,反映了语料的结构信息。句子与句子中间以及语音与非语音中间通常会存在停顿,而停顿是由静音来表征的,此时的音频信号仅为背景噪声。通过检测静音可以对连续音频流进行分割,达到初步分段的目的。
通过能量的高低来判断静音点是否存在是最容易实现的一种方式,在音频分段模块中,我们使用能量作为判断静音点的依据之一。但是,由于现实情况中声学环境不是一成不变的,也就是说静音的能量有高有低,那么,仅仅依靠能量的高低来分段是不够的,因此考虑使用能量的方差来作为分段的另一依据。
定义能量方差如下:
其中 ei为各帧的能量;N为能量的帧数,与停顿的长短有关,即如果设定最小停顿为300ms,而能量的帧频率为100时,N为30。
能量e用下式计算:
其中x(t)为第t个采样点,T为每帧包含的总的采样点数目。
设定门限Tvar,以N为窗长计算窗内能量方差。门限Tvar的计算方法如下:
Tvar=α.log10σglobal,σglobal为整个音频流范围内的方差,α为比例因子,取值0.7-1.0之间。
若得到的方差值大于设定的门限,则说明该段音频中没有静音。以一定的步长滑动窗口,重新计算能量方差。若得到的能量方差值小于门限值,则说明窗内信号含有静音点。为了找到静音的结束点,不断增大窗的长度,直到计算出的能量方差大于门限为止,至此找到一个静音点。之后把窗长重新设为N,开始下一次查找。如此可以找到音频流中所有静音点。各个静音点则把连续音频流分割成各音频段,之后可以以音频段为单位进行进一步的处理。
检测音频特性的变化点的本质是计算两个模型之间的距离。首先将音频信号用声学特征矢量进行建模,然后计算两个相邻窗之间声学特征矢量的距离。直接计算声学特征矢量的距离是难以进行的,因此需要采取间接的方式。通常认为,这样得到的声学特征矢量满足高斯分布,所以考虑首先对窗内的声学特征矢量用高斯分布来拟合,然后计算两个高斯分布的距离。那么计算声学特征矢量的距离便转化为计算统计模型的距离。现在是计算两个统计模型的距离,所以有很多度量距离的方法。
假设现有两个高斯分布,分别是N(μ1,∑1)和N(μ2,∑2),几种常见的计算高斯分布距离的方法如下:
Kullback-Leibler-2 distance:
Mahalanobis distance:
Bhattacharyya distance:
计算模型距离可以使用但是并不局限使用上面三种方法,在这里我们使用Kullback-Leibler-2距离计算两个模型之间的距离。
显然如果两个分布的距离值很大,则说明很可能是一个声学特征跳变点,而分布的距离很小则说明这两个部分处于相似的声学环境当中,声学特性应该相同。
在一个连续的音频信号流上,用两个相邻的窗各取一段信号,将每窗内信号特征矢量拟合为一个高斯分布,计算这两个高斯分布间的距离。然后按一定的步长移动这两个窗口,再次计算两窗的距离,从而得到一条距离测度曲线。最后按照一定的门限设置规则找出曲线上可能的声学变化点。
该模块对环境的改变比较敏感,召回率很高,但是同时也会检测出很多冗余点,造成虚警率过高。正是由于检测音频特性变化点单元的这个特性,分段点合并单元的设置才是有必要的。
分段点合并单元是在已经确定分割点的情况下,判断两个连续音频段是否可以合并。
假设x1,x2,…xN~N(μ,∑),假设在音频片断中只包含一个分割点,i时刻发生跳变,把整个音频段分为前后两个部分,对分割后的两个部分,有
x1,x2,…xi~N(μ1,∑1)和xi+1,xi+2,…xN~N(μ2,∑2)
∑、∑1、∑2分别是所有音频数据、前i个音频数据、后N-i个音频数据的协方差矩阵。
那么可以把判断是否应当合并看作是一个模型选择问题。模型之一是把所有音频数据用一个高斯分布来描述;模型之二是以分割点为界,将音频数据分成两个部分,分别用一个高斯分布来描述。两个模型的BIC值可以用下面的式子来表示:
其中,N、N1、N2分别是描述该高斯分布的特征矢量数,d是矢量空间的维数,λ是一个惩罚因子,一般取值为1。
如果BIC值小于0,则认为两个音频段是属于同一分布,应该合并,反之则不合并。
对于上式中的惩罚因子λ也可以有不同的取值,这样可以根据不同的情况设定不同的λ值,以期得到更优的结果。
经过合并后的分段点显示了音频流的特征信息。其中音频特征为语音的部分供语音流分析模块分析之用。
在语音流送入语音分析模块之后,首先要对语音流提取特征矢量序列。语音特征有多种,如LPC系数、梅尔频率倒谱系数(Mel-Frequency Cepstral Coefficient,MFCC)、感知线性预测参数(Perceptual Linear Predictive,PLP)等等。在这里我们并不关心采用何种参数,本发明可以适用任何一种特征参数。在这里我们采用MFCC系数为例。
这里采用的MFCC系数为14维,14维MFCC系数加上相应的一阶二阶差分,以及其对数能量和对数能量的一阶二阶差分构成了45维的特征矢量。分帧提取的特征矢量组合在一起构成了特征矢量序列。
模型匹配单元可以采用的声学模型同样有多种:单音子模型(Monophone)、双音子模型(Biphone)、三音子模型(Triphone)或者更多音子模型。这里为了叙述的方便采用单音子模型。同时在模型匹配单元中加入音素语言模型,即利用拼音间的统计依存关系辅助模型匹配,以期得到更好的拼音图的结果。
模型匹配单元可以得到粗化的拼音图。在得到粗化拼音图之后,可以采用自适应方法和平滑方法对拼音图进行修正,以使得拼音图可以更好地反映音频流携带的信息。常见的自适应方法有最大后验概率自适应(Maximum A Posteriori,MAP)和最大似然线性回归自适应(Maximum Likelihood Linear Regression,MLLR),这里采用MLLR自适应方法。这样便可以得到细化的拼音图。该拼音图可以用作关键词检索。
关键词检索系统一般分为如下两类:
一是单阶段系统,搜索在关键词模型和非关键词模型(或者称为废料模型)并联的网络上进行。当关键词改变时,系统必须对语音流再次进行分析,在对同以音频流进行多次检索时,检索速度相对较慢,因此不适合用户需要反复修改查询条件的场合下使用。
二是两阶段系统。第一阶段为预处理阶段,通过语音分析模块将语音流数据转化为拼音图或者词图或者文本,对每段音频流都只需要运行一次,以后为响应用户的检索只需在拼音图或者词图或者文本中查找匹配。
本系统中的音频检索任务,是在数据库一定的情况下,根据不同的查询请求返回相应的结果,因此考虑采取两阶段系统作为系统方案。
前面我们已经得到了细化的拼音图,此时只是需要输入待检索的拼音序列,和细化的拼音图一起处理,便可以得到检索的结果。
检索时,利用前后向算法计算待检索的拼音序列的后验概率,从而进行置信度的计算,之后根据事先设定的置信度门限判断该音频片段中是否出现被检索的拼音序列。如果存在该拼音序列,可以同时得到待检索拼音序列在音频流中的位置。