kaldi 源码分析(七) - HCLG 分析

简介: Kaldi 语音识别主流程:语音识别过程解码网络使用 HCLG.fst 的方式, 它由 4 个 fst 经过一系列算法组合而成。分别是 H.fst、C.fst、L.fst 和 G.fst 4 个 fst 文件:1. G:语言模型,输入输出类型相同,实际是一个WFSA(acceptor接受机),为了方便与其它三个WFST进行操作,将其视为一个输入输出相同的WFST。

Kaldi 语音识别主流程:


img_7857f1415d8334b182af0afa900f1727.png
语音识别过程

解码网络使用 HCLG.fst 的方式, 它由 4 个 fst 经过一系列算法组合而成。分别是 H.fst、C.fst、L.fst 和 G.fst 4 个 fst 文件:

1. G:语言模型,输入输出类型相同,实际是一个WFSA(acceptor接受机),为了方便与其它三个WFST进行操作,将其视为一个输入输出相同的WFST。

2. L:发音词典,输入:monophone,输出:词;

3. C:上下文相关,输入:triphone(上下文相关),输出:monophnoe;

4. H:HMM声学模型,输入:HMM transitions-ids (对 pdf-id 和 其它信息编码后的 id),输出:triphone。

通过如下组合方式来计算最终输出结果:

HCLG = asl(min(rds(det(H' o min(det(C o min(det(Lo G))))))))

上面的o表示组合,det表示确定化,min表示最小化,rds表示去除消岐符号,asl表示增加自环。

其训练顺序为 G -> L -> C -> H (因 G 语法模型基于统计生成,L 则是在 G 生成过程中使用的基础,而 C 则是基于 L 生成的 phone 上下文关系依据决策树生成的结果)

解码过程中使用 Lattice 来保存识别的候选序列,通过遍历得到得分最靠前的多条候选路径,即 N-best,即为输出文本。Lattice 本质是一个有向无环图( directed acyclic graph )。 图上的每个节点代表一个词的结束时间点,每条边代表一个可能的词,以及该词发生的声学得分和语言模型得分。

参考

语音识别中的lattice与confusion network
kaldi lattice

目录
相关文章
|
8月前
|
机器学习/深度学习 存储 C语言
NumPy源码解析:实现原理探究
【4月更文挑战第17天】本文深入解析NumPy源码,探讨其高效性能背后的实现原理。核心是多维数组`ndarray`,基于同质数据、连续内存分配和形状步幅概念。NumPy利用C语言实现数组管理,通过广播机制允许不同形状数组运算,并借助底层线性代数库实现向量化操作。理解这些机制有助于优化科学计算并应用于其他项目。
|
网络架构 内存技术
OpenPose原理解析
Openpose论文原理总结
459 0
|
并行计算 编译器 Linux
TVM 从入门到精通 | 安装 TVM (Part 1)
TVM 从入门到精通 | 安装 TVM (Part 1)
500 0
|
机器学习/深度学习 数据采集 算法
机器学习中令你事半功倍的pipeline处理机制​
机器学习中令你事半功倍的pipeline处理机制​
机器学习中令你事半功倍的pipeline处理机制​
|
存储 数据可视化 计算机视觉
目标检测的Tricks | 【Trick10】工具类文件调用(coco评价指标包、日志工具、Tensorboard工具...)
目标检测的Tricks | 【Trick10】工具类文件调用(coco评价指标包、日志工具、Tensorboard工具...)
746 0
目标检测的Tricks | 【Trick10】工具类文件调用(coco评价指标包、日志工具、Tensorboard工具...)
|
数据采集 PyTorch 数据处理
【菜菜的CV进阶之路-Pytorch基础-数据处理】自定义数据集加载及预处理
【菜菜的CV进阶之路-Pytorch基础-数据处理】自定义数据集加载及预处理
226 0
|
并行计算 PyTorch 测试技术
手把手教你如何高效地在 MMCV 中贡献算子
不知道大家在使用 MMCV 的过程中有没有遇到这种情况:MMCV 没有提供自己需要的 CPU/CUDA 算子,于是希望提一个 PR(Pull Request),将这个算子加入 MMCV,但是又不知从何处下手。本文以最简单的 TensorAdd 算子为例,向大家展示为 MMCV 贡献算子的全过程,希望能够帮助大家更好地理解 MMCV 算子的
670 0
手把手教你如何高效地在 MMCV 中贡献算子
|
机器学习/深度学习
GAN简介及原理分析
GAN简介及原理分析
265 0
GAN简介及原理分析
|
机器学习/深度学习 Shell DataX
kaldi 源码分析(八) - DNN训练过程
在 kaldi 训练过程中,DNN 的训练是依赖于 GMM-HMM 模型的,通过 GMM-HMM 模型得到 DNN 声学模型的输出结果(在 get_egs.sh 脚本中可以看到这一过程)。
7974 0
|
开发工具 git C语言
kaldi 源码阅读(一) - 环境搭建
按照我一贯的做法,来阅读开源代码: 1. 编译以及基础功能的测试 2. 模块功能划分 3. 单一模块解析(添加注释或日志) 4. 扩展新demo工程 5. 自定义模块及调用 文章也会按照上述流程进行开展。
2521 0