HMM-GMM解码图谱构建——HCLG

语音算法岗笔试考点拆解:从信号处理到声学模型,附备考路径 语音识别是人工智能领域落地最深入的方向之一,其技术栈横跨信号处理、机器学习和工程优化。理解音频从采样、分帧、特征提取到声学建模、解码输出的完整链路,是掌握该领域的基础。MFCC、滤波器组、端点检测等前端特征处理,HMM、CTC、Attention等声学模型演进,以及N-gram、WFST等解码搜索技术,共同构成语音算法工程师的核心知识体系。在实际应用中,从实时语音交互到音视频娱乐场景,都需要在算法效果与延迟约束间取得平衡。本文以一套经典校招笔试为线索,系统梳理语音算法岗位的考察维度与备考路径,为求职者提供从 阅读详情

用WFST来表征ASR中的模型(HCLG),可以更方便的对这些模型进行融合和优化,于是可以作为一个简单而灵活的ASR的解码器(simple and flexible ASR decoder design)。 
利用WFTS,我们可以吧ctc label,lexicon(字典),language models(语言模型)等模型结合起来,生成一个简单的search graph用于解码。 
WFTS主要由Composition、Determinization和Minimization这三大算法来实现。

一 Composition
Composition可以用于合并不同级别的representation,例如可以将一个pronunciation lixicon(发音字典模型,可能是由音素到声母和韵母的模型)和一个word-level grammar(例如把声母和韵母翻译成字)字级别的模型结合起来生成一个phone-to-word (直接由音素到字)的模型。效果图如下: 
 
上图是将a模型和b模型结合成c模型的示意图,例如(a)模型中的第一步有俩种方式,第一种0->1,a到b的权重为0.1(表示成a:b/0.1),第二种0->2,b:a/0.2,而(b)模型中的第一步只有一种情况,即0->1,b:c/0.3,我们可以看出,能吧(a),(b)俩个模型结合起来的只有一条路径,a->b->c,即(a)模型走的那条路径为0->1,a:b/0.1,(b)模型走的那条路径为0->1,b:c/0.3,结合起来即重(0,0)->(1,1),a:c/0.4,如图c所示,(权重为什么要相加呢?这里可能是因为我们要找出一条最优路径来解码,显然结合俩个模型的代价肯定与俩个模型分别的代价的总量有关,意会就行哈哈哈~),接下来怎么走呢?到达(1,1)后代表a模型中到达1位置了,此时又有俩条路径可以走,分别为①1->1,c:a/0.3,②1->3,a:a/0.4,b此时也是在位置1,又只有一条路可以走,即1->2,a:b/0.4,我们可以发现这俩条路的标签都可以结合起来,c:a可以与a:b结合起来,a:a也可以与a:b结合起来,分别到的俩个新目的地为(1,1)->(1,2) c:b/0.3+0.4=0.7和(1,1)->(3,2) a:b/0.4+0.4(感觉可以理解成这个”音素模型”(a)我把”120125410….”这一串东西成”nihao”,然后又有一个模型(b)将”nihao”翻译成”你好”,这俩个要能连起来才可以翻译,感觉示意图在语音识别的过程中大概就是这个意思吧?)同样的,把其余位置填完就可以把a和b结合起来组成模型c。

二 Determinization
1. WFST
determinization的功能其实就是当离开某个状态的转移上的输入标签相同时,采取某种机制只保留其中的一条而不影响整个系统的结果,这样离开某个状态的转移就是确定的了,因为每输入一个标签,它都会到达唯一一个确定的状态。 
找最优路径即要找权重值和最小的那一条路径,这也是为什么保留权重值小的那个标签的原因。 
效果演示图如下: 
 
这里0->1,0->2时的转移标签都为a,我只保留那条权重值比较小的标签,即a/1,这样到达1的a标签的权重值只剩下0了,记成(1,0)保存在下个状态中,到达2的权重值还剩下a/2 - a/1 一个权重值,记作(2,1),这个剩下来的权重在后面的路径上还会加上去的,例如d/6 在图b中就变成d/7了,是把之前的那个权重加进去了,这样俩个模型中得到每个标签的代价还是一样的,不会变。

2. WFSA
WFST与前面WFSA不同的是,WFST的每个状态转移上都含有输出标签。同样的,determinzation演示图如下: 
 
第一幅图中,a:X/0.5,a表示输入标签,X表示输出标签,第一步输入标签为a的还是有俩个a:X/0.5,a:Y/1.2,我们还是想要把他合并成一个来简化搜索路径,但是输出分别为X和Y,不一致,这里由e表示X和Y的的共同的元素,那么他们的共同输出就记作a:e/0.5,接下来到达点1的输出标签为X的权重还剩下0了,记作(1,X,0),到达点2的输出标签为Y的还剩下1.2-0.5=0.7,记作(2,Y,0.7),同样的,下一步过程中合并输入标签相同的b,即得到右图。 
接着再把所有状态都renumber一下并添加一个真正的结束状态得到下图: 


三 Minimization
3.1 权重推移(weight pushing)
在很多序列识别的问题中我们都是通过找到最小的cost来解决问题的,那么在WFST中我们同样就是通过找到最大或者最小的权重路径来解决问题的。 
而pushing后权重都集中在前面可以降低整体的搜索时间因为我们会一步步的把我们不需要的路径排除掉,这样一开始就可以排除掉了很多种可能路径。 
把权重推到前面,而每条路径的总权重不发生改变,效果图如下图所示: 
 
可以发现,这俩种不同的push方式在每条路径上的权重和都不变。

3.2 为了能让WFST中的状态数最小,进行Minimization效果图如下:
 
如上图,左边之前由俩个e:Z/0,我们想让状态数最小,而对应于不同的转移线,怎么把他们合并呢?即可以从后面往前面合并,把3,4俩个状态消除一个。合并后即得到右图。

四 总结
这样经过Composition合并不同的模型,从前往后Determinization合并状态数,再从后往前Minimization合并状态数来优化整个搜索图,来用于语音识别。

参考
1 http://blog.youkuaiyun.com/l_b_yuan/article/details/50958047 
2 http://101.96.10.65/www.cs.nyu.edu/~mohri/pub/hbka.pdf
 

kaldi中解码图的构建一 解码图谱建立概要解码图谱也就是我们构建的的:HCLG=H*C*L*G,这里        G是对语法或者语言模型编码的受体,它的输入和输出是一样的;        L是发音字典,它的输出是单词,输入是音素;        C代表语境相关性,它的输出是音素,输入符号代表上下文相关音素;        H包含了Hmm定义,它的输出符号代表上下文相关音素,输入符号是包含概率分布函数id和其他信息的状态转... 阅读详情

相关推荐

语音识别——解码器(WFST、Lattice)

基于Viterbi的原始动态解码器使用广度优先搜索在原始的搜索网络中同时生成多条假设,并且依靠剪枝算法不会使网络变得太大。

weixin_43284996的博客 4046

1.简谈语音识别中的WFTS

用WFST来表征ASR中的模型(HCLG),可以更方便的对这些模型进行融合和优化,于是可以作为一个简单而灵活的ASR的解码器(simple and flexible ASR decoder design)。 利用WFTS,我们可以吧ctc label,lexicon(字典),language models(语言模型)等模型结合起来,生成一个简单的search graph用于解码。 WFTS主要由

hxshine的博客 5151

WFST

WFST简单笔记(一)WFST(weighted finaite-state transducer)用于大规模的语音识别,包括HMM模型,词典,n-gram语言模型。WFST状态转换用输入和输出符号标记。 因此,transducer将路径编码从输入符号序列或字符串到输出字符串的映射。WFST除了输入和输出符号之外还对转换进行加权。 权重可以编码概率,持续时间,惩罚或沿路径积累的任何其他数量,以计算将

sky1170447398的博客 8443

WFST(加权有限状态转换机)

语音识别中graph和lattice模块用到WFST。 1.WFST基本概念 FST和WFST的区别是后者转移路径上附有权重。 WFST和WFSA(加权有限状态接收器)的区别是前者的状态转移上的label既有输入又有输出,而后者只有label。 用WFST来表征ASR中的模型(HCLG),可以更方便的对这些模型进行融合优化,作为ASR解码器。 定义半环结构: 2.WFST三大算法:Composit...

qq_14962179的博客 4353

概率图模型(HMM)

开篇 拖了很久,现在补上概率图的几个模型,陆续补上这部分的内容。概率算是机器学习里面比较抽象和难以理解的模型,它很多时候被应用在自然语言上的一些基本,想是词性标注,命名实体。...

Ding_xiaofei的博客 2897

走进语音识别中的WFST(一)

本人最近在研究语音识别的生成Graph和Lattice的模块,其中用到了WFST这个概念,惊叹于它的神奇也被它的复杂搞得晕头转向。于是决定静下心来仔细研读了Mohri大牛的Speech Recognition with Weighted Finite-state Transducer这篇论文和一些相关资料,算是入门了其中的算法,有些体悟在这里和大家一起探讨,也算是对自己近期学习的一个总结。本系列会先

l_b_yuan的博客 3万+

WFST--学习笔记

WFST--学习笔记

oneself的博客 1726

2021.11.22【读书笔记】丨生物信息学与功能基因组学(第五章第四节 隐马尔可夫模型)

5.4 谱搜索:隐马尔可夫模型(HMMs) 谱隐马尔可夫模型在生成用于识别远缘序列相似度的位置特异性打分系统时,比PSSMs更通用,如语音检测,声纳等一系列信号检测问题; 在生信领域,HMMs已经被用于各式各样的应用:序列比对、蛋白质结构预测、蛋白质跨膜区域预测、染色体拷贝数变化分析和基因发现算法等; 优势: 谱HMMs是一个概率模型,它评估在比对中的一个给定位点上发生匹配、错配、插入和确实(空位)的可能性。通过开发一个基于已知序列的统计学模型,我们可以使用谱HMM来描述一个特定序列与模型相匹配的

2027

WFST(Weighted Finite State Transducer)

WFST (Weighted Finite State Transducer),即加权有限状态转换器。这是一种在自然语言处理(NLP)、语音识别、文本到语音合成(TTS)等领域中广泛使用的数学模型。WFST 是有限状态机(Finite State Machine, FSM)的一种扩展形式,它不仅能够表示状态之间的转换关系,还能为这些转换赋予权重,从而支持概率、成本或其他度量信息的传递。

xy2006860的专栏 746

即插即用!5分钟为你的SNN模型添加频谱注意力(DCT-SA模块实战)

本文介绍了如何为脉冲神经网络(SNN)快速集成即插即用的DCT-SA频谱注意力模块。该模块利用离散余弦变换(DCT)在频率域自适应加权特征,能有效提升模型对纹理、边缘的感知能力,并在CIFAR10-DVS等数据集上实现分类精度提升与脉冲发放率下降。文章以SpikingJelly框架和ResNet19为例,提供了详细的代码实现、集成步骤及参数调优实战指南。

kotlin6android的博客 608

自动配胶机的PLC控制系统设计

我们根据自动配胶机的控制需求,编写了相应的PLC程序。PID温度控制算法的实现方面,我们采用了经典的PID控制算法,通过不断调整加热器的功率,实现对胶水混合温度的精确控制。在PLC程序中,我们编写了PID控制算法的程序模块,通过实时采集温度传感器的数据,计算温度偏差和偏差变化率,并根据PID控制算法计算出加热器的功率输出值,实现对温度的精确控制。在系统调试阶段,我们对自动配胶机的各个部分进行了详细的测试和调试,包括气路和液路的开关测试、传感器的精度测试、步进电机的位置和速度测试以及PLC程序的逻辑测试等。

lagougongzuoshi的博客 1226

深度解读WFST:音频与语音识别领域的关键技术

WFST(加权有限状态转换器)是一种扩展了有限状态机(Finite-State Machine, FSM)的模型,能够处理带权重的符号转换问题。简单来说,WFST是一种在两个符号集之间进行映射的工具,并为每个转换赋予一个权重或代价。它是一个有向图,图中的每条边表示符号的转换,同时伴随一个权重。有限状态机有两个主要元素:状态集:系统处于的不同可能状态。转换规则:定义状态间如何转换。WFST 在 FSM 的基础上增加了以下要素:输入符号和输出符号:在状态转换过程中,输入符号被映射为输出符号。

weixin_52734695的博客 1683

Rockchip平台之RK3566/3568 OS02N10

文章摘要 本文主要介绍了200W摄像头传感器OS02N10在RK3566平台上的兼容与适配过程。作者基于之前的400W摄像头兼容经验,针对200W摄像头进行了类似的适配工作。文章详细阐述了RK3566芯片的特性和OS02N10传感器的技术参数,包括分辨率、接口和功耗等。适配过程分为三个关键部分:DTS设备树文件配置(定义I2C地址、电源域和GPIO控制等)、驱动文件开发(寄存器初始化和操作)以及XML和JSON配置文件调整(图像参数设置)。作者特别强调了初始化数组中空寄存器终止条件的重要性,并分享了兼容过程

different_xzh的博客 2412

概率图模型-HMM(隐马尔可夫模型)

HMM隐马尔可夫模型是一种经典的概率图模型,是动态贝叶斯网络,即是一种有向图。概率图模型不同于传统的统计机器学习方法,传统的统计机器学习的三个基本问题是关于模型,策略,还有算法。可以看成是一个优化已经构建的损失函数的问题。而概率图模型则不同,它包括了learning还有inference这两个过程,是一个积分问题。HMM广泛运用于自然语言处理中的机器翻译等等。。。它的缺陷也是十分明显的,模型较为简单,因为假设过多,包括了齐次马尔科夫假设和观测独立性假设。 研究HMM一般是从三个问题出发,evaluat..

qq_33588413的博客 1497

避免踩坑!WIN11 22H2更新后共享打印机失效的终极解决方案

本文详细解析了WIN11 22H2更新后共享打印机失效的问题,特别是常见的0x00000709错误代码。通过系统更新机制分析、错误代码解读,提供从基础到高级的完整解决方案,包括注册表修复、组策略调整和驱动兼容性处理,帮助用户彻底解决打印机共享问题并预防未来故障。

pp12345的博客 533

挑战第七天:Llamaindex RAG 实践

安装python 依赖包,并安装 Llamaindex和相关包以及Sentence Transformer 模型。进入开发机后,创建新的conda环境,命名为。镜像,然后在资源配置中,使用。的选项,然后立即创建开发机器。后,点击 选择镜像 使用。然后安装相关基础依赖。

weixin_53579823的博客 728

OpenFST、WFST 小记

OpenFST、WFST 小记

AI工程化、开源分享、文档翻译、代码笔记 1564

(4-2)A*

实际已经花费的代价(g(n)):从起点到当前节点n的实际路径代价。启发式估计的剩余代价(h(n)):从当前节点n到目标节点的估计路径代价。这是A算法的关键之一,启发式函数要足够接近实际代价,但又要高效计算。如果启发式函数等于0,A算法就相当于Dijkstra算法。实现A*算法的核心步骤如下所示。(1)初始化:将起点加入开放列表(open list),并将其f值设为g值和h值的和。(2)循环:从开放列表中选择具有最小f值的节点作为当前节点。如果当前节点是目标节点,算法结束;

码农三叔 1806

小白的WFST之路

理论知识 工程实现 我们以AISHELL-1数据集为例来介绍, 1.准备词典(lexicon) 这一步主要是对AISHELL-1中自带的lexicon.txt进行处理,主要两个步骤: 1.去掉lexicon.txt中包含OOV建模单元的词; 2.将过滤后的词拆成建模单元。 这一步产生的lexicon.txt内容如下: 2.准备N-gram语言模型 这一步需要借助工具包,最常用的是SRILM,我们以SRILM为例来介绍, 3.构建解码的TLG 4.文件转换与绘图 1.文件转换: 将T.fst和L.fst转换

qq_39354864的博客 2929

torch.nn.rnn实现循环神经网络

------------------------------------nn.rnn模型实现。#------------------------------------模型实现。#-----------------------------------训练模型。#-----------------------------------训练模型。#--------------------------------读取数据。实现循环神经网络,并在至少一个数据集上进行实验,从训练时间、预测精度、...

matlab_python22的博客 2971

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

语音识别中的WFST和语言模型

导读 在语音识别系统中,有限加权状态转换机(Weighted Finite State Transducers, WFST)扮演着重要角色。本文主要介绍发音词典、语言模型和WFST的原理,以及在实践过程中的一些优化方法。 背景 目前的实际场景中的语音识别系统更多是基于HMM的传统语音识别框架,如:DNN-HMM,这种框架是由声学模型、发音词典、语言模型和解码器构成的pipeline结构,其中声学模型建模粒度为比音素还小的三音素状态,而语言模型和WFST在其中扮演着重要的角色。 本文将主要围绕三个问题

暮木的博客 3324

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

语音识别WFST核心算法讲解(1. WFST的基本概念)

本系列主要介绍语音识别WFST中的常用算法, Composition, Determinization, Minimization, Epsilon Removal, Weight Pushing 等。了解这些算法的前提是熟悉WFST基本概念,了解Semiring(半环代数理论), 对图中各类算法(深度优先搜索DFS,最大强连通域SCC)等。因此我们首先介绍WFST的基本概念。 伪代码和部分图片...

fengzhou_的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

理解HCLG

理解HCLGHCLG整体图理解状态关系理解GMM输出transition-id理解DNN代替GMM给HMM训练过程Reference HCLG 整体图 transition-idtriphonemonophone词GMM输出HMM声学模型Context-Dependency上下文相关Lexion发音词典语言模型 理解状态关系 帧的音频特征:HMM观察值 hmm-state :HMM的状态,如音素a...

zhulinniao 5581

Kaldi语音识别技术(八) ----- 整合HCLG

WFST的融合一般是从大到小,即先将G与L进行融合,再一次融合C、H,每次融合都要进行确定化(determinisation)和最小化(minimisation),最小化是指将WFST转换为一个状态节点和边更少的等价WFST,提高搜索的效率。至此,HCLG.fst已经生成,整个kaldi语音识别系统的核心内容已经构建完成!

yxn4065的博客 5013

AI大语音(十一)——WFST解码器(上)(深度解析)

点击上方“AI大道理”,选择“置顶”公众号 为了让识别出来的语音符合常规语言表达,引入了语言模型作为约束。 为了加速解码识别效率又引入了WFST解码机制。 解码本质:解码就是在网络中寻找最优路径。 解码方式多种多样,各有优缺点。 (注:on-the-fly Rescoring 归为动态解码有待商榷) 1 基于Viterbi的原始动态解码 无HCLG、一次解码 基于Viterbi的动态解码是最基础的解码。 线性词典:动态解码网络仅仅把词典编译为状态网络,构成搜索空间。编译的...

aibigtruth的博客 2587
上一篇: HMM/GMM识别之三音素训练——决策树
下一篇: kaldi运行timit
audiocool
博客等级 码龄9年 335粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值