一、语音信号处理总体结构
1、无论是语音识别和语音编码合成,输入的语音信号首先要进行预处理:
①对信号进行适当放大和增益控制。
②反混叠滤波来消除工频信号的干扰。
如:预处理包括:分帧、加窗、预加重、端点检测。
(1)分帧、加窗
语音信号特性是随时间变化的,是一个非平稳随机过程。在短时间内其特性可以视为是稳定的,即语音的短时平稳特性,贯穿于语音信号全过程的是短时分析技术。进行短时分析的过程一般包括分帧、加窗和DFT。
1)分帧
1、它必须足够短来保证帧内信号是平稳的
2、一般语音分帧的长度取10~40ms左右
3、特定的任务,选择特定的帧长
语音分帧并不是确定帧长就结束了,为了使得语音帧之间有一个平滑的过度,一般帧与帧之间有一定的重叠,相邻两帧的起始位置的时间差叫做帧移。帧移一般为帧长的1/2,3/4。
选择较短的帧移可以跟踪语音信号的连续性,并且不会遗漏帧边缘处的突然变化,即有助于处理语速较快的情况;较长的帧移意味着较少的语音帧数目,这减少了后续相关处理(如解码)的计算量。
2)加窗
当对语音信号进行截断分帧后,将产生能量泄露现象。截断函数是频带无限的函数,而语音信号是有限带宽信号,因而截断后语音信号的在频率中能量将被扩展。根据采样定理,只有采样频率超过信号最高频率的2倍,才可能恢复信号,因而无论采样频率多高,只要经过截断处理,则将引起混叠。此时,通过使用加权函数,即窗函数,使能量集中在主瓣,则可以获得更接近真实频谱的信号,减少能量泄露。
2、然后对其进行数字化,即将模拟信号转化为数字信号,便于计算机处理。
语音信号是一个时间和幅度都连续变化的一维模拟信号,计算机不能识别,要想计算机对他进行处理,就必须先进行采样和量化,将它变成时间和幅度都离散的数字信号。
对于模拟信号Xa(t),他表示函数值随连续时间变量t的变化趋势。如果以一定的时间间隔T对这样的连续信号取值,则连续信号Xa(t)变成离散信号X(n)=Xa(nT),这个过程称作采样。两个采样点之间的间隔T称为采样周期,他的倒数Fs为采样频率。
3、然后进行特征提取,用反应语音信号的若干参数来代表语音。
常用的特征参数包括:
① 基因周期基音周期,
② 共振峰,
③ 短时平均能量或幅度,
线性预测系数(LPC),
⑤ 感知加权预测系数(PLP),
⑥ 短时平均过零率,
⑦ 线性预测倒谱系数(LPCC),
⑧ 自相关函数,梅尔倒谱系数(MFCC),
⑨ 小波变换系数,
⑩ 经验模态分解系数(EMD),
伽马通滤波器系数(GFCC)等。
4、语音识别:
(1)训练阶段:将用特征参数形式表示的语音信号进行相应的处理,获得表示识别基本单元共性特点的标准数据,以此构成参考模板,将所有能识别的基本单元的参考模板结合在一起形成参考模式库。
(2)识别阶段:将待识别的语音信号经过特征提取后逐一与参考模式库中的各个模板按照某种原则进行比较,找出最像的参考模板多对应的发音,即为识别结果。
5、语音编码与合成技术,将语音信号进行某种压缩处理,接着进行以下:
(1)语音编码,则对编码后的语音信号进行传输,在接收端进行解压缩回放播出。
(2)语音合成,对编码后的语音信号进行存储,待需要的时候进行解压缩回放播出。
二、语音信号声学基础
1、语音信号的产生以及如何感知
产生:气流通过声带,在喉咙中震动产生声音,声音通过喉咙和声道进入空腔,不同的舌位,唇位和颚位对声音进行调节。
①肺部和气管,产生语音信号的能量源;
②咽喉,包括声带和声门,是语音的振动源;
③咽腔、口腔和鼻腔等,这些由声门到嘴唇的呼吸通道构成声道,是语音的谐振腔;
④唇、齿、舌、面颊等其他发音器官,主要用于改变谐振腔形状。
感知:语音信号通过耳朵的外耳,中耳,内耳传到听觉神经,最终被大脑解读。
2、清音以及浊音是什么
当声带处于收紧状态时,流经的气流使声带振动,这时产生的声音称为浊音,不伴有声带振动的音称为清音。
3、声音以及声源的产生
声音是一种空气振动产生的波,声源是由于声带的振动产生的。
三、常见问题
1、窗函数
(1)窗函数是什么?
“窗”是一个单位权重的加权函数,称为 “矩形窗”。不同的窗函数计权是不一样的。也就是说,可以用不同的截取函数(窗函数)来做信号截取。底用何种窗函数基于信号类型和分析目的。常用的窗函数有矩形窗、汉宁窗、平顶窗、指数窗等。
(2)为什么要加窗?
当对语音信号进行截断分帧后,将产生能量泄露现象。截断函数是频带无限的函数,而语音信号是有限带宽信号,因而截断后语音信号的在频率中能量将被扩展。根据采样定理,只有采样频率超过信号最高频率的2倍,才可能恢复信号,因而无论采样频率多高,只要经过截断处理,则将引起混叠。此时,通过使用加权函数,即窗函数,使能量集中在主瓣,则可以获得更接近真实频谱的信号,减少能量泄露。
(3)窗函数的时频域特征
加窗实质是用一个所谓的窗函数与原始的时域信号作乘积的过程(当然加窗也可以在频域进行,但时域更为普遍),使得信号似乎更好地满足傅得相乘后傅立叶变换的周期性要求。如下图所示,原始的信号是不满足FFT变换的周期性要求的,变换后存在泄漏,如果施加一个窗函数,会在一定程度上减少泄漏。为了减少泄漏,用一个窗函数与原始周期信号相乘,得到加窗后的信号为周期信号,从而满足FFT变换的周期性要求。
原始周期信号×窗函数
为了减少泄漏,可采用不同的窗函数来进行信号截取,因而,泄漏与窗函数的频谱特征相关的。
(4)加窗原则
加窗函数时,应使窗函数频谱的主瓣宽度应尽量窄,以获得高的频率分辨能力;旁瓣衰减应尽量大,以减少频谱拖尾,但通常都不能同时满足这两个要求。各种窗的差别主要在于集中于主瓣的能量和分散在所有旁瓣的能量之比。
窗的选择取决于分析的目标和被分析信号的类型。一般说,有效噪声频带越宽,频率分辨能力越差,越难于分清有相同幅值的邻近频率。选择性(即分辨出强分量频率邻近的弱分量的能力)的提高与旁瓣的衰减率有关。通常,有效噪声带宽窄的窗,其旁瓣的衰减率较低,因此窗的选择是在二者中取折衷。
(5)常见的窗有那些?
名称 | 特点 | 应用 |
---|---|---|
矩形窗 Rectangle | 矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。频率识别精度最高,幅值识别精度最低,所以矩形窗不是一个理想的窗。 | 如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等,也可以用在阶次分析中。 |
汉宁窗 Hanning | 又称升余弦窗。主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。它与矩形窗相比,泄漏、波动都减小了,并且选择性也提高。 | 是很有用的窗函数。如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量的大小,需要选择汉宁窗。如果被测信号是随机或者未知的,选择汉宁窗。 |
海明窗 (汉明窗) Hamming | 与汉宁窗都是余弦窗,又称改进的升余弦窗,只是加权系数不同,使旁瓣达到更小。但其旁瓣衰减速度比汉宁窗衰减速度慢。 | 与汉明窗类似,也是很有用的窗函数。 |
平顶窗 Flap Top | 平顶窗在频域时的表现就象它的名称一样有非常小的通带波动。 | 由于在幅度上有较小的误差,所以这个窗可以用在校准上。 |
凯塞窗 Kaiser | 定义了一组可调的由零阶贝塞尔Bessel 函数构成的窗函数,通过调整参数β可以在主瓣宽度和旁瓣衰减之间自由选择它们的比重。对于某一长度的Kaiser 窗,给定β,则旁瓣高度也就固定了。 | |
布莱克曼窗 Blackman | 二阶升余弦窗,主瓣宽,旁瓣比较低,但等效噪声带宽比汉宁窗要大一点,波动却小一点。频率识别精度最低,但幅值识别精度最高,有更好的选择性。 | 常用来检测两个频率相近幅度不同的信号。 |
高斯窗 Gaussian | 是一种指数窗。主瓣较宽,故而频率分辨力低;无负的旁瓣,第一旁瓣衰减达一55dB。常被用来截短一些非周期信号,如指数衰减信号等。 | 对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。 |
三角窗 (费杰窗) Fejer | 是幂窗的一次方形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。 | 如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等; |
切比雪夫窗(Chebyshev) | 在给定旁瓣高度下,Chebyshev窗的主瓣宽度最小,具有等波动性,也就是说,其所有的旁瓣都具有相等的高度。 |
(6)分帧加窗细节总结
语音信号是随时间变化的,是一个非平稳随机过程,而较短时间内,可以认为语音信号是平稳的,即语音信号的短时平稳性。在分帧的时候,帧必须足够短来保证帧内是稳定的,一般来说,语音分帧的长度在10~40ms,不同的任务需求则分帧的长度不同。
并不是说确定帧长就结束了,为了使语音帧之间有一个平滑的过度,一般帧与帧之间还有一个重叠,相邻两帧起始位置的时间差叫做帧移,帧移一般为帧长的1/2或3/4。
选择较短的帧移可以跟踪信号的连续性,并且不会遗漏帧边缘处的突然变化,有助于处理语速较快的情况;选择较长的帧移意味着较少的语音帧数目,减少了后续相关处理(如解码)的计算量。
当对语音信号进行截断分帧后,将产生能量泄露现象。根据采样定理,只有采样频率超过信号最高频率的2倍,才可能恢复信号,因而无论采样频率多高,只要经过截断处理,则将引起混叠。此时,通过使用加权函数,即窗函数,使能量集中在主瓣,则可以获得更接近真实频谱的信号,减少能量泄露。
加窗实质是用一个所谓的窗函数与原始的时域信号作乘积的过程,而在频域,则是相卷积。使得信号似乎更好地满足傅得相乘后傅立叶变换的周期性要求。
加窗函数时,应使窗函数频谱的主瓣宽度应尽量窄,以获得高的频率分辨能力;旁瓣衰减应尽量大,以减少频谱拖尾,但通常都不能同时满足这两个要求。
矩形窗在习惯上,不加窗就是使信号通过了矩形窗,优点是这种窗的主瓣较为集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。频率识别精度最高,幅值识别精度最低。
汉宁窗又称升余弦窗。主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。它与矩形窗相比,泄漏、波动都减小了,并且选择性也提高。如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量的大小,需要选择汉宁窗。如果被测信号是随机或者未知的,选择汉宁窗。
汉明窗与汉宁窗都是余弦窗,又称改进的升余弦窗,只是加权系数不同,使旁瓣达到更小。但其旁瓣衰减速度比汉宁窗衰减速度慢。
二、语音音频处理(特征分析)
1、时域分析
自变量是时间,即横轴是时间,纵轴是信号的变化(振幅)。
时域图:表现的是一段音频在一段时间内音量的变化
波形实质上是将各个频率的波形叠加在了一起(波形是由各频率不同幅值和相位的简单正弦波复合叠加得到的。)
频谱图:表现的是一段音频在某一时刻各个频率的音量的高低,表示的是一个静态的时间点上各频率正弦波的幅值大小的分布状况 (各个时刻是一样的,即与时间无关)。
直白一点,频谱就是为了找出一个波是由多少波复合而成的。
(1)短时能量分析
短时平均能量可以写成:
上式可以理解为:首先语音信号各个样点值平方,然后通过一个冲激相应为h(n)的滤波器,输出为由短时能量构成的时间序列:
短时能量分析的作用:
1、对于连续语音信号,可以考查其时域波形通过时间轴的情况;
2、对于离散信号,实质上就是信号采样点符号变化的次数;
3、在一定程度上可以反映出频率的信息,比如正弦信号的平均过零率就是信号的频率除以两倍采样频率,而采样频率是固定的,所以根据短时平均过零率得出正弦信号的频率。
(2)短时平均幅度函数
短时能量的一个主要问题是对信号电平值过于敏感。由于需要计算信号样值的平方和,在定点实现时很容易产生溢出。为了克服这个缺点,可以定义一个短时平均幅度函数来衡量语音幅度的变化:
上式可以理解为w(n)对|x(n)|的线性滤波运算,实现框图如下。与短时能量比较,短时平均幅度相当于用绝对值之后代替了平方和,简化了运算。
与短时能量的比较:
1.Mn能较好地反映清音范围内的幅度变化;
2.Mn所能反映幅度变化的动态范围比En好;
3.Mn反映清音和浊音之间的电平差次于En。
(3)短时平均过零率
短时平均过零率是语音信号时域分析中最简单的一种特征,一段短时间内的过零率称为短时平均过零率,这里的短时指的是一帧时间,一帧包含的采样点数为256点。
计算过程:
1、先对语音信号序列x(n)进行成对处理,检查是否有过零现象,若符号有变化,则表示有一次过零现象;
2、然后进行一阶差分计算,取绝对值;
3、最后进行低通滤波。
(4)短时自相关函数
自相关函数:
自相关函数的性质:
1、偶函数
2、k=0时,函数取最大值,对于确定性信号其值为能量,对于随机信号,其值为该信号的平均功率。
3、如果原序列是周期为 T 的周期信号,那么自相关函数也是周期为T的周期函数。
自相关函数用于衡量信号自身时间波形的相似性。清音和浊音的发生机理不同,因而在波形上也存在着较大的差异。浊音的时间波形呈现出一定的周期性,波形之间相似性较好;清音的时间波形呈现出随机噪声的特性,杂乱无章,样点间的相似性较差。这样,可以用短时自相关函数来测定语音的相似特性。
短时自相关函数可以写成:
上式表明,序列x(n)x(n-k)经过一个冲激响应为hk(n)的数字滤波器滤波即得到短时自相关函数,所以,短时自相关函数的框图表示为:
1、短时自相关函数可以很明显的反映出浊音信号的周期性。
2、清音的短时自相关函数没有周期性,也不具有明显突出的峰值,其性质类似于噪声。
3、不同的窗对短时自相关函数结果有一定的影响。采用矩形窗时,浊音自相关曲线的周期性显示出比用汉明窗更明显的周期性。其主要原因是加汉明窗后,语音段两端的幅度逐渐下降,从而模糊了信号的周期性。
(5)端点检测
对于语音清音、浊音、无声的判定
浊音的能量高于清音,清音的过零率高于无声段。
汉语中,浊音处于音节的末尾,容易通过短时能量来区别,但在音节的前端,清音与环境噪声很难区分。
(6)基音周期检测——自相关法
浊音信号的自相关函数在基因周期的整数倍位置上出现峰值,而清音的自相关函数没有明显的峰值出现。
峰——峰之间对应的就是基因周期。
基因的周期性和共振峰周期性混叠在一起时,被检测出来的峰值就可能会偏离原来峰值的真实位置。
2、频域分析
自变量是频率,即横轴是频率,纵轴是该频率信号的幅度(振幅)。
频域分析指的是将信号分解为不同频率的成分,常用的方法是傅里叶变换。通过频域分析,我们可以得到语音信号中各个频率成分的大小和相对位置,从而了解语音信号的频率特征。频域分析常用的方法是傅里叶分析和小波分析。频域分析适用于分析信号的周期特性,比如周期性的声音信号、周期性的光信号等。
在实际应用中,时域分析和频域分析常常相互结合,以更全面地分析信号的特征和性质。例如,在语音信号处理中,使用短时傅里叶变换(Short-time Fourier transform,STFT)将时域信号转换到频域,以便于对信号的频率特性进行分析和处理。
(1)滤波器组方法
滤波器可以是模拟滤波器,也可以是数字滤波器。可以用宽带带通滤波器,也可以用窄带带通滤波器。宽带带通滤波器具有平坦特性,可以粗略的求取语音的频谱, 但分辨率低,用窄带带通滤波器,器频率分辨率高。
(2)傅里叶变换
通常傅里叶变换只适合处理平稳信号,对于非平稳信号,由于频率特性会随时间变化,为了捕获这一时变特性,我们需要对信号进行时频分析,就包括短时傅里叶变换、小波变换、希尔伯特变换、希尔伯特黄变换这几种变换。
(3)倒谱
三、语音信号的线性预测分析
在学习线性预测分析的过程中,也是发现其应用比较广泛,参数的用途很多,这里特做总结。(不是很全面,是最基础的学习)
1、什么是线性分析?
基本思想:
一个语音的采样能够用过去的若干个语音的线性组合来逼近。通过使线性预测到的采样在最小均方误差意义上去逼近实际语音采样,可以求取一组唯一的预测系数。这里的预测系数就是线性组合中的加权系数。然后依据这组预测系数可以还原一个完整的语音信号。
反过来说就是,由实际语音信号决定一组预测器系数(LPC),使得预测误差在某个准则(最小均方误差准则)下最小的这一过程,就叫做线性预测分析。
简单概括,线性预测分析就是由实际语音信号求LPC的过程。这种线性预测分析最早是用于语音编码中,因此也称为LPC(linear prediction coding)。
2、为什么要进行线性预测分析?
1、LPC是语音信号处理中的重要重要参数,用途十分广泛;
2、可以用来估计很多语音参数,如基音周期、共振峰、声道面积函数;
3、可以用于语音编码、语音合成和语音识别等领域。
更具体而言,LPC的优势在于能够用少量的参数就可以有效而正确的表现出原语音信号的时域和频域特性;除此之外,LPC还能够提供一个很好的声道模型,这对于语音识别和语音合成非常重要!!!
3、基本参数求解及用途
(1)线性预测系数(LPC)
根据上文的分析可知,线性预测分析的过程就是求解一组线性预测系数LPC。因此LPC是线性预测分析的主要参数,其他参数都是由LPC推演出来的。严格上来讲,一个完整的线性预测分析过程是需要求解LPC和其增益。其基本原理如下图所示:
线性预测分析过程:
就是将被分析信号用一个模型来表示,即将预测信号看成某个系统或模型H(z)的输出。
① u(n)表示模型的输入。
对于发浊音信号(汉语韵母),模型的输入u(n)可采用周期性单位冲击序列;
对于发清音信号(汉语声母),模型的输入u(n)可采用随机白噪声序列。
② 模型的传输函数H(z):
目前更多是采用自回归AR模型,其传递函数H(z)和X(n)的线性常系数差分方程(时域表达)的表达式如下:
其含义:
该模型当前的输出是由当前的输入u(n)和过去p个输出x(n-k)的加权之和。
线性预测分析就是求解传递函数H(z)的过程,即求出一组线性预测系数a(k)和增益G。那么该如何求解LPC和增益G?
主要步骤:
先定义线性预测器的差分方程和传递函数(预测器)P(z)如下。因为线性预测的核心要义就是,当前的输出x(n)是若干个过去输出的线性组合。
则线性预测误差序列e(n)为实测语音序列x(n)与预测序列的差,其差分方程和传递函数A(z)的表达式如下:
则x(n)可以写成:
观察(4)和开头那个式子可知,如果语音信号准确服从AR模型,且有e(n)=Gu(n),则线性预测误差序列e(n)的传递函数A(z)与预测系统模型H(z)互为倒数,即预测误差滤波器A(z)是系统模型H(z)的逆滤波器。满足关系如下:
因此,要求解H(z)可以直接由预测误差滤波器的传递函数A(z)来求解。而预测误差序列是实测信号与预测信号的差值,由于误差值始终存在,要求出LPC则必须依赖某个准则,这个准则通常采用最小均方误差准则。故预测二次方误差E可表示为:
而要求解LPC应该使得预测二次方误差对每一个预测系数a(k)的偏导数为0,由此可得方程:
求解这个方程就可以得到对应的LPC。
(2)自相关法求LPC
自相关法是在整个时间段内使得误差值最小,计算LPC的流程如下图所示。
(3)LPC推演系数——LPC倒谱系数
语音信号的倒谱系数是通过对语音信号进行FT变换,取对数,在反FT变换来得到的。也可用声道系统的传递函数H(z)来代替语音信号来求复倒谱,因为它也反映了信号的谱包络信息。
4、LPC说明
在拟合频谱包络时,只需要考虑峰值点,并且这时估计误差的均方根最小
将频谱中变化平缓的部分去掉
5、LPC应用
(1)分析—合成(编码)
(2)识别/分类:LPCC倒谱特征或LPC特征
(3)共振峰的获取
6、感知线性预测PLP系数
四、语音编码
1、什么是语音编码?
语音编码是指将语音信号转换成为适合存储或传输的格式的过程。这个过程通常涉及到压缩,以减少所需的存储空间和传输带宽,同时尽量保持语音的可理解性和自然性。
2、为什么要进行语音编码?
压缩数据量:未经压缩的数字语音数据通常非常庞大,直接存储或传输这些数据会非常占用存储空间和带宽。通过编码,可以有效减少数据量。
降低传输成本:对于电话网络和互联网等通信系统,减少数据量可以降低传输成本。
提高传输效率:压缩后的数据可以更快地传输,提高系统的整体效率。
适应不同的传输和存储介质:不同的系统和应用可能对数据的大小、格式有不同的要求,语音编码可以帮助语音数据适应这些要求。
3、常见的编码方法
(1)波形编码
这种方法直接对语音信号的波形进行编码。常见的波形编码技术包括脉冲编码调制(PCM)、差分脉冲编码调制(DPCM)和自适应差分脉冲编码调制(ADPCM)。
① 脉冲编码调制(PCM)
PCM 是指脉冲编码调制(Pulse Code Modulation),是数字通信的编码方式之一,是一种将模拟信号数字化的方法。主要过程是将话音等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。
直接对语音信号进行A/D转换,语音波形信号就被表示成一组用数字编码的脉冲序列。
PCM 是能达到音频最高保真水平的格式,它被广泛用于素材保存及音乐欣赏,PCM 也因此被称为无损编码格式。但这并不意味着 PCM 就能够确保信号绝对保真,它只能做到最大程度的无限接近原始声音。要计算一个 PCM 音频流的码率需要数字音频的三要素信息即可:
码率 = 采样率 × 量化位深 × 声道数
②差分编码
(2)参数编码
参数编码不是直接编码语音波形,而是提取语音的参数(如声道特性、基频等)进行编码。这种方法通常用于非常低比特率的编码。典型的参数编码方法有线性预测编码(LPC)。
线性预测编码(LPC)
- 编码方式:LPC是一种参数编码技术,它通过分析语音信号的线性特性来预测下一个样本的值,并编码这些预测参数。
- 优点:LPC非常适合于语音压缩,因为它只需要编码预测模型的参数,可以实现非常低的比特率。
- 缺点:在低比特率下,语音质量可能会下降,听起来可能不自然。
五、语音识别
语音识别是一种技术,它可以让计算机程序识别和理解人类语音,并将其转换为可读的文字或者电脑指令。
1、语音识别的分类
按照词汇大小分:
小词汇表系统,中词汇表系统,大词汇表系统。
按照发音方式分:
孤立词识别,连接词识别,连续语言识别。
按说话人分:
特定说话人识别,非特定说话人识别。
按语音识别的方法分:
模板匹配法,随机模型法,概率语法分析法
2、语音识别流程
语音识别的本质是一种基于语音特征参数的模式识别,即通过学习,系统能够把输入的语音按一定模式进行分类,进而依据判定准则找出最佳匹配结果。目前,模式匹配原理已经被应用于大多数语音识别系统中。如图1是基于模式匹配原理的语音识别系统框图。
一般的模式识别包括预处理,特征提取,模式匹配等基本模块。如图所示首先对输入语音进行预处理,其中预处理包括分帧,加窗,预加重等。其次是特征提取,因此选择合适的特征参数尤为重要。常用的特征参数包括:基音周期,共振峰,短时平均能量或幅度,线性预测系数(LPC),感知加权预测系数(PLP),短时平均过零率,线性预测倒谱系数(LPCC),自相关函数,梅尔倒谱系数(MFCC),小波变换系数,经验模态分解系数(EMD),伽马通滤波器系数(GFCC)等。在进行实际识别时,要对测试语音按训练过程产生模板,最后根据失真判决准则进行识别。常用的失真判决准则有欧式距离,协方差矩阵与贝叶斯距离等。
语音识别的基本流程通常包括以下几个步骤:
① 声音采集:
这个过程开始于用户对着麦克风说话,声音会被转换成模拟信号。
这些模拟信号随后被麦克风转换成数字信号,通常是通过模数转换器(ADC)。
② 预处理:
数字信号经过预处理以去除噪声,并且可能会进行声音增强。
预处理还可能包括语音活动检测(VAD),以区分语音和非语音部分,以及回声消除等。
③ 特征提取:
接下来,系统会从处理过的信号中提取特征,这些特征能够代表语音的统计特性。
常见的特征提取方法包括梅尔频率倒谱系数(MFCC)或者线性预测倒谱系数(LPCC)等。
④ 声学模型:
特征向量被送入声学模型,这通常是一个机器学习模型,如隐马尔可夫模型(HMM)、深度神经网络(DNN)或者是它们的组合。
声学模型用于识别音频信号中的语音单元,如音素或者字。
⑤ 语言模型:
语言模型用于理解和预测单词序列的可能性,它通常基于大量文本数据来预测哪些单词会在一起出现。
这有助于提高识别的准确性,因为它可以排除那些听起来相似但在语言上不合逻辑的单词组合。
⑥ 解码:
解码器将声学模型的输出和语言模型的信息结合起来,尝试找出最可能的单词序列。
这通常涉及到搜索算法,如Viterbi算法或者束搜索(beam search)。
⑦ 后处理:
识别出的文本可能会经过后处理来纠正语法错误或者进行上下文相关的改进。
后处理还可以包括自然语言处理(NLP)任务,如实体识别、意图识别等。
⑧ 输出:
最后,处理后的文本被输出给用户或者传递给其他系统进行进一步的处理。
3、语音识别技术简介
从语音识别算法的发展来看,语音识别技术主要分为三大类。
第一类是模型匹配法:包括矢量量化(VQ) 、动态时间规整(DTW)等;
第二类是概率统计方法,包括高斯混合模型(GMM) 、隐马尔科夫模型(HMM)等;
第三类是辨别器分类方法,如支持向量机(SVM) 、人工神经网络(ANN)和深度神经网络(DNN)等以及多种组合方法。
(1)动态时间规整(DTW)
语音识别中,由于语音信号的随机性,即使同一个人发的同一个音,只要说话环境和情绪不同,时间长度也不尽相同,因此时间规整是必不可少的。
DTW是一种将时间规整与距离测度有机结合的非线性规整技术,在语音识别时,需要把测试模板与参考模板进行实际比对和非线性伸缩,并依照某种距离测度选取距离最小的模板作为识别结果输出。
动态时间规整技术的引入,将测试语音映射到标准语音时间轴上,使长短不等的两个信号最后通过时间轴弯折达到一样的时间长度,进而使得匹配差别最小,结合距离测度,得到测试语音与标准语音之间的距离。
DTW算法的步骤如下:
- 计算两个时间序列之间的距离矩阵,其中每个元素表示在两个时间序列的对应位置上的距离。
- 构建一个累积距离矩阵,其中每个元素表示从起点到该位置的最小累积距离。
- 根据累积距离矩阵,找到一条路径,使得路径上的累积距离最小。
- 根据路径,对两个时间序列进行对齐。
(2)支持向量机(SVM)
支持向量机是建立在VC维理论和结构风险最小理论基础上的分类方法,它是根据有限样本信息在模型复杂度与学习能力之间寻求最佳折中。从理论上说,SVM就是一个简单的寻优过程,它解决了神经网络算法中局部极值的问题,得到的是全局最优解。SVM已经成功地应用到语音识别中,并表现出良好的识别性能。
(3)矢量量化(VQ)
矢量量化是一种广泛应用于语音和图像压缩编码等领域的重要信号压缩技术,思想来自香农的率-失真理论。其基本原理是把每帧特征矢量参数在多维空间中进行整体量化,在信息量损失较小的情况下对数据进行压缩。因此,它不仅可以减小数据存储,而且还能提高系统运行速度,保证语音编码质量和压缩效率,一般应用于小词汇量的孤立词语音识别系统。
(4)隐马尔科夫模型(HMM)
隐马尔科夫模型是一种统计模型,目前多应用于语音信号处理领域。在该模型中,马尔科夫(Markov)链中的一个状态是否转移到另一个状态取决于状态转移概率,而某一状态产生的观察值取决于状态生成概率。在进行语音识别时,HMM首先为每个识别单元建立发声模型,通过长时间训练得到状态转移概率矩阵和输出概率矩阵,在识别时根据状态转移过程中的最大概率进行判决。
(5)高斯混合模型(GMM)
高斯混合模型是单一高斯概率密度函数的延伸,GMM能够平滑地近似任意形状的密度分布。高斯混合模型种类有单高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)两类。类似于聚类,根据高斯概率密度函数(Probability Density Function, PDF)参数不同,每一个高斯模型可以看作一种类别,输入一个样本x,即可通过PDF计算其值,然后通过一个阈值来判断该样本是否属于高斯模型。很明显,SGM适合于仅有两类别问题的划分,而GMM由于具有多个模型,划分更为精细,适用于多类别的划分,可以应用于复杂对象建模。目前在语音识别领域,GMM需要和HMM一起构建完整的语音识别系统。
(6)人工神经网络(ANN/BP)
人工神经网络由20世纪80年代末提出,其本质是一个基于生物神经系统的自适应非线性动力学系统,它旨在充分模拟神经系统执行任务的方式。如同人的大脑一样,神经网络是由相互联系、相互影响各自行为的神经元构成,这些神经元也称为节点或处理单元。神经网络通过大量节点来模仿人类神经元活动,并将所有节点连接成信息处理系统,以此来反映人脑功能的基本特性。尽管ANN模拟和抽象人脑功能很精准,但它毕竟是人工神经网络,只是一种模拟生物感知特性的分布式并行处理模型。ANN的独特优点及其强大的分类能力和输入输出映射能力促成在许多领域被广泛应用,特别在语音识别、图像处理、指纹识别、计算机智能控制及专家系统等领域。但从当前语音识别系统来看,由于ANN对语音信号的时间动态特性描述不够充分,大部分采用ANN与传统识别算法相结合的系统。
4、常见问题
(1)字典、声学模型,语音模型三者之间的交互
声学模型用于将语音信号映射到一个状态序列上。它通过计算每个HMM模型的发射概率来估计语音信号的特征向量与每个状态之间的关系。GMM-HMM是一种常用的声学模型,其中GMM用于建模发射概率,HMM用于建模状态之间的转移概率。
语言模型用于建模语言的规律和概率。通过计算给定单词序列的概率来评估一个句子的自然度。语言模型通常基于n-gram或神经网络等方法。在语音识别中,语言模型用于根据上下文信息提供更准确的识别结果。
字典是一个包含单词及其对应音素的映射表。它将每个单词映射到一个音素序列,以便在声学模型中使用。字典还可以包含一些特殊标记,如句子起始标记和终止标记,用于辅助句子的生成和识别。
单词变成句子是一个将单词序列转换为句子的过程。在语音识别中,通过将识别结果中的单词按照一定的规则组合起来,可以生成最终的识别句子。
文本库是一个包含大量文本数据的集合。它可以用于训练语言模型、构建字典和提供上下文信息。文本库可以包含各种类型的文本数据,如新闻文章、书籍、电影字幕等。
在语音识别中,声学模型和语言模型是通过交互来提高识别准确性的。声学模型将语音信号映射到一个状态序列上,然后语言模型根据上下文信息对状态序列进行评估,提供更准确的识别结果。字典和文本库则提供了词汇和上下文信息,用于辅助声学模型和语言模型的训练和使用。
(2)端到端
端到端语音识别是一种将语音信号直接转换为文本的方法,它通过神经网络模型直接从原始的语音信号中学习语音到文本的映射关系,省去了传统语音识别系统中的中间步骤。
传统的语音识别系统通常包括声学模型、语言模型和发音词典等组件,需要多个阶段的处理和优化。而端到端语音识别则将这些组件合并为一个单一的神经网络模型,直接从语音信号中学习到文本的映射。
基本流程实现:
- 数据准备:收集和准备用于训练的语音数据和对应的文本标注。
- 特征提取:将语音信号转换为特征向量,常用的特征包括梅尔频谱系数MFCC等。
- 网络架构设计:设计一个适合语音识别任务的神经网络模型,通常使用循环神经网络RNN或卷积神经网络CNN等。
- 网络训练:使用准备好的语音数据和对应的文本标注,通过反向传播算法对神经网络模型进行训练,优化模型参数。
- 解码和识别:在测试阶段,将语音信号输入训练好的神经网络模型,通过解码算法将模型输出的概率分布转换为最终的文本结果。
(3)