版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、HTK/语音识别基础教程,目录,语音识别基础 HMM声学模型的训练和基本原理 概要 HMM的3大问题和算法简介 HTK声学模型训练完整步骤 数据的准备 特征量的提取,音素列表,转写文本,发音字典等 HMM的两种初始化方式(HInit,HCompV) Monophone的训练 Triphone的训练(WI,Cross-word) Tied-State Triphone的训练 高斯混合数的增加,语音识别的基础原理,语音识别可以看作是已知观测到语音信号X,求出其语言内容(文字)w,即 最大化的 :,由声学模型得到(声学似然度), 由语言模型决定(先验知识),HMM模型概要,基本概念 HMM与语音信号
2、 状态,状态迁移/输出概率,观测信号序列 3状态音素HMM(非静音):Left-to-right(2-3-4,不允许4-3) without skips(不允许2-4) 参数(各状态迁移概率,信号输出概率:高斯分布),1,2,5,3,4,O1,O2,O5,O3,O4,O6,HMM构成要素,状态集合: 开始状态 和终了状态 为固定状态,不输出信号 状态迁移概率: 输出概率: 从状态 输出信号o的概率 输出信号系列 观测到的语音信号,如MFCC等特征量 状态系列: 时刻n对应状态,HMM三大基本问题(具体参考dean/ebooks下的经典),评价问题 (Forward算法) 已知观察序列 和模型参
3、数 ,如何有效的计算 (即模型对数据的拟合程度) 解码问题(Viterbi算法) 已知观察序列 和模型参数 ,在最佳意义上确定一个状态序列 训练问题(EM,Baum-Welch重估) 已知观察序列 和模型参数 ,如何调整模型参数 使 最大,HMM模型评价算法(前项算法),S0,S1,S2,S3,SM,时刻n,状 态 m,N,0,N+1,O(1),O(2),O(N),HMM模型评价算法(前项算法),S0,S1,S2,S3,1.0,0.6,0.4,0.2,0.8,a b b,(a,b)=(0.7,0.3),(a,b)=(0.6,0.4),1.0,0.7 0.7,1.0,0.0,0.3 0.126,
4、0.4 0.112,0.3 0.023,0.4 0.029,0.4,0.4,0.6,0.6,0.2,0.2,0.8,0.024,两种可能的路径: S0S1S1S2S3 S0S1S2S2S3 两者之和便为信号abb 的输出概率:,HMM模型评价算法(前项算法),初期化: 初期迁移: 递进式:对于 , 最终迁移:,HMM解码:Viterbi算法,S0,S1,S2,S3,1.0,0.6,0.4,0.2,0.8,a b b,(a,b)=(0.7,0.3),(a,b)=(0.6,0.4),1.0,0.7 0.7,1.0,0.0,0.3 0.126,0.4 0.112,0.3 0.023,0.4 0.02
5、9,0.4,0.4,0.6,0.6,0.2,0.2,0.8,两种可能的路径: S0S1S1S2S3 S0S1S2S2S3 两者输出信号abb 概率最大者为最佳路径:,EM算法简介:ML(最大似然),概率事件 的离散概率参数为: 即 且满足 ,现有已知训练数据 中,事件 发生了 次,最大似然参数 可以通过计算 在满足 前提下的对数概率最大化,定义 ,求其最大值, ,代入 从而得到,EM算法简介,假设有A,B两硬币,抛A币正面朝上的概率为0.3, B币正面朝上概率为0.8。现在每次按照一定的概率任选A币或B币,一共抛了3次,现已知观测到的结果为正、反、正,求每次选择A(或B)的概率。 假设A的概率
6、为 ,我们可以用EM算法求其概率。先给 任意的初始值,例如0.6, 那么3次当中A币被选择的期望为 将期望值0.56初以总次数3得到的是ML参数 ,让后再把这个参数当作初始值求出新的参数,如此反复至收缩,最终求得参数使得出现正、反、正的概率最大。,HMM训练:B-W重估,1)用初始模型,前项/后项概率的计算 2)用前后项概率的乘积计算各状态统计量的期望值 3)对每一个状态进行参数更新 4)收束判别,操作环境/资源简介,平台 Linux/MacOS 数据库(95服务器) TIMIT /home/dean/timit/data/audio/TIMIT 训练脚本 (bash脚本,一行一个命令,所见即
7、所得) /home/dean/demo/demo.sh 参考资源 Fundamentals of Speech Recognition Chap6 以后简称经典 95服务器 /home/dean/ebooks/ HTK BOOK HTK代码 HTKTools,HTKLib 语音识别HTK代码学习手册 95服务器 /home/dean/ebooks/ HTK Wall Street Journal Training Recipe(K.Vertanen, Cavendish Laboratory, Cambridge) UNDERSTANDING HTK ERROR MESSAGES http:/
8、/bromberg/htk_problems.html,HMM原型,下图为示意,实际见:demo/common/proto,Sil和sp,Sil = silence (句子前后的无音部分,持续时间比较长), sp= short pause (单词间,可有可无,所谓tee model),特征量提取,单位 100ns (HTK历史遗留问题),HCopy: wav-mfcc特征量,HCopy -T 1 -C config -S codetr.scp -T 1:trace,追踪转换过程 -C config:读取设置文件 -S codetr.scp: 读取转
9、换前后文件列表,设置文件config:,文件列表 codetr.scp:,准备工作,音素列表 Demo/common/monophones1 47个音素(含sp),每行一个 音素级别标注文本(*.lab)的整理 HLEd: 对lab文件进行编辑 TIMIT格式-HTK格式 音素的Mapping(61 phones-47 phones) 通常所有特征量对应的lab写在一个mlf文件上(上图) 若只有词级别的转写文本,可以通过发音词典来转换成音素级别的label (HTKbook 3.1.3) HLEd -l * -d dict -i phones0.mlf mkphones0.led words
10、.mlf,#!MLF!# ./mfcc/TEST/*/SX306.lab 0 1578125 sil 1578125 1987500 hh 1987500 2675000 ey 2675000 4025000 ch 4025000 5675000 ow 5675000 6275000 z 6275000 7610000 sil . ./mfcc/TEST/*/SX307.lab ,Sub-Word HMM 训练及初始化,单词HMM(whole-word):识别孤立的单词 音素HMM(sub-word):识别连续的语音 (音素连接成单词,句子),HRest: 孤立HMM循环更新,直到收敛 HER
11、est:对连接HMM参数进行一次更新 (核心部分),两种初始化 左边:HInit(+HRest) (有音素级别的时间标注) 右边: HCompV (flat start) (无音素级别的时间标注),HMM如何初始化问题:无定论,根据经典,从经验上说,状态迁移概率初始值对训练模型影响不大(可随机选择),状态输出概率初始值影响比较大。,HInit和HCompV,Hinit: 1)读取音素级别lab的时间信息,得到各音素的特征量 2)针对每个音素,把特征量平均分配给该音素HMM的各状态得到初始模型,然后循环利用viterbi算法重新计算HMM路径(状态级别的Forced-alignment),直到收
12、敛(似然度不再增加) HCompV: 因无法判断音素边界,所以一视同仁地将训练数据的全局均值和方差作为所有音素初期HMM各状态的高斯分布的参数。 # HCompV中计算出来的全局方差乘以定数(如0.01)后,通常用来作为各音素HMM方差的底值(floor) .,HRest和HERest,HRest Re-estimation ( Baum Welch重估) 只针对孤立的音素或单词HMM(单一的HMM) 只执行一次,就自动循环进行B-W重估,直到收敛 HERest 多了一个E,意思为Embedded-training 语音段中出现的音素HMM连接在一起,同时更新 只需要音素的序列,不需要各音素的
13、起始时间信息 只进行一次B-W重估,需要重复执行HERest(2-5次) 收敛需很长时间 执行太多次容易造成Over-fitting,缺乏一般性,步骤1:HMM初始化(HInit+HRest),HInit -A -T 1 -l ah -o ah -M train/phone0 -S scp/train.scp -I lab/phone.mlf common/proto,针对音素列表中的每一个音素,用Hinit初始化。 在上面例子中,-l ah 表示从特征量中切割出仅含ah部分, 这是通过读取phone.mlf中的音素起始时间,从特征量列表train.scp中列出来的特征量中切割。 -o ah
14、表示初始化后的HMM的名字就命为ah -M train/phone0 表示初始化后的HMM放在train/phone0中,HRest -A -T 1 -S scp/train.scp -I lab/phone.mlf -l ah -M train/phone1 train/phone0/ah,上述命令表示,用train/phon0/ah作为初始模型, 进行单一音素ah的B-W重估。,我们对每一个音素都执行HInit-Hrest后,就得到 所有音素的初始模型,步骤二:不带sp的初期monophone训练(HERest),用HCompV设方差的floor 运行两次HERest进行B-W重估,HCo
15、mpV -A -T 1 -C common/config -f 0.01 -m -S scp/train.scp -M train/phone1 -I lab/phone.mlf common/proto cat train/phone1/vFloors train/phone1/macros,HERest -A -T 1 -d train/phone1 -C common/config -I lab/phone.mlf -t 250.0 150.0 1000.0 -S scp/train.scp -H train/phone1/macros -H train/phone1/hmmdefs -
16、M train/hmm1 common/monophones0,步骤三:Sil模型的修改和SP的添加,手工增加sp模型,参数完全拷贝sil 用HHEd (sil.hed)编辑sp和sil模型 增加sil和sp的24 AT 2 4 0.2 sil.transP AT 4 2 0.2 sil.transP 增加sp的1-5的转移 Sil和sp的2,3,4状态捆绑 TI silst2 sil.state2,sp.state2 最后用含sp的标注(mlf)执行数次HERest进行B-W重估,monophone就训练好了,sp,HHEd -A -T 1 -H train/hmm4/macros -H t
17、rain/hmm4/hmmdefs -M train/hmm5 script/sil.hed common/monophones1 请参考/home/demo/script/sil.hed来理解以上对sil/sp的操作,步骤四:Triphone的准备,将monophone的lab(mlf)转化为triphone的mlf标注 用HLEd加上简单的脚本(.led)即可 Word-internal和Cross-word的区别 拷贝中心音素的monophone作为triphone的初始模型 对中心音素相同的triphone,状态迁移参数进行绑定,参考demo/script下的mktri.led 和mk
18、ri_cross.led的区别,用HHEd来修改模型 具体参考 script/mktri.hed,步骤五:对Triphone初始模型的训练,直接用HERest进行多次B-W重估训练 不少三音素模型会因为数据不足方差为macro中定义的底值 通过下一步的Tied-State triphone把声学上类似的三音素模型间,以状态作为基本单位进行捆绑 被捆绑的状态的高斯参数(均值和方差)是相同的 共享状态所对应的训练数据,步骤六:状态绑定,由分类树进行Top-down的clustering 先把中心音素相同的HMM按状态的不同进行分类,每一个聚类作为一个分类树的root 各节点根据问题(前后音素的种类
19、)进行分裂 以似然度的增加值作为分裂的基准,解读状态绑定脚本script/tree.hed,R0 阈值 stats 读取HERest训练过程的统计量,并对最终节点的Occupancy设置最低阈值 QS L_Nasal ng-*,n-*,m-* 问题:左边的音素是否为鼻音 TB 阈值ihS2 (*-ih,ih+*,*-ih+*).state2 把中间音素为ih音素作为树的顶点 加载各种问题,对最佳节点进行分裂,直到似然度的增加值不高于锁定的阈值为止 AU “fulllist” (合成fulllist中出现的三音素) CO “tiedlist”(对于物理上完全相同的进行合并),Stats文件,1
20、b 3067 12992.293945 6128.058594 4506.200195 2 d 8442 20671.318359 13925.998047 10818.215820 3 f 3128 7046.087891 19028.851562 7648.780273 4 g 2772 9015.560547 7333.570801 4914.104492 5 k 6488 25268.160156 18983.066406 18843.390625 6 l 8157 29151.185547 14983.255859 13595.183594 7 m 5429 9371.398438 17294.533203 8990.443359 8 n 10900 26275.300781 18335.945312 18929.548828 9 p 3545 7404.618652 13271.621094 15804.33
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024劳务派遣合同范本劳务派遣合同范本2
- 2024《技术转让合同范本》
- 2024【设计服务合同范本】软件服务合同范本
- 2024正规材料采购合同书范本
- 2024个人汽车租赁合同范本
- 2024市场商铺租赁合同
- 2024室内装修装饰工程挂靠合同书范本
- 深圳大学《有限元方法》2023-2024学年第一学期期末试卷
- 保修合同范本(2篇)
- 安全试工合同(2篇)
- 湖北省鄂东南联考2023-2024学年高一上学期期中考试物理
- 自体骨髓干细胞治疗急性心肌梗死的临床研究的开题报告
- 家长会课件:小学二年级学生家长会课件
- 运动技能学习与控制课件第十一章运动技能的练习
- 《第2课:20世纪的艺术大师-马蒂斯》教学设计(湖北省县级优课)-五年级美术教案
- 技术核定单(示范文本)
- 3.8做改革创新生力军
- 挂篮检查验收记录表
- 解一元一次方程去分母 全市一等奖
- InfoQ:2023中国企业数字化人才发展白皮书
- 阀门检验试验方案
评论
0/150
提交评论