Kaldi单音子建模
GMM-HMM和GMM-NN
本质上并没有什么区别,基于神经网络的主流语音识别系统仍基于HMM,只不过是用神经网络来代替GMM建模HMM状态的观察概率
1
特征提取
特诊提取脚本会读取数据文件夹中的音频表单,并依次进行特征提取,将结果写入数据文件夹中的声学特征表单,要求输入音频的采样大小为16比特。特征提取的输出是声学特征表单和用于保存声学特征的二进制文档
1.1
用kaldi提取声学特征(13维和40维的mfcc特征)
1.2
特征在kaldi中的存储(将特征按照kaldi的特征表单形式保存,用kaldi自有的工具提取特征,自动输出为表单形式)特征形式:
句子ID
Frame1:特征(13维or40维)
FrameN: 特征(13维or40维)
倒谱均值方差归一化(CMVN),在kaldi训练脚本中,大部分训练步骤都默认使用谱归一化,以使得模型的输入特征趋近于正态分布
1.3
特征的使用
训练声学模型时,通常还需要对对特征做更多的扩展。如单因子模型训练时,在谱归一化(CMVN)的基础上做了差分系数(Delta)的扩展
MFCC-CMVN-Delta
加速训练,并行的训练
1.4
常用的特征类型
MFCC,FBank,PLP,中文还有基频
2
单因子的训练模型
使用GMM描述单因子发音状态的概率密度分布函数的HMM模型
2.1
声学模型的基本概念
一个声学模型就是一组HMM
HMM:初始概率,转移概率和观察概率
语音识别框架中的每个HMM,定义该HMM中有多少个状态,各个状态起始的马尔科夫链的初始概率Π,状态见的转移概率(HMM)及每个状态的概率密度分布函数(GMM)
语音识别,一般令初始概率为
转移概率对识别结果影响较小,一般把状态间的转移概率预设为固定值,不必在训练过程中更新转移概率
HMM状态的物理意义在语音识别中可以认为是音素的发音状态,习惯上分为初始态,稳定态,结束态,对应的用三个HMM状态建模一个音素的发音
根据声学模型,可以计算某一帧声学特征在某一个状态上的声学分(AM score),声学分指的声学特征(观察状态)对于该状态的对数观察概率
AmScore(t,i)=logP(ot|si)
观察概率的经典建模方法是高斯混合模型
GMM+HMM算法
(1)把帧识别成状态(难点)
(2)把状态组合成音素
(3)把音素组合成单词
若干帧对应一个音素
若干音素对应一个单词
计算机识别方式就是概率匹配
GMM要学习的概率
(1)GMM:features-state
(2)HMM:上个state-这个state
一个GMM-HMM声学模型存储的主要参数为各状态和高斯分量的
,
,
GMM-HMM声学模型:TranSitionModel+多个DiagGMM
TranSitionModel:每个音素有多少个状态构成,状态转移概率
DiagGMM:一个状态的高斯分量的概率分布函数pdf,
,
,
2.2
将声学模型用于语音识别
简单的说,识别的过程就是用语音的特征序列去匹配一个状态图,搜索最优路径。状态图中有无数条路径,每条路径代表一种可能的识别结果,且都有一个分数,该分数表征语音和该识别结果的匹配程度。判断两条路径的优略就是比较两条路径的分数,分数高的路径更优。
状态图由若干节点和若干跳转组成,有的跳转对应一个HMM状态,并对当前帧计算一个分数,分数由声学分和图固有分。
图固有分主要源于语言模型概率
声学分是根据声学模型和待识别语音的匹配关系动态计算的,声学模型最主要的就是计算声学分
路径分数是该路径上各条跳转的分数和
Kaldi的状态图是基于WFST构建的
2.3
模型初始化
初始化模型(gmm-init-mono),该模型并不需要输入任何数据,这个工具仅仅初始化了一个基础模型,后续需要使用训练数据来更新这个模型的参数。另外,这个模型的每一个状态只有一个高斯分量,在后续的训练过程中,会进行单高斯分量到混合多高斯分量的分裂
训练数据迭代更新模型参数:Baum-Welch算法(EM算法):该算法并不需要预先得知训练样本每一帧具体对应哪个状态,只需要给出训练样本的状态序列,用EM算法求解
Kaldi的实现:要求显式地输入每一帧对应地状态,使用带标注地数据更新GMM的参数,Viterbi训练方法
2.4
对齐
对齐:获取每一帧对应的状态
2.5
Transition模型
Transition模型存储在Kaldi声学模型的头部
包括三部分:,,
:众多三元组构成
音素索引,HMM状态索引,PDF索引
1 0 0
1 1 1
1 2 2
2 0 3
2 1 4
2 2 5
把这些三元组放在一起,从1开始编号,每个编号对应一个transition state
transition state有若干可能的跳转指向其他状态,对这些跳转从0开始编号,得到transition index
transition-id:(transition state,transition index)
:对数转移概率,按照teansition id索引
为什么需要transition id?
考虑到pdf-id不能唯一的映射成音素(不同的音素共享同一个pdf),而transition id可以
2.6
GMM模型迭代
声学模型训练需要对齐结果,而对齐过程又需要声学模型
用初始模型来对齐
Kaldi单音子建模相关推荐
- kaldi单音素模型训练 - train_mono.sh脚本解读
提示:本文适合kaldi的初学者,但最好有过运行kaldi的经验,并且大概了解EM算法.本文比较细致地对train_mono.sh脚本进行了解读,包括其源码,输入输出,以及对输出文件的内容都有详细的解 ...
- 运动目标检测_单高斯背景建模
1.运动目标背景建模 背景建模也称为背景估计,其主要目的是根据当前的背景估计,把对序列图像的运动目标检测问题转化为一个二分类问题,将所有像素划分为背景和运动前景两类,进而对分类结果进行后处理,得到最终 ...
- 运动目标检测单高斯背景建模
1.运动目标背景建模 背景建模也称为背景估计,其主要目的是根据当前的背景估计,把对序列图像的运动目标检测问题转化为一个二分类问题,将所有像素划分为背景和运动前景两类,进而对分类结果进行后处理,得到最终 ...
- HTML5新增-页面结构状态-列表-表单-音视频-全局兼容
页面结构状态-列表-表单-音视频-全局兼容 1 HTML5 新增语义化标签 1.1 新增页面结构标签 标签名 语义和功能 属性 单标签还是双标签 header 表示页面或section中的页眉 双 f ...
- html按住语音如何看前面内容,单音语音内容.html
单音语音内容 $axure.utils.getTransparentGifPath = function() { return 'resources/images/transparent.gif' ...
- 告别单音游戏背景音乐的时代未来发展将如何
游戏的迅速发展让背景音乐告别从前的单音时代,为游戏搭配了绚丽多姿的音乐,让玩家在背景音乐的衬托下犹如身临虚拟的游戏世界,游戏背景音乐的发展日益强大,那么是否能更上一层楼呢? 游戏背景音乐的重要程度目前 ...
- 3DAI安卓SDK发布--单照片极速建模
P3Dface是由深圳市三维人工智能科技有限公司研发的三维人脸重建库,主要功能是根据一张正面的人脸照片生成对应的人脸三维模型,生成的模型可以导出成OBJ,或直接导入Unity等三维引擎里使用. 近年来 ...
- 头歌:实验6(2)语音信号单音干扰滤波实训
第1关:低通滤波器设计 1.已知语音信号频率范围是:300Hz~3.4kHz,现有一噪声为7kHz,理想低通滤波器的截止频率应该选择多少__B__kHz A.3 B.5 C.8 D.10 第2关:语音 ...
- matlab 信号生成,如何利用Matlab产生单音信号
单音信号,既单一频率的信号,在测试IFFT/FFT正确性时,我们常常用到单音信号,一般需要的单音信号时是复数形式: fm = 2e6 ; %信号频率 fs = 122.88e6; %采样速率 w = ...
最新文章
- 会计期间13-16怎么用
- mysql scws_php利用scws实现mysql全文搜索功能的方法,_PHP教程
- 你为什么需要在64位系统下用32位程序
- 分布式系统保障—混沌工程—初识
- intellij选择困难症Spring Batch/Data JPA/Integration/MVC/Security/Web Flow/Web Services到底选哪个?
- 管理多个Java安装
- 怎么让wegame适应屏幕大小_iOS的五大设计原则:统一化和适应化原则
- 国货彩妆品牌2021年Q1社媒营销投放分析报告
- 解决方案:秒杀整体设计
- linux在线扩展文件系统空间ext2online
- vSphere 7 With K8s系列06:创建命名空间
- 解决Maven的jar包冲突问题
- 明小子mysql_安全狗最新版SQL注入防护多种方式bypass(简简单单/各种数据库通用)...
- oracle cogs 科目,CFA一级财报科目:现金流量表详情介绍!
- 抖音超级恶心的滑稽HTML源码
- 数据库三范式简单理解
- 搭建mqtt服务器mosquitto以及添加CA证书
- 创新型中小企业如何认定?
- loadrunner的吞吐量和吞吐率
- 浅谈项目经理的工作职责