1 语音识别基础

1.1 声音特性

声音是由物体振动产生的声波。是通过介质传播并能被人或动物听觉器官所感知的波动现象。最初发出振动的物体叫声源。声音以波的形式振动传播。声音是声波通过任何介质传播形成的运动。

频率:是每秒经过一给定点的声波数量,它的测量单位为赫兹,1千赫或1000赫表示每秒经过一给定点的声波有1000个周期,1兆赫就是每秒钟有1,000,000个周期,等等。

音节:就是听觉能够自然察觉到的最小语音单位,音节有声母、韵母、声调三部分组成。一个汉字的读音就是一个音节,一个英文单词可能有一个或多个音节构成,并且按照音节的不同,可以分为不同的种类。

音素:它是从音节中分析出来的最小语音单位,语音分析到音素就不能再分了。比如,“她穿红衣服”是5个音节,而“红”又可进一步分为3个音素--h,o,ng。音素的分析需要一定的语音知识,但是,如果我们读的慢一点是还可以体会到的。

音位:是指能够区分意义的音素,比如bian,pian,bu,pu就是靠b,p两个音素来区分的,所以b,p就是两个音位,普通话的音位系统有元音音素10个(a,o,e,i,u,v,-i,-i,er,-e等),辅音音素22个(b,p,m,f,d,t,n,l,j,q,x,g,k,h,z,c,s,zh,ch,sh,r,ng)。

人耳能听到的音频范围:20HZ--20KHZ。人说话的声音频率:300HZ--3.4KHZ。乐器的音频范围:20HZ--20KHZ。

vosk语音识别 gpu vosk语音识别准确度_语音信号

 

1.2 语音时域特性

语音信号有时变特性,是一个非平稳的随机过程。但在一个短时间范围内其特性基本 保持不变,即语音的“短时平稳性”。

在时域,语音信号可以直接用它的时间波形表示出来。其中,清音段类似于白噪声,具有较高的频率,但振幅很小,没有明显的周期性;而浊音都具有明显的周期性,且幅值较大,频率相对较低。语音信号的这些时域特征可以通过短时能量、短时过零率等方法来分析。

1.2.1 短时能量

由于语音信号的能量随时间而变化,清音和浊音之间的能量差别相当显著。因此,对短时能量和短时平均幅度进行分析,可以描述语音的这种特征变化情况。

   定义n时刻某语音信号的短时平均能量为:

vosk语音识别 gpu vosk语音识别准确度_语音信号_02

 

式中,N为窗长,可见短时能量为一帧样点值的加权平方和。特殊地,当窗函数为矩形窗时,有

vosk语音识别 gpu vosk语音识别准确度_时域_03

1.2.2 短时幅度

短时能量的一个主要问题是对信号电平值过于敏感。由于需要计算信号样值的平方和,在定点实现时很容易产生溢出。为了克服这个缺点,可以定义一个短时平均幅度函数来衡量语音幅度的变化:

vosk语音识别 gpu vosk语音识别准确度_声学模型_04

 

上式可以理解为w(n)对|x(n)|的线性滤波运算,实现框图如下。与短时能量比较,短时平均幅度相当于用绝对值之后代替了平方和,简化了运算。

1.2.3 短时过零率

短时平均过零率是语音信号时域分析中的一种特征参数。它是指每帧内信号通过零值的次数。

 ①对有时间横轴的连续语音信号,可以观察到语音的时域波形通过横轴的情况。

 ②在离散时间语音信号情况下,如果相邻的采样具有不同的代数符号就称为发生了过零,因此可以计算过零的次数。

  单位时间内过零的次数就称为过零率。一段长时间内的过零率称为平均过零率。如果是正弦信号,其平均过零率就是信号频率的两倍除以采样频率,而采样频率是固定的。因此过零率在一定程度上可以反映信号的频率信息。短时平均过零率的定义为:

vosk语音识别 gpu vosk语音识别准确度_语音信号_05

 

vosk语音识别 gpu vosk语音识别准确度_时域_06

vosk语音识别 gpu vosk语音识别准确度_语音信号

1.3 语音频域特性 1.3.1 信号分类

根据式

vosk语音识别 gpu vosk语音识别准确度_vosk语音识别 gpu_08

 

计算信号能量(作用在单位电阻上的电压信号 释放的能量)可以将信号分为:

功率信号:能量无限,不能用能量表示,所以用平均功率表示;

能量信号:能量有限,平均功率为0;

vosk语音识别 gpu vosk语音识别准确度_语音信号_09

1.3.2 频谱

功率信号的频谱(离散):

vosk语音识别 gpu vosk语音识别准确度_声学模型_10

含义: 周期功率信号幅值(频率为f0)经过傅里叶级数展开,被多个离散倍频nf0表征,各频点的幅值C(nf0)也即该频点的贡献权系数。

1.3.3 功率谱密度

功率信号的功率谱密度(连续):

vosk语音识别 gpu vosk语音识别准确度_vosk语音识别 gpu_11

含义:

将信号的功率按照频点贡献铺在频谱之上;

因其能量是无穷的,所以不能把能量铺上去,只能用有限的功率;

对功率谱密度进行积分,能得到局部频段承载的功率;

相比功率信号的频谱突出各频点对功率信号的信号幅值的贡献,功率谱密度突出各频点对功率信号的功率的贡献。

1.3.4 频谱密度

能量信号的频谱密度(连续):

vosk语音识别 gpu vosk语音识别准确度_vosk语音识别 gpu_12

 

含义:

通过傅里叶变换将能量信号转换到连续频域上;

但因能量有限,不能使用离散贡献频点权系数(几乎为0),只能使用频谱密度来表征。

1.3.5 能量谱密度

能量信号的能量谱密度(连续):

 

vosk语音识别 gpu vosk语音识别准确度_语音信号_13

 

含义:

将信号能量铺在频谱之上;

对能量谱密度进行局部积分,能得到局部频段承载的能量;

相比能量信号的频谱密度突出连续频点对功率信号的信号幅值的贡献,能量谱密度突出连续频点对能量信号的能量的贡献。

(AI大语音:语音信号时间上有限,且幅值有限,即是能量有限,频率为0,应该是能量信号,不能计算功率谱。我们实际上做了一个假设,把语音分帧,每一帧都是某一个周期信号的一个周期,所以它是周期信号,周期信号就是功率信号。也就是在未分帧之前的确是能量信号。分帧后在做FFT的时候又在负无穷到正无穷上进行了周期扩长,所以才是功率信号。)

vosk语音识别 gpu vosk语音识别准确度_vosk语音识别 gpu_14

 

1.4 语音识别过程

 

vosk语音识别 gpu vosk语音识别准确度_语音信号_15

 

所谓语音识别,就是将一段语音信号转换成相对应的文本信息,系统主要包含特征提取、声学模型,语言模型以及字典与解码四大部分,此外为了更有效地提取特征往往还需要对所采集到的声音信号进行滤波、分帧等音频数据预处理工作,将需要分析的音频信号从原始信号中合适地提取出来;特征提取工作将声音信号从时域转换到频域,为声学模型提供合适的特征向量;声学模型中再根据声学特性计算每一个特征向量在声学特征上的得分;而语言模型则根据语言学相关的理论,计算该声音信号对应可能词组序列的概率;最后根据已有的字典,对词组序列进行解码,得到最后可能的文本表示。

预处理:1. 首尾端的静音切除,降低对后续步骤造成的干扰,静音切除的操作一般称为VAD。2. 声音分帧,也就是把声音切开成一小段一小段,每小段称为一帧,使用移动窗函数来实现,不是简单的切开,各帧之间一般是有交叠的。

特征提取:主要算法有线性预测倒谱系数(LPCC)和Mel 倒谱系数(MFCC),目的是把每一帧波形变成一个包含声音信息的多维向量。

声学模型(AM):通过对语音数据进行训练获得,输入是特征向量,输出为音素信息。

字典:字或者词与音素的对应, 简单来说, 中文就是拼音和汉字的对应,英文就是音标与单词的对应。

语言模型(LM):通过对大量文本信息进行训练,得到单个字或者词相互关联的概率。

解码:就是通过声学模型,字典,语言模型对提取特征后的音频数据进行文字输出。

语音识别流程的举例(只是形象表述,不是真实数据和过程):

1. 语音信号:PCM文件等(我是机器人)

2. 特征提取:提取特征向量[1 2 3 4 56 0 ...]

3. 声学模型:[1 2 3 4 56 0]-> w o s i j i q i r n

4. 字典:窝:w o;我:w o;是:s i;机:j i;器:q i;人:r n;级:j i;忍:r n;

5. 语言模型:我:0.0786, 是:0.0546,我是:0.0898,机器:0.0967,机器人:0.6785;

6. 输出文字:我是机器人;

附录(魔鬼写手)

vosk语音识别 gpu vosk语音识别准确度_语音信号_16

vosk语音识别 gpu vosk语音识别准确度_语音信号_17

vosk语音识别 gpu vosk语音识别准确度_时域_18

vosk语音识别 gpu vosk语音识别准确度_语音信号_19

vosk语音识别 gpu vosk语音识别准确度_时域_20