响音子数学模型的假定是两个单字的前述读音与以内的单字毫无关系。那个假定与前述并不合乎。虽然响音子数学模型过分单纯,辨识结论无法达至最合适,因而须要竭尽全力强化升级换代。迳自导入多音子的数学模型。最熟识的是三音子数学模型,即语句有关的电学数学模型。以kaldi的thchs30为例。
总 过 程
三音子数学模型体能训练
透过单单字数学模型获得单单字各状况大部份有关联的特点子集。接着做语句的扩充获得三单字的各状况大部份有关联的特点子集。他们能把体能训练统计数据上大部份的单单字的统计数据翻转转成三单字的翻转。
问:为何要做状况存取?
答:倘若有218单字,若采用三音子数学模型则有218的3平方根个三音子。
假如不展开控制点,须要创建218*218*218*3个混和gmm数学模型(假定每一triphone有3个状况)。再者排序量非常大,另再者会引发统计数据浓密。因而会依照统计数据特点对三音子的状况展开存取。
train_deltas.sh
源代码导出:
须要的文件:
$alidir/final.mdl $alidir/ali.1.gz $data/feats.scp $lang/phones.txt
操作过程:
累计有关统计量
统计量:phone的特点均值、方差、phone所出现的语音帧数量。
问:为何须要累计有关统计量?
答:为自动产生问题集做准备,问题集又是为了构建决策树做准备。
自动产生问题集时决策树分裂是依据似然增益最大原则来展开的。分裂前和分裂后的似然变化(增益)为D=L(Sl) L(Sr)-L(S),似然增益越大,说明分裂后的两部分统计数据之间的差距越大,则越应该采用两个单独的GMM分别建模。
状况集S的似然L(S),依照L(S)的排序公式,须要知道状况集S产生的大部份观测的协方差,对角协方差的对角线上是特点向量集每一维的方差。
想知道每一维的方差就须要知道特点向量集的和以及特点向量集的平方和(D(X)=E(X^2)-(EX)^2)。排序L(S)除了要知道协方差,还须要知道状况集S产生的特点向量的个数,也是状况集S出现的次数。
acc-tree-stats.cc
功能:为决策树的构建累积有关的统计量。
输入:电学数学模型、特点、翻转
输出:统计量。
源代码导出:
其中,在获得统计量之前,他们须要对每一句子展开维特比强制翻转。
有了强制翻转结论,就能获得每一帧是属于哪个EventType。翻转体能训练里面保存的数字是transition-id,依照transition-id能获得三单字及其有关联的状况。依照EventType的大部份帧有关联的特点获得那个EventType的统计量(出现次数count_,特点向量的均值和均值的平方)。统计量的结论保存在treeacc文件中:
EV 4 -1 0 0 0 1 29 2 134:是两个EventType,4表示后面有4对pair。
-1 0 0 0 1 29 2 134:表示该三单字是0/29/134的第1个hmm状况。
GCL 1:表示该EventType出现的次数(有关联count_变量)。
0.01:表示方差假如有小于0.01,则等于0.01。
第一行 表示特点向量的均值。第二行 表示特点向量的均值的平方。
操作过程:
源代码导出:
1)统计数据结构
std::map tree_stats
EventType:
在kaldi中用EventType描述三单字及HMM的状况。假定三单字是a-b c,编号为2,3,4。
EventType e = { (-1, 1), (0, 2), (1, 3), (2,4) }
表示三单字的三对数和表示HMM状况的一对数放在一起,这四对数就能描述三单字及HMM状况。在kaldi中用EventType表示这一统计数据结构:
typedef std::vector
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!