第三章时 域 分 析 引言 语音信号的短时处理方法 短时能量和短时平均幅度 短时平均过零率 短时自相关函数 短时时域处理技术应用举例 语音信号携带着各种信息。在不同的应用场合下人们感兴趣的信息是不同的。例如为了判断一段波形是否为语音,只需提取人类语音信号的一般特征即可;为了区分是清音还是浊音就应该了解其能量谱分布和基音频率。在数字传输或数字存贮的情况下则应当保留较多的语音信息,保证一定的可懂度和质量。可见语音处理的主要任务是提取有用的信息,去掉不相干或影响不大的信息。
引言 语音信号处理包括语音通信、语音合成、语音识别、说话人识别和语音增强等方面,但其前提和基础是对语音信号的分析。 语音信号分析可分为时域、频域、倒谱域等方法。在分析处理之前必须把要分析的语音信号部分从输人信号中找出来,这项工作叫语音信号的端点检测。 语音信号的数字化一般包括放大及增益控制、反混叠滤波、采样、A/D变换及编码(一般就是PCM码); 预处理一般包括预加重、加窗和分帧等。 语音分析分为模型分析法和非模型分析法两种。 模型分析法是指依据语音产生的数学模型,来分析和提取表征这些模型的特征参数;共振峰模型分析及声管模型(即线性预测模型)分析即属于这种分析方法。 非模型分析法,包括上面提到的时域分析法、频域分析法及同态分析法等。
引言 时域分析通常用于最基本的参数分析及用于语音的分割、预处理和大分类等。其特点为: ① 表示语音信号比较直观、物理意义明确。 ② 实现起来比较简单、运算量少。 ③ 可以得到语音的一些重要参数。
引言 短时分析技术:语音信号有时变特性,是一个非平稳的随机过程。但在一个短时间范围内其特性基本保持不变。即语音的“短时平稳性”。 “短时分析”,即对语音信号流采用分段处理。将其分为一段一段来分析,其中每一段称为一“帧”,由于语音通常在10~30 ms之内是保持相对平稳的,因而帧长一般取为10~30 ms。 注:对于某些要求较高的研究领域或应用场合(如语音识别),应该考虑语音信号是时变或非平稳的,此时应采用“隐马尔可夫模型”
3.1 语音信号的短时处理方法 语音信号的波形在时间上是连续变化的,所以是一个连续时间信号,它的电位振幅可以是在一个电压范围内的任何电位,是一个连续值,这个电位信号我们叫它模拟信号。我们在处理语音信号时,通常是一小段一小段地观察语音信号的变化,也就是以音窗也可称作语音帧为单位,对每一语音帧内的信号,抽取出代表语音的特征参数,这就是短时语音处理。 在本章中,我们先将介绍如何将语音信号作取样与数字化。将语音信号变成数字信号之后,我们可以计算短时段的信号能量、过零率、自相关函数等时域参数,以及在下一章将一个音窗内的信号作傅里叶转换,得到频域中的参数。 短时时域处理相对于短时频域处理的优点在于直观、简单、处理结果能描述语音的某些重要特性,在清浊音的区分、语音起止点的判断、浊音基音频率的估计等都常用短时时域处理方法。
3.1 语音信号的短时处理方法 离散时间信号 现在许多设备都是在数字系统中处理信号,所以模拟信号(analog signal)要经过一个模拟到数字转换器(analog-to-digital converter , ADC),转换成数字信号(digital signal),才能在数字系统(digital system)中储存或是让计算机处理。 在数字系统中处理后的数字信号,要经过数字到模拟转换器(digital-to-analog converter, DAC),转换成模拟信号之后,才作为输出。 将模拟信号转换成数字信号的过程,就叫做模拟到数字的转换。它需经过两个步骤,就是取样(sampling)与量化(quantization)。
3.1 语音信号的短时处理方法 取样 所谓取样,就是以固定的时间间隔,将模拟信号的振幅记录下来。从数学上看,就是将模拟信号乘上一个周期性的脉冲信号,得到一序列的脉冲,其脉冲的大小就是在该取样的时间点上模拟信号的振幅。如果以时间函数xa(t)表示一个模拟信号,取样周期为Ts,则取样后的信号变成xp(t),它等于xa(t)乘上一序列的脉冲, (3-1) (3-2) p(t)是一个脉冲序列信号,表示如下式
3.1 语音信号的短时处理方法 图3-1语音信号波形及其取样
3.1 语音信号的短时处理方法 信号 频宽 取样频率 电话的语音 3.5 kHz 8 kHz 计算机上麦克风接口信号 7 kHz 音响,人耳听觉的上限 20 kHz 44.1 kHz 如果我们对一个信号取样,未对信号事先作低通滤波即反混叠滤波,而取样频率又太低,这样得到的离散时间信号就不正确,取样得到的数字信号是不能用的。 转换到频域看,若是取样频率太低,它的信号频谱就会发生重叠,用低通滤波器无法取出原来的频谱,因此就不可能完整地复原。这种取样之后使得频域上频谱重叠的现象,叫做信号混叠(aliasing)。 实际上我们采用的反混叠滤波器是一个带通滤波器,除了滤波上限不能低于奈奎斯特取样率即信号最高频率的两倍,滤波下限不低于工频即50Hz,一般取60Hz.
3.1 语音信号的短时处理方法 脉冲编码调制 一个数字信号取样之后,变成离散时间信号,接下来就是要用数字方式来表示这个离散时间信号上的每个取样值。 一个电位波形会有固定的电压范围,一个取样值可以是在此电压范围内的任何电位。如果只能用固定数目的位来表示这些取样值,那么这些二进数字就只能代表固定的几个电位值,这个转换就是量化(quantization),而转换之后只允许存在的几个电位值就是量化阶数(quantization level)。 执行量化转换的硬件电路,就是量化器(quantizer)。以二进数字表示的信号就是数字信号(digital signal),而这种将信号波形转变成二进数字的方法,就叫脉冲编码调制(pulse code modulation, PCM)。
3.1 语音信号的短时处理方法 脉冲编码调制 图3-3等间距量化的例子 在-2V到+2V的电压范围内,用三个位代表的二进数字作量化 3.1 语音信号的短时处理方法 脉冲编码调制 图3-3等间距量化的例子 在-2V到+2V的电压范围内,用三个位代表的二进数字作量化 横轴表示实际电压值, 纵轴表示还原为模拟信号后的值
3.1 语音信号的短时处理方法 脉冲编码调制 如果有一个取样的电位为 +0.65V,落在 +0.5V到 +1.0V的格子中,我们就知道它的对应二进数字是101,于是这个离散时间信号被转换成101所代表的数字信号。 当要将数字信号还原成离散时间信号时,每三个位就组成一个数字,代表一个离散时间信号值,但是作为代表的电位,是该格子的中间值,以101为例,其代表的电位是+0.75V,所以还原之后的离散时间信号值是+0.75V,与原来的+0.65V相差0.10V,这个差值就是量化误差(quantization error) 。 对于每一格宽度为0.5V的量化方式,其误差值在 -0.25V到 +0.25V之间,也就是格子宽度的一半。
3.1 语音信号的短时处理方法 脉冲编码调制 将量化误差d(n)看成是一个随机变数(random variable),其值就在 -Δ/2到 +Δ/2之间作均匀分布(uniform distribution),其概率密度函数(probability density function, pdf)写成下式, (3-8) 平均值(mean)为0,方差(variance)为 (3-9)
3.1 语音信号的短时处理方法 脉冲编码调制 对于平均值为0的信号,其强度(intensity)即能量就等于其方差。我们计算其信号能量对量化误差引起的噪音能量的比值,就叫做量化信噪比(signal-to-noise ratio, SNR) , (3-10) 以分贝(decibel, dB)来表示信噪比, (3-11)
3.1 语音信号的短时处理方法 脉冲编码调制 若是xmax取为4倍方差(δx) (3-12) 取样之位数 数字信号的信噪比 8 41 dB 3.1 语音信号的短时处理方法 脉冲编码调制 若是xmax取为4倍方差(δx) (3-12) 取样之位数 数字信号的信噪比 8 41 dB 16 89 dB 24 137 dB
3.1 语音信号的短时处理方法 取样率和量化字长的选择 目前的长途通信、移动通信、卫星通信中的声音取样率多取8 kHz,但在实际语音信号处理中,取样率经常取10 kHz。 某些现代语音处理系统语音频率高端扩展到7~9 kHz,相应的取样率也提高到15~20 kHz。
3.1 语音信号的短时处理方法 取样率和量化字长的选择 SNR(dB)=6.02B-7.2 每bit字长对SNR贡献为6dB。 当B=7bit时, SNR=35 dB。此时量化后的语音质量能满足一般通信系统的要求。 语音波形的动态范围可达55 dB,故B应取10 bit以上。为了在语音信号变化的范围内保持35 dB的信噪比,一般要求B≥11,实际常用12 bit来量化,其中附加的5bit用于补偿30 dB左右的语音波形的动态范围变化。
若波形的变化足够大或量化间隔足够小,可以证明量化噪声符合具有以下特性的统计模型: 1、它是一个平稳的白噪声过程; 2、量化噪声和输入信号不相关; 3、量化噪声在量化间隔内均匀分布,即具有等概率密度分布。
3.1 语音信号的短时处理方法 取样率和量化字长的选择 (a)是一段语音信号400个取样值的包络曲线, (b)3 bit量化器的量化噪声与被量化信号之间存在着一定的相关性 (c)8 bit量化噪声几乎已经看不出这种相关性了。
3.1 语音信号的短时处理方法 取样率和量化字长的选择 (d)3 bit量化器的噪声与“平稳白噪声过程”的假设不大相符 (e)8 bit量化器的噪声的自相关函数的估计几乎是一个冲激函数,这与“白噪声过程”的假设相一致。 (f) 3 bit量化噪声谱和语音信号谱的性质有某些相似,也是随着频率的升高而下降 (g) 8 bit时,其量化噪声谱就比较平坦了,这是典型的白噪声谱的形状。
3.1 语音信号的短时处理方法 预处理 图3-4 语音信号处理系统框图
3.1 语音信号的短时处理方法 预处理 反混叠滤波器:为了防止混叠失真和噪声干扰,必须在取样前用一个具有良好截止特性的模拟低通滤波器对语音信号进行滤波,该滤波器称为反混叠滤波器。有时为了防止50 Hz市电频率干扰,该低通滤波器实际上做成一个从100 Hz到3.4kHz的带通滤波器。对该滤波器的要求是其带内波动和带外衰减特性应尽可能好。
3.1 语音信号的短时处理方法 预处理 平滑滤波器:D/A后面的低通滤波器是平滑滤波器,对重构的语音波形的高次谐波起平滑作用,以去除高次谐波失真。 预加重: 现象:由于语音信号的平均功率谱受声门激励和口鼻辐射的影响,高频端大约在800 Hz以上按6dB/倍频程跌落,为此要在预处理中进行预加重。 目的:提升高频部分,使信号的频谱变得平坦,以便于进行频谱分析或声道参数分析。 位置:预加重可在A/D变换前的反混叠滤波之前进行,这样不仅能够进行预加重,而且可以压缩信号的动态范围,有效地提高信噪比。
3.1 语音信号的短时处理方法 加窗取语音帧 对于一段语音的离散时间信号x(m),用一个固定长度的窗口(window)套上去,只看窗口内的信号,对这些信号做计算,用以求出在这窗口内的语音特征(speech features)。这样的处理方式,就叫加窗(windowing),而套上去的这一段语音即称为语音帧(frame)。 通常窗口的长度是取10~30 毫秒 (ms),这样一段语音信号,足以计算出语音的特征参数(feature parameters)。 窗口的移动距离,大约会取5~20 ms,让前后的语音帧有部分重叠,这样能观察到语音特征改变的延续性以保证分析的准确性。
3.1 语音信号的短时处理方法 加窗取语音帧 M 称作帧移,M/N在0~1/2之间
3.1 语音信号的短时处理方法 加窗取语音帧
3.1 语音信号的短时处理方法 加窗取语音帧 假设加窗的长度为N,在时域中可以写成 (3-13) 3.1 语音信号的短时处理方法 加窗取语音帧 假设加窗的长度为N,在时域中可以写成 (3-13) 将窗函数w(m)乘在语音信号中的某一个时间点上, (3-14) n是加窗位置标示,可以看出只有当m在n-N+1<m<n之间, 才不会是0,也就是x(m)在n-N+1<m<n这一时段中 被取出,作为一个语音帧。
3.1 语音信号的短时处理方法 加窗取语音帧 在语音处理中最常用的两种窗函数是矩形窗(rectangular window)与海明窗(Hamming window)。矩形窗的数学式如下: (3-15) 海明窗数学式如下: (3-16)
3.1 语音信号的短时处理方法 加窗取语音帧 图3-4常用的窗函数 矩形窗,海明窗,汉宁窗
3.1 语音信号的短时处理方法 语音信号短时处理的一般表示:其中T[ ]为某种运算关系,Qn为运算后的结果
3.2 短时能量和短时平均幅度 语音信号的能量分析是基于语音信号能量随时间有相当大的变化,特别是清音段的能量一般比浊音段的小得多。 能量分析包括能量和幅度两个方面。 对语音信号采用短时分析时,信号流的处理用分段或分帧来实现。 一般每秒的帧数约为33~100,视实际情况而定。 分帧既可连续,也可采用交叠分段的方法,使相邻帧有部分相重叠。 公式3-18 推导及线性滤波器框图,h(n) 表达式。
3.2 短时能量和短时平均幅度 振幅越大则能量越大,通常用以下方式计算语音能量 短时平均能量函数 - 变换T[ ]是指平方和运算; - 两种计算方法: (3-17) 公式3-18 推导及线性滤波器框图,h(n) 表达式。
3.2 短时能量和短时平均幅度 振幅越大则能量越大,通常用以下方式计算语音能量 短时平均能量函数 - 变换T[ ]是指平方和运算; - 两种计算方法: (3-18) - h(n)是无限冲激响应滤波器时,短时能量可递推计算得到 公式3-18 推导及线性滤波器框图,h(n) 表达式。
直角窗时 h(n)=1, 0≤n≤N-1 h(n)=0, 其他 对应于该单位函数响应的数字滤波器的频率响应为 它具有线性的相位—频率特性,其频率响应中第一个零值所对应的频率为 这里,fs为取样频率,而T=1/fs为取样周期。
海明窗
3.2 短时能量和短时平均幅度 矩形窗与海明窗的频率响应: 海明窗的第一个零值频率位置比直角窗要大1倍左右,即带宽约增加1倍; 同时其带外衰减也比直角窗大得多。
3.2 短时能量和短时平均幅度 对语音信号的时域分析来说: 窗口的形状是重要的,选用不同的窗口,将使能量的平均结果不同:直角窗的谱平滑较好,但波形细节丢失(高频分量);而海明窗则相反。 窗的长度对于能否反映语音信号的幅度变化,将起决定作用。如果N很大,它等效于带宽很窄的低通滤波器,此时En随时间的变化很小,不能反映语音信号的幅度变化,波形的变化细节就看不出来;反之,N太小时,滤波器的通带变宽,短时能量随时间有急剧的变化,不能得到平滑的能量函数。因此,窗口长度选择应合适。 窗口长度选择应合适。这里所谓窗口的长与短,都是相对于语音信号的基音周期而言的。通常认为在一个语音帧内,应含有1~7个基音周期。然而不同人的基音周期变化范围很大,从女性儿童的2 ms到老年男子的14 ms(即基音频率为500 Hz~70Hz),所以N的选择比较困难。通常在10 kHz取样频率下,N折衷选择为100~200(即10~20 ms持续时间)。 通常认为一个语音帧内应包含1到7个基音周期,但由于不同的人基音周期相差很大,故通常在10KHz的取样率下N选择100到200点为宜,对应的时长为10ms到20ms.
3.2 短时能量和短时平均幅度 N=51时,窗选得较窄,En随语音信号波形变化而很快起伏; N=101或N=201时,En随语音信号波形的变化而快速变化,从而充分反映出此信号的特征。 通常认为一个语音帧内应包含1到7个基音周期,但由于不同的人基音周期相差很大,故通常在10KHz的取样率下N选择100到200点为宜,对应的时长为10ms到20ms.
3.2 短时能量和短时平均幅度 En的作用:反映出语音的能量或语音振幅随时间缓慢变 化的规律。(浊音段能量比清音段大的多) En的应用: 1)区分清音段和浊音段 2)区分声母和韵母 3)区分无声和有声的分界(信噪比较高的信号) 4) 区分连字的边界 5)用于语音识别 En的缺点:对高电平过于敏感,给加窗宽度的选择带来 了困难。扩大了振幅不相等的任何两个相邻取样值(此处 的取样值是指某语帧的短时平均能量值)之间的幅度差别 ,必须用较宽的窗函数才能平滑能量幅度的起伏。 为了使En能准确反映语音能量的时变规律: - 数据窗w(n)或滤波器h(n)函数形式和宽度的选择相当重要。) 通常认为一个语音帧内应包含1到7个基音周期,但由于不同的人基音周期相差很大,故通常在10KHz的取样率下N选择100到200点为宜,对应的时长为10ms到20ms.
3.2 短时能量和短时平均幅度 图3-6 语音信号的短时平均能量曲线
3.2 短时能量和短时平均幅度 短时平均幅度 - 变换T[ ]是取绝对值求和运算; - 两种计算方法: 或 W(n-m)不小于零,故可把直接放到绝对值符号之外
3.2 短时能量和短时平均幅度 窗口长度N对平均幅度函数的影响与短时平均能量的分析结果相同。 短时平均幅度的动态范围(最大值与最小值之比)比短时平均能量要小,实际上短时平均幅度的动态范围接近于短时平均能量的平方根。 同样可以区分出清音和浊音,但二者的电平差不如短时能量那样明显。 在清音的范围内,Mn和En二者的区别特别显著。 见P31 图3-11 W(n-m)不小于零,故可把直接放到绝对值符号之外
3.3 短时平均过零率 过零:信号波形穿越时间轴或零值线;对于离散时间信 号而言就是相邻的取样值符号改变。 平均过零率:单位时间(或单位样本)内过零的次数。 计算一个语音帧内单位时间越过零线的平均次数,可以得出其短时平均过零率(zero crossing rate)或短时平均过零数。 以正弦信号为例说明平均过零率,z=2 f0/fs 声带振动时,是在发浊音,所以过零率低,声带不振动时,是在发清音,所以过零率就高,没有声音时若有噪音存在,也会有较高的过零率。
3.3 短时过零分析(短时平均过零率) 过零数是信号过零值。连续语音信号指时域波形通过时间轴的情况,离散时间信号指样本改变符号的次数。 平均过零数指单位时间内的过零数。 窄带信号: 一个频率为f0的正弦信号,以取样频率为fs进行取样,则每个正弦周期内有fs/f0个取样,另外,每个正弦周期内有两次过零,所以平均过零数为: Z=2*(f0/fs)
3.3 短时过零分析(短时平均过零率) 宽带信号: 变换T[ ]相当于平均过零率计算; 短时平均过零率的计算方法: 计算中每个样本点都使用了两次,故w(n)的幅值取1/2N而不是1/N,这样就保证了取平均值计算的准确性;短时平均过零率的卷积运算及其滤波器实现。
3.3 短时平均过零率 图3-7 语音信号的短时平均过零率曲线
3.3 短时平均过零率 实际应用——区分清、浊音
3.3 短时平均过零率 在背景噪声较大的情况下,从噪声信号中找出语音信号,判断出语音的起点和终点。 注意:对于弱摩擦音f、h,弱爆破音p、t、k,鼻音ng、n、m,只用En(Mn)或Zn中一个参量判断语音的起点和终点是有困难的,必须同时用En和Zn或Mn和Zn。
3.5 短时自相关分析 3.5.1 短时自相关函数 时域离散确定信号的自相关函数定义为: 时域离散随机信号的自相关函数定义为: 3.5 短时自相关分析 3.5.1 短时自相关函数 时域离散确定信号的自相关函数定义为: 时域离散随机信号的自相关函数定义为: 周期为P的周期信号满足:
自相关函数具有下述性质: (1) 对称性 R(k)= R(-k) (2) 在k = 0处为最大值,即对于所有k来说, |R(k)|≤R(0)
3.5.2 语音信号的短时自相关函数 采用短时分析方法,定义语音信号短时自相关函数为 因为 所以
定义 (3-18) 那么短时自相关函数可以写成: 上式表明,序列 经过一个冲激响应为 的数字滤波器滤波即得到短时自相关函数
也可采用直接运算的方法,令 则可得: 上式可以写成
浊音的短时自相关函数
清音的短时自相关函数
浊音和清音的短时自相关函数有如下几个特点: 1)短时自相关函数可以很明显的反映出浊音信号的周期性。 2)清音的短时自相关函数没有周期性,也不具有明显突出的峰值,其性质类似于噪声。 3)不同的窗对短时自相关函数结果有一定的影响。
3.5 短时自相关函数 在语音信号处理中 N值至少要大于基音周期的二倍,否则将找不到第二个最大值点。 N值也要尽可能地小;因为语音信号的特性是变化的,如N过大将影响短时性。 由于语音信号的最小基频为80 Hz,因而其最大周期为12.5 ms,两倍周期为25 ms,所以10 kHz取样时窗宽N为250。因而,用自相关函数估算基音周期时,N不应小于250。 由于基音周期的范围很宽,所以应使窗宽匹配于预期的基音周期 长基音周期用窄的窗,将得不到预期的基音周期;而短基音周期用宽的窗,自相关函数将对许多个基音周期作平均计算,这是不必要的。 为解决这个问题,可用“修正的短时自相关函数”来代替短时自相关函数,以便使用较窄的窗。
图3.16 不同矩形窗长时的短时自相关函数
3.5.3 修正的短时自相关函数 修正的短时自相关函数,其定义如下
式中,K为k的最大值,即0≤k≤K。 要使 为非零值,必须使 考虑到 ,可得 修正的短时自相关函数可以写成:
因为求和上限是N-1,与k无关,故当k增加时, 值不下降 .
3.5 短时自相关函数 短时自相关函数是语音信号时域分析的重要参量。它有两个主要用途。 一是判断清/浊音,并估计浊音的基音周期; 二是它的傅里叶变换就是短时谱。 因为计算自相关函数的运算量是很大的,其原因是乘法运算所需时间较长。简化计算自相关函数的方法有多种,如FFT等,但都无法避免乘法运算。为了避免乘法,一个简单的方法就是利用差值。为此常常采用另一种与自相关函数有类似作用的参量,即短时平均幅度差函数(AMDF)。 短时平均幅度差函数只需加、减法和取绝对值的运算;与自相关函数的相加与相乘运算相比,运算量大大减小,这尤其在硬件实现语音信号分析时有很大好处。为此,AMDF已被用在许多实时语音处理系统中。
3.5.4 短时平均幅度差函数 一个周期为P的周期信号,在k=0,±P, 2P, …时, 3.5.4 短时平均幅度差函数 一个周期为P的周期信号,在k=0,±P, 2P, …时, 对于浊音语音,在基音周期的整数倍上,d(n)总是很小,但不是零,因此,我们可以定义短时平均幅度差函数AMDF为
使用矩形窗时,短时平均幅度差函数可写成: 与 之间的关系为: