HCIP-EI v2.0 培训03: 语音处理理论和应用
- 内容
了解语言处理的基础知识及应用
掌握语音处理的基本步骤
掌握语音处理的主要技术
了解语音处理的难点与展望
语音处理介绍
语音处理
Speech Signal Processing, 语音信号处理,语音处理
用以研究语音发声过程、语音信号统计特征、语音自动识别、机器合成以及语音感知等各种处理技术的总称。
- 语音信号处理的研究起源于对发音器官的模拟
- 1939年,美国H.Dudley模拟了一个简单的发音过程模拟系统,后发展为声道的数字模型。利用该模型可以对语音信号进行各种频谱及参数的分析,进行通信编码或数据压缩的研究,同时也可基于此合成语音信号,实现机器的语音合成。
- 语音信息主要包含在语音信号的参数中,因此准确而迅速地提取语音信号的参数是进行语音信号处理的关键
语音学
- 语言学的一个分支,是研究人类语言声音的学科。主要研究语言的发音机制,语音特性和在言谈中的变化规律
- 狭义语音学(phonetics),关注的重点在具体语音本质以及产生语音的方法。与之相对的是音韵学(音系学),研究音位或语音区别特征在某种语言中运作的抽象规则和语音的系统
- 广义语音学是指语音学和音韵学两大方面研究的总和
语音学分类
- 发音语音学:研究言语的声音是怎么通过口腔中的发音器官(唇,牙齿,舌头,声带等)产生出来
- 声学语音学:研究怎样对言语的声音进行声学分析,比如声波的频率,时长,振幅等
- 听觉语音学:研究人耳如何接受声音,即人耳对语音的听觉感知
- 语言语音学:结合声音,社会环境,个人习惯,语言规律研究声音
语音来源
- 喉下部分是由气管到肺。从肺呼出的气流称为语音的声源
- 喉头部分主要是声门和声带。声带是两条韧带,起喉的阀门作用,它的闭拢和打开成为声门。声门大开时气流畅通,声门闭合,气流冲出使声带作周期性的颤动就产生声音
- 喉上部分包括咽腔、口腔和鼻腔3个区域,主要起调节语音的作用。口腔和鼻腔是调节发音的主要器官
语言学
- 以语言为研究对象的科学。它研究的对象是人类语言,它的任务是研究、描写语言的结构、功能及其历史发展,找出语言的本质,探索语言的规律
- 语音、语法、词汇及文字都注目于语言的结构本身,是语言学的中心,称为叫微观语言学
- 文字是一个汉语词汇,基本意思是记录思想、交流思想或承载语言的图像或符号。“一法度衡石丈尺,车同轨,书同文字”
语音特征
- 描述语音的核心信息,在语音模型构建中起重要作用
- 好的语音特征
- 包含区分音素的有效信息:良好的时域分辨率和频域分辨率
- 分离基频F0以及它的谐波成分
- 对不同说话人具有鲁棒性
- 对噪音或信道失真具有鲁棒性
- 有良好的模式识别特性:低维特性,特征独立
特征提取方法
- 现行预测洗漱(LPC)
- LPC倒谱稀疏(LPCC)
- 线谱对参数(LSP)
- 共振峰率(前三个共振峰)
- 短时谱
- Mel频率倒谱系数(MFCC)
- 感知线性预测(PLP)
很难说哪种方法比较好,不同的场景适用不同的方法。一般来说MFCC是一种比较常用的方法。
MFCC
语音识别和语者识别方面最常用的语音特征就是梅尔倒谱系数(Mel-Frequency Cepstral Coefficients)
MFCC 提取过程:
- 声道转换
- 预加重
- 分帧
- 加窗
- 快速傅里叶变换
- 通过三角带通滤波器得到 Mel 频谱
- 倒谱分析(取对数,做逆变换)
语音识别
- 让机器通过识别和理解把语音信号转变为相应的文本或命令的技术
- 应用:信号处理、模式识别、概率论和信息论、发生机理和听觉机理、人工智能等
历史

处理流程
- 语音文件
- 非压缩语音文件
- 预处理(静音切除、降噪、平滑、标准化)
- 声学模型
- 分帧
- 声学特征提取
- 语音模型
- 单词
- 文本文件
应用
- 语音打字机
- 语音搜索
- 语音拨号
- 语音助手
语音合成
- 语音合成,也叫文语转换(Text-To-Speech),能将任意文字信息转化为相应语音朗读出来
- 语音合成涉及声学、语言学、数字信号处理、计算机科学等多个学科技术
- 为了合成出高质量语言,除了依赖于各种规则,包括语义学规则、词汇规则、语音学规则外,还必须对文字的内容有很好的理解,这也涉及到自然语言理解的问题
语音合成系统
先将文字序列转换成音韵序列,再由系统根据音韵序列生成语音波形
- 第一步涉及语言学处理,如分词、字音转换等,以及一整套有效的韵律控制规则
- 第二部需要先进的语音合成技术,能按要求实时合成出高质量的语音流
语音合成处理流程
- 文本文件
- 文本分析
- 文本归一化
- 语音分析
- 韵律分析
- 语音内部表示
- 波形合成
- 毗连合成
- 共振峰合成
- 发音合成
- 波形文件
- 评估
文本分析
语音识别中的文本分析主要工作是把文本数据转换成语音内部表示(Phonemic Internal Representation),包括:
- 文本归一化:对自然文本数据进行预处理或归一化,包括句子的词例还原,非标准词,同形异义词排歧等
- 语音分析:通过大规模发音词典,字位-音位转换规则
- 韵律分析:分析文本中的平仄格式和押韵规则,主要包含三方面的内容:韵律的机构,韵律的凸显度,音调
语音合成方法
早期采用参数合成方法,后出现了波形拼接的合成方法
- 参数合成
- Holmes的并联共振峰合成器(1973)和 Klatt的串/并联共振峰合成器(1980),只要精心调参数,这两个合成器都能合成出非常自然的语音。但准确提取共振峰参数比较困难,合成语音的音质难以达到使用要求
- 波形拼接
- 1980s至今。特别是基音同步叠加(PSOLA)方法的提出(1990),使基于时域波形拼接方法合成的语音的音色和自然度大大提高,自然度比以前基于LPC方法或共振峰合成器的自然度搞,并且基音PSOLA方法的合成器结构简单,易于实时实现,有很大的商用前景
语音信号
语音信号分析
- 语音处理的前提是语音信号分析
- 语音合成音质的好坏和语音识别率的高低,都取决于对语音信号分析的准确度和精度
- 语音信号会随着时间的变化而变化,它是一种非平稳态的时变信号。但是由于人的发音受口腔肌肉的影响,语音信号在一个短时范围内相对稳定,可以看做是一个准稳态的过程,所以语音信号具有短时平稳性
- 短时分析技术贯穿于语音信号分析的全过程
- 根据语音信号分析的参数不同可分为:
- 时域分析
- 频域分析
- 倒频域分析
- 小波域分析
- 分析方法
- 模型分析方法
- 非模型分析方法
语音信号数字化

- 音频自动增益(ACG)
- 反混叠滤波
- 采样
- A/D转换
- 编码
预处理
一般包括预加重、加窗、分帧等
- 预加重:语音信号低频段能量大,高频段信号能量小;语音的功率频谱密度随频率的增高而下降。预加重的目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个信号频带中,能用同样的信噪比求得频谱
- 分帧:音位语音的短时平稳性,所以要进行“短时分析”,即将信号分段,每段称为一帧(一般10-30ms)
- 加窗:减少语音帧的截断效应。常用的窗有两种:矩形窗和汉明窗
时域分析
分析和提取语音信号的时域参数
- 短时能量
- 短时过零率
- 短时自相关函数
- 短时平均幅度差函数
频域分析
常用的频域分析方法为傅里叶分析法。语音信号是一个非平稳过程,因此需要用短时傅里叶变换对语音信号进行频谱分析。通过语音信号的频谱可以观察它们的共振峰特性、基音频率和谐波频率
传统语音模型
混合模型:一个用来表示在总体分布中含有K个子分布的概率模型。即观测数据在总体中的概率分布,是一个由K个子分布组成的混合分布
GMM
将一个分布分解为若干个高斯概率密度函数
最大似然估计
Maximum Likelihood, ML, 极大似然估计,一种点估计方法,用来求一个样本集的相关概率密度函数的参数
该方法的思想是:当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大,而不是像最小二乘估计法旨在得到使得模型能更好地拟合样本数据的参数估计量
- 概率:给定某一参数值,求某一结果的可能性
- 似然:给定某一结果,求参数值的可能性
EM算法
Expectation Maximization,最大期望算法,一种迭代算法,用于包含隐变量的概率参数模型的最大似然估计或极大后验概率估计。可以应用于处理缺损数据、截尾数据、带有噪声等所谓的不完全数据
- E步:根据当前参数,计算每个数据来自每个子模型的可能性
- M步:计算新一轮迭代的模型参数
GMM的学习步骤
- 高斯混合模型参数
- 概率密度函数
- 似然函数
- 对数似然函数
- EM算法求解
GMM优缺点
- 优点
- 拟合能力强
- 对语音特征匹配概率最大化
- 缺点
- 无法处理序列因素
- 无法处理线性或近似线性数据
HMM
马尔科夫链
三要素
- 初始概率
- 转移概率
- 转移概率矩阵
马尔科夫链
离散事件随机过程。在给定当前知识或信息的情况下,过去对于预测将来是无关的,只与当前状态有关
原理
马尔科夫链描述了一种状态序列,其每个状态值取决于前面有限个状态。马尔科夫链是具有马尔科夫性质的随机变量的一个数列。这些变量的范围,它们所有可能取值的集合,被称为“状态空间”。
隐马尔科夫模型
Hidden Markov Model, HMM,马尔科夫链的一种,它的状态不能直接观察到,但能通过观测向量序列观测到,每个观测向量都是通过概率密度分布表现为各种状态,每个观测向量由一个具有相应概率密度分布的状态序列产生
HMM的描述
- 观测集合 R
- 观测序列 O
- 状态集合 S
- 状态序列 Q
- 观测概率(发射概率,隐状态转换为显式观测值的概率) \(P{o_j=R_k | q_t=S_j} = b_j(i)\),记 \(B=[b_j(i)]\)
HMM可以由一个5元组描述 \(\lambda = (A, B, \pi, R, S)\),也可简写为 \(\lambda = (A, B, \pi)\)。其中 A 为转移概率矩阵,\(\pi\) 为初始分布,B 为观测概率
HMM的三个主要问题
- 评价问题:计算HMM关于某一特定观测序列的似然比
- 前向算法
- 已知初始状态、转移概率和发射概率计算HMM关于某一特定观测序列的似然比
- 用递推的方法求得概率
- 后向算法
- 与前向算法类似,它定义了一个后向概率:给定隐马尔科夫模型 \(\lambda\),定义再时刻t状态为 \(q_i\)的条件下,从t+1到T时刻部分的观测序列为 \(o_{t+1},...,o_T\) 的概率为后向概率
- \(\beta_t(i) = P(o_{t+1},o_{t+2},...,o_T|i_t = q_i, \lambda)\)
- 同样使用递推的方法求得后向概率 \(\beta_t(i)\) 和观测概率 \(P(O|\lambda)\)
- 与前向算法类似,它定义了一个后向概率:给定隐马尔科夫模型 \(\lambda\),定义再时刻t状态为 \(q_i\)的条件下,从t+1到T时刻部分的观测序列为 \(o_{t+1},...,o_T\) 的概率为后向概率
- 前向算法
- 解码问题:已知观测序列和三种概率(初始状态概率、发射概率、转移概率),求状态序列
- 动态规划算法
- Viterbi算法
- 学习问题:根据观测序列和状态序列计算HMM的三种概率
- 监督式算法
- 利用大数定理用频率来估算HMM的三种概率
- 非监督 Baum-Welch 算法
- 未给出状态序列,只有观察序列,求HMM
- 监督式算法
HMM学习 - 监督式
- 已知观测序列和状态序列,求HMM
- 利用大数定理用频率来估算HMM的三种概率
- 初始概率 \(\hat\pi_i = \frac{|q_i|}{\sum_i{|q_i|}}\)
- 转移概率 \(\hat{a_{ij}} = \frac{|q_{ij}|}{\sum^N_{j=1}{|q_{ij}|}}\)
- 观测概率 \(\hat{b_{ij}} = \frac{|s_{ik}|}{\sum^M_{k=1}{|q_{ij}|}}\)
HMM学习 - 非监督Bauw-Welch
- 已知观测序列,没有给出状态序列,求HMM
- 该算法的本质是EM算法,音位它解决的问题是:有了观测值X,而观测值有个隐变量Z时,求在HMM参数 \(\lambda\) 下的联合概率 \(P(X,Z|\lambda)\)
- 求解步骤
- 确定完全数据的对数似然函数
- E步:求Q函数 \(Q(\lambda, \hat{\lambda})\)
- M步:极大化Q函数求参数
HMM解码 - Viterbi
- 针对篱笆网络的有向图的最短路径问题而提出的。凡是使用隐马尔科夫模型描述的问题都可以用Viterbi算法来解码,包括数字通信、语音识别、机器翻译等
- 步骤
- 初始化
- 递归
- 终止
- 最优路径回溯
HMM在语音识别中的应用
- 前向后向算法计算 \(P(O|A)\),即观测序列和状态序列
- Baum-Welch算法求出最优解 \(\lambda = max(P(O|A))\)
- 对于输入语音,用 Viterbi 算法查出对应哪个HMM模型概率最大,由此得到最佳序列
- 根据最佳序列对应组合出因素和单词
- 根据语言模型形成词和句子
GMM-HMM
- GMM的作用
- 主要用于求某一因素的概率
- GMM是几个高斯模型的叠加,一般是3-5个
- 一个高斯模型就是一个正态分布,表征了信号的概率密度
- 语音识别中,一个word由多个音素组成,一个音素就是一个状态state,一个state对应一个高斯混合模型GMM
- HMM进行语音建模
- 对于每个单词建立一个HMM模型,需要用到该单词的训练样本,这些训练样本是提前标注好的,即每个样本对应一段音频,该音频只包含这个单词的读音
- 当有了该单词的多个训练样本后,就用这些样本结合Baum-Welch算法和EM算法来训练出GMM-HMM的所有参数,这些参数包括初始状态的概率向量,状态之间的转移矩阵,每个状态对应的观察矩阵
- HMM在识别阶段
- 输入一段音频,如果该音频中含有多个单词,则可以手动先将其分割开,然后提取每个单词的音频MFCC特征序列,将该序列输入到每个HMM模型(提前训练好的)中,采用前向算法求出每个HMM模型生成该序列的概率,最后取最大概率对应的那个模型,这个模型对应的单词就是我们识别的结果
GMM-HMM语音识别
- 一个词的识别全过程
- 将waveform(音频文件读入的数据)切成等长frames,对每个frame提取特征(MFCC)
- 对每个frame的特征跑GMM,得到每个frame属于每个状态的概率state
- 根据每个单词的HMM状态转移概率a计算每个状态sequence生成该frame的概率(发射概率);哪个词的HMM序列跑出来概率最大,就判断这段语音属于该词(前向算法求得的概率)

深度神经网络模型
DNN
数据预处理
- 消除人类发声器官本身和由于采集语音信号的设备带来的混叠、高次谐波湿疹、高频等因素对语音信号质量的影响,尽可能保证后续语音处理得到的信号更均匀、平滑,为信号参数提供优质的参数,提高语音处理质量
- 常用方法有 特征归一化、标准化、端点检测、预加重、降噪、分帧
- 特征归一化:语音识别中的倒谱均值归一化是在句子内减去MFCC特征的均值,可以减弱声学信道扭曲带来的影响(类比均值)
- 特征标准化:使用全局转换缩放每维数据,使得最终的特征向量处于相似的动态范围内(类比方差)
模型初始化
- 因为DNN是一个高度非线性模型,并且相对于参数来说,训练准则是非凸函数,所以初始化模型会极大影响最终效果
- 初始化方法分为两类:
- 区间初始化:初始化的权重必须使得隐藏层神经元节点在 sigmoid 激活函数的线性范围内活动;权重太大会让结果趋近于0或1,导致梯度更小,无法收敛
- 随机初始化:DNN中的隐层神经元都是对称可互换的,如果所有的模型都有相同的参数,那所有的隐层会输出相同的结果,导致在DNN底层检测相同的特征
权重衰减(正则项)
- 当训练集的大小相对于DNN的参数量较小时,权重衰减法往往是很有效的
- 语音识别的DNN模型参数超过百万,相应系数应该较小,甚至当训练数据量较大时设为0
Dropout
- 防止过拟合的一种方法。
- 在训练过程中随机丢弃每一个隐层中一定比例的神经元,这意味着即使在训练过程中丢弃了部分神经元,剩下的神经元依然需要在每种随机组合中有好的表现
batch大小选择
- 小批量比大批量迭代速度更快,比随机训练集更容易收敛
- 在语音识别中,前期可以选择较小的批量块,比如64到256,后期换用较大的批量块,比如1024-8096个样本
随机取样
- 随机梯度下降和小批量梯度下降中,随机取样十分重要
- 为了得到梯度的无偏估计,样本必须是独立同分布的
- 如果训练过程中的一些样本不是随机从训练集中取出的,模型的参数可能会沿着一个方向偏移太多
- 随机取样的两种思路:
- 若所有样本都可以被载入内存,那可以通过对样本索引进行相应的处理抽样
- 若无法将所有样本都载入内存,可以采用滚动窗的方法,每次加载一块数据进入内存,然后在窗内随机取样
学习率
- 可根据数据集的大小选择合适的学习率,当使用平方差和作为目标函数时,随着数据量的增多,学习率应该被设置为相应更小的值。另一种方法是,选择不受数据集大小影响的目标函数,均值平方差函数
- 一般常用的学习率有0.00001,0.0001,0.001,0.003,0.01,0.03,0.1,0.3,1,3,10
网络结构
- DNN每个隐层都可以被认为是前一层的特征抽取器,每层节点的数量应该足够大以获取本质的模式
- 宽且浅的模型容易过拟合,窄且深的模型容易欠拟合。相对一个窄且浅的模型,通常一个宽且深的模型更容易找到一个好的配置
- 在语音识别中,有5-7个隐藏才呢过,每层有1000-3000个节点的DNN模型效果很好
DNN-HMM
- DNN
- 特征的学习能力
- 估计观察特征的概率
- 预测状态的后验概率
- HMM
- 描述语音信号的序列变化
- 预测后面的序列
- DNN-HMM语音识别
- 声学信号使用HMM框架剑魔,每个状态的生成概率使用DNN替换原来的GMM进行估计,DNN每个单元的输出表示状态的后验概率
CD-DNN-HMM
为了获取更好的性能提升,引入了上下文信息(即前后帧信息),被称为CD-DNN-HMM(Context-Dependent DNN-HMM)模型
- 组成
- DNN
- HMM
- 一个状态先验概率分布
- 由于CD-DNN-HMM和GMM-HMM共享因素绑定结构,所以训练CD-DNN-HMM第一步就是使用训练数据训练一个GMM-HMM,利用Viterbi进行解码产生的标准结果用于DNN
- 性能提升
- 使用更深的神经网络
- 使用更长的帧作为输入
- 使用三因素进行建模
- 提升训练数据的标注质量
- 预训练(浅层DNN)
- DNN训练加速
- 多GPU反向传播
- 异步随机梯度下降
- 减小模型规模
- 集成
- DNN解码加速
- 并行计算
- 稀疏网络
- 低秩近似(大尺寸DNN训练小尺寸DNN)
- 多帧DNN
- DNN优于GMM
- DNN是一种判别模型,自身带有区分性,可以更好区分标注类别
- DNN再大数据集上有非常优异的表现,伴随着数据量的不断增加,GMM模型再2000小时左右会出现性能饱和,而DNN模型再数据量增加到1W小时以上时还有性能提升
- DNN模型对环境噪声有更强的鲁棒性,通过加噪音等方式,DNN模型再复杂环境下的识别性能甚至可以超过使用语音增强算法处理的GMM模型
高级语音模型
RNN
Recurrent Neural Networks, 循环神经网络
- 通过隐藏层节点周期性的连接,来捕捉序列化数据中动态信息的神经网络,可以对序列化的数据进行分类
- 和其他前向神经网络不同,RNN可以保存一种上下文的状态,甚至能够在任意长的上下文窗口中存储、学习、表达相关信息,而且不再局限于传统神经网络在空间上的边界,可以在时间序列上有延拓
- RNN广泛应用在和序列有关的场景中,如一帧帧图像组成的视频,一个个片段组成的音频,和一个个词汇组成的句子
RNN适用场景
- 不太长的相关信息和位置信息
- 适用于需要连接前面短期内的信息到当前任务上

RNN网络结构


- RNN是包含循环的网络,允许信息的持久化
- 在上面的循环神经网络的模块中,x是当前时刻正在读取某个输入,并输出一个值h;s是其中一个序列的状态,其中经过了相应激活函数的处理
- 循环可以使得信息可以从当前步传递到下一步
- RNN 可以被看做是同一个神经网络的多次赋值,每个神经网络模块会把消息传递给下一个
标准RNN

- 所有RNN都具有一种重复神经网络模块的链式的形式
- 在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层
BPTT
RNN 的反向传播算法
- 将RNN展开之后,前向传播就是依次按照时间顺序计算一次就好了,BPTT就是从最后一个时间累计的残差传递回来即可,这与普通的神经网络相似,BPTT主要的差异是将每一时刻的梯度相加

RNN 的梯度消失和爆炸
- 反向训练时,对于 RNN 来说,要横向往前推,一直往前推到序列开始的地方
- 梯度消失,梯度爆炸都与路径太长有关,前面的权重都基本固定不变,没有训练效果
LSTM
Long Short-Trem Memory, 长短时记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件
- LSTM 区别于 RNN的地方,主要在于它在算法中加入了一个判断信息有用与否的“处理器”,它的结构被称为cell。一个cell中被放置了三扇门,分别叫做输入门、遗忘门和输出门
- 一个信息进入LSTM网络,可以根据规则来判断是否有用。只有符合算法认证的信息才会留下,不符合的信息会通过遗忘门被遗忘
- LSTM是解决长序依赖问题的有效技术
- 翻译语言、控制机器人、图像分析、文档摘要、语音识别、图像识别、手写识别、控制聊天机器人、预测疾病、点击率和股票、合成音乐等
LSTM 与语音识别
- 语音识别是以 HMM 为基础
- 近几年,在HMM基础上 DNN 的应用大幅提升了语音识别系统的性能。DNN 将每一帧语音及其前后的几帧语音拼接在一起作为网络的输入,从而利用语音序列中上下文的信息。DNN中每次输入的帧数是固定的,不同的窗长对最终的识别结果会有影响
- RNN 通过递归来挖掘序列中的上下文相关信息,在一定程度上克服了 DNN 的缺点。但是 RNN 在训练中很容易出现梯度消失问题,无法记忆长时信息
- LSTM 通过特定的门控单元使得当前时刻的误差能够保存下来兵选择性传给特定的单元,从而避免了梯度消失的问题
LSTM 适用场景
- 相当长的相关信息和位置间隔
- 使用有需要连接前面长期内的信息到当前的任务上
标准LSTM

LSTM 核心 - 初始状态

- LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易
LSTM 核心 - 遗忘门

- LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息
- 这通过一个称为遗忘门的功能完成。该门会读取 \(h_{t-1}\) 和\(x_t\),输出一个在0到1之间的数值给在细胞状态 \(C_{t-1}\) 中的每个数字。1表示“完全保留”,0表示“完全舍弃”
LSTM 核心 - 输入门

- 这一步决定什么样的新信息被存放在细胞状态中
- 包含两个部分:
- sigmoid 层称“输入门层”决定什么值我们将要更新
- tanh 层创建一个新的候选值向量,会被加入到状态中
LSTM 核心 - 更新信息

- 更新旧细胞状态,\(C_{t-1}\) 更新为 \(C_t\)
- \(f_t\) 是遗忘门的输出,决定了哪些信息需要丢弃
LSTM 核心 - 输出门

- 首先运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去
- 然后把细胞状态通过 tanh 进行处理(得到一个-1到1之间的值)并将它和 sigmoid 门的输出相乘
- 最终我们仅会输出我们确定输出的那部分
其他高级模型
- 深度堆叠网络
- 递归感知模型
- 集成深度架构
- 迁移网络
技术前沿与未来展望
技术前沿
- 神经网络
- RNN, LSTM, BiLSTM, FNN, DFSMN, LCBLSTM, LFR-LCBLSTM 等
- 自适应技术
- i-vector, AEC
- 语言模型
- N-gram, word2vec
- 语音识别难点
- 远场麦克风识别
- 高噪音场景语音识别
- 多人语音识别
- 交谈背景语音识别
- 非标准语音识别(变速、情绪等)
未来展望
- 更优的算法与模型
- 更先进的麦克风阵列技术
- 更先进的声学模型与范式
- 更强有力的工具
- 更深入的特征方法和预处理方法
- 多学科融合
ps
语音信号
语音信号计算机中是采用PCM编码按时间序列保存的一连串数据。计算机中最原始语音文件是wav,可以通过各种录音软件录制,录制是包括三个参数
fs:采样率 8000Hz 115200Hz 等等,代表每1秒保存的语音数据点数
bits:每个采样点用几个二进制保存
通道:很多音频都有左右2个通道,在语音识别中通常有一个通道的数据就够了。
关于分帧
语音信号处理常常要达到的一个目标,就是弄清楚语音中各个频率成分的分布。做这件事情的数学工具是傅里叶变换。傅里叶变换要求输入信号是平稳的,当然不平稳的信号你想硬做也可以,但得到的结果就没有什么意义了。而语音在宏观上来看是不平稳的——你的嘴巴一动,信号的特征就变了。但是从微观上来看,在比较短的时间内,嘴巴动得是没有那么快的,语音信号就可以看成平稳的,就可以截取出来做傅里叶变换了。这就是为什么语音信号要分帧处理,截取出来的一小段信号就叫一「帧」。如下图:这段语音的前三分之一和后三分之二明显不一样,所以整体来看语音信号不平稳。红框框出来的部分是一帧,在这一帧内部的信号可以看成平稳的。

那么一帧有多长呢?帧长要满足两个条件:从宏观上看,它必须足够短来保证帧内信号是平稳的。前面说过,口型的变化是导致信号不平稳的原因,所以在一帧的期间内口型不能有明显变化,即一帧的长度应当小于一个音素的长度。正常语速下,音素的持续时间大约是 50~200 毫秒,所以帧长一般取为小于 50 毫秒。从微观上来看,它又必须包括足够多的振动周期,因为傅里叶变换是要分析频率的,只有重复足够多次才能分析频率。语音的基频,男声在 100 赫兹左右,女声在 200 赫兹左右,换算成周期就是 10 毫秒和 5 毫秒。既然一帧要包含多个周期,所以一般取至少 20 毫秒。这样,我们就知道了帧长一般取为 20 ~ 50 毫秒,20、25、30、40、50 都是比较常用的数值,甚至还有人用 32(在程序猿眼里,这是一个比较「整」的数字)。取出来的一帧信号,在做傅里叶变换之前,要先进行「加窗」的操作,即与一个「窗函数」相乘,如下图所示:

加窗的目的是让一帧信号的幅度在两端渐变到 0。渐变对傅里叶变换有好处,可以提高变换结果(即频谱)的分辨率,具体的数学就不讲了。加窗的代价是一帧信号两端的部分被削弱了,没有像中央的部分那样得到重视。弥补的办法是,帧不要背靠背地截取,而是相互重叠一部分。相邻两帧的起始位置的时间差叫做帧移,常见的取法是取为帧长的一半,或者固定取为 10 毫秒。对一帧信号做傅里叶变换,得到的结果叫频谱,它就是下图中的蓝线:

图中的横轴是频率,纵轴是幅度。频谱上就能看出这帧语音在 480 和 580 赫兹附近的能量比较强。语音的频谱,常常呈现出「精细结构」和「包络」两种模式。「精细结构」就是蓝线上的一个个小峰,它们在横轴上的间距就是基频,它体现了语音的音高——峰越稀疏,基频越高,音高也越高。「包络」则是连接这些小峰峰顶的平滑曲线(红线),它代表了口型,即发的是哪个音。包络上的峰叫共振峰,图中能看出四个,分别在 500、1700、2450、3800 赫兹附近。有经验的人,根据共振峰的位置,就能看出发的是什么音。对每一帧信号都做这样的傅里叶变换,就可以知道音高和口型随时间的变化情况,也就能识别出一句话说的是什么了。
主流声学建模技术
- GMM-HMM
- DNN-HMM
- FFDNN
- CNN
- RNN
- LSTM
- DNN-CTC

浙公网安备 33010602011771号