语音处理理论和应用
语音处理介绍
语音处理
语音信号处理(语音处理)
语音文件一般为wav格式。下图可视化的音频文件,横坐标为采样点数,纵坐标为幅度。
音频信号主要的问题
- 波形数据的分布非常不均匀。
- 开头和结尾的静音部分。
- 波形中含有噪音部分。
语音信号预处理步骤
- 数字化:将从传感器采集的模拟语音信号离散化为数字信号
- 预加重:预加重的目的是为了对语音的高频部分进行加重,去除口唇辐射的影响,增加语音的高频分辨率
- 端点检测:从语音信号中识别并消除长时间静音段,减少环境对信号的干扰
- 分帧:因为语音的短时平稳性,所以要进行“短时分析”,即将信号分段,每一段称为一帧(一般10-30ms
)–分帧虽然可以采用连续分段的方法,但一般要采用交叠分段的方法 - 加窗:语音信号的分帧是采用可移动的有限长度窗口进行加权的方法来实现的。加窗的目的是减少语音帧的截断效应。常见的窗有:矩形窗、汉宁窗和汉明窗等
语音信号分析和特征提取
语音特征
-
描述语音的核心信息,在语音模型构建中起重要作用
-
好的语音特征
包含区分音素的有效信息:良好的时域分辨率和频域分辨率
分离基频F0以及它的谐波成分
对不同说话人具有鲁棒性
对噪音或信道失真具有鲁棒性
有良好的模式识别特性:低维特性,特征独立
语音特征提取方法
-
现行预测洗漱(LPC)
-
LPC倒谱稀疏(LPCC)
-
线谱对参数(LSP)
-
共振峰率(前三个共振峰)
-
短时谱
-
Mel频率倒谱系数(MFCC)
-
感知线性预测(PLP)
很难说哪种方法比较好,不同的场景适用不同的方法。一般来说MFCC是一种比较常用的方法。
什么是MFCC
语音识别和语者识别方面最常用的语音特征就是梅尔倒谱系数(Mel-Frequency Cepstral Coefficients)
MFCC 提取过程
- 声道转换
- 预加重
- 分帧
- 加窗
- 快速傅里叶变换
- 通过三角带通滤波器得到 Mel 频谱
- 倒谱分析(取对数,做逆变换)
语音识别
语音识别概念和应用
语音识别技术就是让机器通过识别和理解把语音信号转变为相应的文本或命令的技术
语音识别现状
- 语音识别属于人工智能中的感知智能,其应用已经进入家电、通信、汽车、医疗、家庭服务等各个领域。如:语音助手、机器人和智能音箱等。
- 目前,某些公司的语音识别在标准数据集或安静的近场环境下识别率已经达到了97%,但是在真实场景下的识别率还远远达不到的期望水平。
语音识别难点
- 地域性
一个四川人说“我爱你”,湖南人说“我爱你”,江西人说“我爱你”,同一句话,是不是发音不同,有的甚至完全不一样 - 场景性
在不同的场合说相同的一句话,会根据不同的场合、面对不同的人,语音语调会有不同,还有就是在心情好时说一句话和心情坏时说一句话,也会存在这个问题 - 生理性
还有一个影响最大的,就是每个人的音色和发音习惯不同,也会导致同一个词设置同一个声母、韵母,不同的人产生的声波是不一样的
语音识别任务处理流程
语音合成
应用场景
概念
- 语音合成,也叫文语转换(Text-To-Speech),能将任意文字信息转化为相应语音朗读出来
- 语音合成涉及声学、语言学、数字信号处理、计算机科学等多个学科技术
- 为了合成出高质量语言,除了依赖于各种规则,包括语义学规则、词汇规则、语音学规则外,还必须对文字的内容有很好的理解,这也涉及到自然语言理解的问题
语音合成处理流程
-
文本文件
-
文本分析
文本归一化
语音分析
韵律分析 -
语音内部表示
-
波形合成
毗连合成
共振峰合成
发音合成 -
波形文件
-
评估
文本分析
语音识别中的文本分析主要工作是把文本数据转换成语音内部表示(Phonemic Internal Representation),包括:
- 文本归一化:对自然文本数据进行预处理或归一化,包括句子的词例还原,非标准词,同形异义词排歧等
- 语音分析:通过大规模发音词典,字位-音位转换规则
韵律分析:分析文本中的平仄格式和押韵规则,主要包含三方面的内容:韵律的机构,韵律的凸显度,音调
语音信号
语音信号分析方法
-
语音处理的前提是语音信号分析
-
语音合成音质的好坏和语音识别率的高低,都取决于对语音信号分析的准确度和精度
-
短时分析技术贯穿于语音信号分析的全过程
-
从分析的特征不同分类
- 时域分析
时域分析是最早使用也是应用最广泛的一种分析方法
通常用于语音分割预处理、大分类等最基本的参数分析和应用
时域参数:短时能量、短时过零率、短时自相关函数、短时平均幅度差函数-
频域分析
最常用的频域分析方法为傅里叶分析法
通过语音信号的频谱可以观察它们的共振峰特性、基音频率和谐波频率 -
倒频域分析
-
小波域分析
-
从分析的方法维度分类
- 模型分析方法
- 非模型分析方法
语音信号数字化
- 音频自动增益(ACG)
- 反混叠滤波
- 采样
- A/D转换
- 编码
传统语音模型(GMM-HMM)
高斯混合模型(GMM)
高斯分布曲线
-
正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形。
-
标准差(方差)越大,曲线越扁平;反之,标准差越小,曲线越瘦高。
-
标准的高斯分布曲线,方差为1,均值为0。
最大似然法
-
最大似然法(Maximum
Likelihood,ML)也叫极大似然估计,是一种具有理论性的点估计法。最大似然估计是一种统计方法,它用来求一个样本集的相关概率密度函数的参数。 -
此方法的基本思想是:当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大
举个例子,假如有一个罐子,里面有黑白两种颜色的球,数目多少不知,两种颜色的比例也不知。我们想知道罐中白球和黑球的比例,但我们不能把罐中的球全部拿出来数。现在我们可以每次任意从已经摇匀的罐中拿一个球出来,记录球的颜色,然后把拿出来的球再放回罐中。这个过程可以重复,我们可以用记录的球的颜色来估计罐中黑白球的比例。假如在前面的一百次重复记录中,有七十次是白球,请问罐中白球所占的比例最有可能是多少?我想很多人立马有答案:70%
EM算法
-
最大期望算法(Expectation Maximization Algorithm ),是一种迭代算法,用于含有隐变量(HiddenVariable)的概率参数模型的最大似然估计或极大后验概率估计
-
可以从非完整数据集中对参数进行MLE估计,是一种非常简单实用的学习算法。这种方法可以广泛地应用于处理缺损数据,截尾数据,带有噪声等所谓的不完全数据
-
EM算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值。解决方法是初始化几次不同的参数进行迭代,取结果最好的那次。
算法步骤 -
初始化参数;
-
求解期望,也就是每个样本点属于每个单高斯模型的概率;
-
最大化过程,根据期望过程得到的结果,更新参数;
-
迭代上述过程直至收敛。
高斯混合模型分类
单高斯模型SGM
- SGM适合于仅有两类别问题的划分
高斯混合模型GMM
- 由于具有多个模型,划分更为精细,适用于多类别的划分,可以应用于复杂对象建模。
求解高斯分布模型参数的步骤
- 使用高斯概率分布的概率密度函数
- 根据样本数据和高斯概率分布的函数形式写出似然函数
- 将似然函数转化为对数似然函数
- 对数似然函数对参数求导且令方程为零
- 解方程得到最优的参数值
GMM优缺点
优点
- 拟合能力强
- 对语音特征匹配概率最大化
缺点
- 无法处理序列因素
- 无法处理线性或近似线性数据
GMM的学习步骤
- 高斯混合模型参数
- 概率密度函数
- 似然函数
- 对数似然函数
- EM算法求解
隐马尔科夫模型(HMM)
隐马尔科夫模型
Hidden Markov Model, HMM,马尔科夫链的一种,它的状态不能直接观察到,但能通过观测向量序列观测到,每个观测向量都是通过概率密度分布表现为各种状态,每个观测向量由一个具有相应概率密度分布的状态序列产生
马尔科夫链
离散事件随机过程。在给定当前知识或信息的情况下,过去对于预测将来是无关的,只与当前状态有关
在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。
原理
马尔科夫链描述了一种状态序列,其每个状态值取决于前面有限个状态。马尔科夫链是具有马尔科夫性质的随机变量的一个数列。这些变量的范围,它们所有可能取值的集合,被称为“状态空间”。
三要素
- 初始概率
- 转移概率
- 转移概率矩阵
性质
- 正定性:每个状态转移概率为正数
- 有限性:状态转移矩阵中的每一行相加皆为1
实例
HMM的描述
HMM的三个主要问题
-
评价问题:计算HMM关于某一特定观测序列的似然比
前向算法
已知初始状态、转移概率和发射概率计算HMM关于某一特定观测序列的似然比
用递推的方法求得概率
后向算法
与前向算法类似,它定义了一个后向概率:给定隐马尔科夫模型 λ,定义再时刻t状态为 qi的条件下,从t+1到T时刻部分的观测序列为 ot+1,…,oT 的概率为后向概率
βt(i)=P(ot+1,ot+2,…,oT|it=qi,λ)
同样使用递推的方法求得后向概率 βt(i) 和观测概率 P(O|λ) -
解码问题:已知观测序列和三种概率(初始状态概率、发射概率、转移概率),求状态序列
动态规划算法
Viterbi算法 -
学习问题:根据观测序列和状态序列计算HMM的三种概率
监督式算法
利用大数定理用频率来估算HMM的三种概率
非监督 Baum-Welch 算法
未给出状态序列,只有观察序列,求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每个单元的输出表示状态的后验概率