Kaldi的三音子模型训练(源码解析)( 二 )
文章图片
文章图片
EV4-10001292134:就是一个EventType , 4表示后面有4对pair 。
-10001292134:表示该三音素是0/29/134的第1个hmm状态 。
GCL1:表示该EventType出现的次数(对应count_变量) 。
0.01:表示方差如果有小于0.01 , 则等于0.01 。
第一行表示特征向量的均值 。第二行表示特征向量的均值的平方 。
过程:
文章图片
文章图片
源码解析:
1)数据结构
std::maptree_stats
文章图片
文章图片
EventType:
在kaldi中用EventType描述三音素及HMM的状态 。假设三音素是a-b+c , 编号为2,3,4 。
EventTypee={(-1,1),(0,2),(1,3),(2,4)}
表示三音素的三对数和表示HMM状态的一对数放在一起 , 这四对数就可以描述三音素及HMM状态 。在kaldi中用EventType表示这一数据结构:
typedefstd::vector>EventType;
所以 , 一个EventType就是一个带着三音素信息的状态state 。
文章图片
文章图片
那么如何确定以b为中间音素的三音子的第二个状态下面挂着的pdf-id呢?pdf-2怎么得到?
文章图片
文章图片
EventMap是保存决策树的一种方法 , 它是一个多态纯虚类 , 不能够被实例化 。
GuassClusterable
GuassClusterable继承自Clusteralbe , Clusteralbe对象的主要作用是把统计量累加在一起 , 和计算目标函数 。alignment之后 , 从左到右扫描对齐数据能从中得到三音素及HMM状态和其对应的特征向量 , 也就是得到一个EventType和其对应的特征向量 。在扫描过所有训练数据后 , 出现的每个EventType会对应多个特征向量 。
2)主要函数
对所有的特征数据、对齐数据执行这个函数后 , 我们从训练数据中得到了所有的EventType和该EventType对应的统计量 。这些统计量可以被用于自动产生问题集、构建决策树 。
文章图片
文章图片
函数声明:
文章图片
文章图片
函数过程:
文章图片
文章图片
SplitToPhones()
文章图片
文章图片
3)BuildTreeStatsType
构建决策树所用到的统计量可以表示成:
typedefstd::vector>
BuildTreeStatsType;
sum-tree-stats.cc
功能:语音上下文树构建的总和统计 。
总结
【Kaldi的三音子模型训练(源码解析)】为了弥补单因素模型的不足 , 需要上下文相关的三音子模型 。为了构建三音子模型 , 需要进行状态绑定 。为了进行状态绑定 , 需要构建决策树 。为了构建决策树 , 需要准备问题集 。为了自动生成问题集 , 需要累计相关统计量 。为了累计相关统计量 , 需要对齐序列、单音素模型、每句话的特征 。至此累计好了相关统计量 , 接下来就可以自动生成问题集了 。
- 智库论坛 | 社区电商推动供应链数字化转型的对策建议
- 人类与AI如何共处?诺奖科学家、将棋天才、“低欲望社会”提出者的不同解答
- 线上新书发布!云上带你了解有关“冬奥”的那些事儿
- 我的世界大闹天宫龙宫怎么玩(我的世界大闹天宫龙宫打法技巧一览)
- 复苏的魔女竞技场用什么队伍(复苏的魔女竞技场队伍搭配心得分享)
- 复苏的魔女魔导装备boss怎么打(复苏的魔女魔导妨害装备获取攻略大全)
- 今年的iphonese,还是你熟悉的模样
- 长安福特蒙迪欧在中国市场的“全球化”
- safari浏览器中的indexeddb漏洞
- 复苏的魔女时空裂隙用什么阵容好(复苏的魔女时空裂隙阵容搭配指南)
