语音识别(ASR)基础介绍第四篇——当今流行做法与CTC

简介: 本篇开始,就进入到了asr当前的流行做法。 这里单独提到了CTC算法。  这个算法对当前asr使用deep learning的方法有重大影响。 总体感觉,写到本篇,工作量反而变得很小。因为进入deep learning时代后,神经网络模型基本都是那么几种,已经不再需要挨个详细介绍。而且看图就能理解的很明白。 所以本篇后半部分基本就是贴图了。。:D 一、CTC 在CTC之前,训练语料

本篇开始,就进入到了asr当前的流行做法。 这里单独提到了CTC算法。  这个算法对当前asr使用deep learning的方法有重大影响。

总体感觉,写到本篇,工作量反而变得很小。因为进入deep learning时代后,神经网络模型基本都是那么几种,已经不再需要挨个详细介绍。而且看图就能理解的很明白。 所以本篇后半部分基本就是贴图了。。:D

一、CTC

在CTC之前,训练语料要配合上一篇中提到的方法,需要人工把音频中每个时间段对应的是哪个音素的信息标注清楚。  这个工作量和对人及金钱的需求是巨大的。基本都是百万级别手笔。 有个CTC之后, 给定一个音频,就只要告诉这个音频说的是什么文本就好了。 省掉了对齐的那一步。 由此,其重要性可自行判断。

 

关于CTC,感觉与其这里坑坑洼洼的介绍,不如直接参考这篇知乎的文章——https://zhuanlan.zhihu.com/p/36488476, 一看就懂。

这里就大概说明下CTC的大致原理,详情还是需要直接看下知乎的那篇文章。

CTC 大致原理

半定义性质的讲:CTC 要解决的问题是,算法输入序列的长度远大于输出序列长度的问题。语音识别问题的输入长度是远大于输出长度的,这是因为语音信号的非平稳性决定的,就比如说 “nihao”, 如果按时间片切分,就变成了"nnnnn iiiiii hhh aaa oo" ,但不论怎么表达,这句话最后的标签都是 “nihao”

CTC 为解决这个问题,做了两个操作:

其一是引入了blank 标签。 还记得wav音频的格式吗? 这里面声音有高峰也有趋近于0的时候。 CTC中认为, 高峰(spike)段的声音对应着音素的label,而归0的部分对应的label则是blank。  这个看起来好像没什么。

CTC引入的第二个操作是:

asr 的过程还是一帧MFCC39维向量进去,然后出一个label。  假设,“你好” 这个音频共有200个MFCC 特征帧。  这200个特征帧对应着200个输出结果,就结果空间而言,共有 音素数目^200 种可能。 而我们关心的,或者说模型训练时已知的, 就是这 所有这   音素数目^200 种可能中,可以达成 “n i h a o” 这5种结果的数目。 

这里就定义了一种非常简单粗暴的映射方法——邻近去重, 比如 ,如果输出的200个结果是 {nnnniiiiii...hhhhhaaaaaooo}  那么就邻近去重 变成->{n i h a o },然后这个结果组合就是有效结果中的一种了。 而{wwwwooooocccccaaaooo} 会映射成{w o c a o} ,自然就无效的结果。

CTC认为,计算目标函数的时候,上例中的200个MFCC特征,得到的200个模型的结果, 每个小结果都对应着所有音素上的一个概率分布。 然后计算 所有能映射成 {n i h a o} 的结果的音素路径的概率值,让这个值越大越好就行了。

但是这样一来,计算量就非常的大,指数级的计算量。  CTC就使用了类似HMM推到的方法。发现求偏导进行反向传导的时候,每一帧MFCC对应的结果的导数,都可以利用前一时刻的两个状态的结果直接求到。 即 类似这样:41b811c42ae88584fc6c286afd502ad1.png

这样一来,整体计算量就急剧萎缩成了 7*T*音素个数。 

 

使用CTC的一个展示:

d6e2c04661b34b2a03513858c0e80abe.png

 

二、流行的模型

2012年,微软邓力和俞栋将前馈神经网络FFDNN(Feed Forward Deep Neural Network)引入到声学模型建模中,将FFDNN的输出层概率用于替换之前GMM-HMM中使用GMM计算的输出概率。 从这里开始, DNN-HMM混合系统的风潮起来了。

目前流行的方式大概以下几类(主要还是集中在语音模型领域,而且是直接端到端的):

d0898cee77b33e85e87e99fcde06bef2.png

 

1-2年前最流行的架构

从下图模型可以看到,此时HMM仍然是主要的模型,只是把之前GMM的部分换成了DNN了。

70b2c38f3f97f9bfa594979eb4e0e4c6.png

然后,自然不能少了RNN系列的解决方案:

RNN解决方案

可以看到,最上层仍然是HMM,大致原理,基本可以直接从图中看出来。

396b3dfe1c4dd663b21bfb997b5234bc.png

 

主流模型

紧接着,HMM模型也给去掉了,进入了主流语音模型时代。

以下是几款流行的主要模型(以讯飞的模型居多),这个时候,已经可以直接从图上看出原理了。

cf8dd64bdbe4d7ed2fbd51437ee3ff80.png

 

b1e5f5338ed89a7374ec908550620046.png

 

1d44662ce3b7eec4fb212bd3f3e5447c.png5fccc8f4a95e9f4c7bc7593f6f53d22d.png

 

0a831aa0a47f7b1714fb0bd8800bdeaa.png

 

fcc62f088d894ffff69f8e9cf118564d.png

此前,百度语音每年的模型算法都在不断更新,从 DNN ,到区分度模型,到 CTC 模型,再到如今的 Deep CNN 。基于 LSTM-CTC的声学模型也于 2015 年底已经在所有语音相关产品中得到了上线。比较重点的进展如下:1)2013 年,基于美尔子带的 CNN 模型;2)2014年,Sequence Discriminative Training(区分度模型);3)2015 年初,基于 LSTM-HMM的语音识别 ;4)2015 年底,基于 LSTM-CTC的端对端语音识别;5)2016 年,Deep CNN 模型,目前百度正在基于Deep CNN 开发deep speech3,据说训练采用大数据,调参时有上万小时,做产品时甚至有 10 万小时。

 

4524ee83b13c0761f08fcf79c072e17e.png

 

三 、其它相关技术

 

f89127b36e048ceaa1f7f28164595654.png

 

由于当今流行的模型大部分都是基于deep neural network的, 网络的形态基本在 CNN RNN 以及全连接上更换。 这些大都很通用。 所以这里没有再细讲原理,而是直接贴图展示。 具体哪种方案更好,恐怕要真实的投入并尝试才能得知了。 目前训练所需要的机器代价也是比较高的。开源的语音数据网上倒是不难搜到。如果是真感兴趣的同学,可以考虑租用云服务器的形式来自己做下测试。 

相关实践学习
一键创建和部署高分电影推荐语音技能
本场景使用天猫精灵技能应用平台提供的技能模板,在2-5分钟内,创建一个好玩的高分电影推荐技能,使用模板后无须代码开发,系统自动配置意图、实体等,新手0基础也可体验创建技能的乐趣。
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
目录
相关文章
|
5天前
|
人工智能 自然语言处理 算法
谷歌推出”自我发现“框架,极大增强GPT-4等大模型推理能力
【4月更文挑战第20天】谷歌DeepMind团队推出了SELF-DISCOVER框架,让大型语言模型能自我发现并构建推理结构,提升在复杂任务中的性能。该框架模仿人类解决问题方式,分两阶段选择和适应原子推理模块,以解决挑战。在多任务测试中,SELF-DISCOVER相比传统方法表现出色,性能提升42%,计算量减少10至40倍。它具有跨模型应用的普适性,并与人类思维方式相通。然而,它在某些任务类型上仍有优化空间,且需解决计算成本问题。论文链接:https://arxiv.org/abs/2402.03620
20 1
|
1月前
|
存储 算法 搜索推荐
LLM, RAG 背后的支持技术
本文主要说明向量相似性搜索的必要性、经典的ANN算法、当前业界的解决方案,和前沿的ANN算法。
|
2月前
|
人工智能 自然语言处理 安全
探秘SuperCLUE-Safety:为中文大模型打造的多轮对抗安全新框架
探秘SuperCLUE-Safety:为中文大模型打造的多轮对抗安全新框架【2月更文挑战第2天】
探秘SuperCLUE-Safety:为中文大模型打造的多轮对抗安全新框架
|
3月前
|
人工智能 物联网 PyTorch
SCEdit:轻量级高效可控的AI图像生成微调框架(附魔搭社区训练实践教程)
SCEdit是一个高效的生成式微调框架,由阿里巴巴通义实验室基础视觉智能团队所提出。
|
2天前
|
存储 人工智能 JSON
【AI大模型应用开发】【LangChain系列】3. 一文了解LangChain的记忆模块(理论实战+细节)
本文介绍了LangChain库中用于处理对话会话记忆的组件。Memory功能用于存储和检索先前的交互信息,以便在对话中提供上下文。目前,LangChain的Memory大多处于测试阶段,其中较为成熟的是`ChatMessageHistory`。Memory类型包括:`ConversationBufferMemory`(保存对话历史数组)、`ConversationBufferWindowMemory`(限制为最近的K条对话)和`ConversationTokenBufferMemory`(根据Token数限制上下文长度)。
12 0
|
4月前
|
人工智能 并行计算 前端开发
极智AI | 谈谈推理引擎的推理组织流程
本文主要讨论一下推理引擎的推理组织流程,包括 英伟达 tensorrt、华为 CANN 以及 TVM。
103 0
|
4月前
|
算法 API
全新Self-RAG框架亮相,自适应检索增强助力超越ChatGPT与Llama2,提升事实性与引用准确性
全新Self-RAG框架亮相,自适应检索增强助力超越ChatGPT与Llama2,提升事实性与引用准确性
全新Self-RAG框架亮相,自适应检索增强助力超越ChatGPT与Llama2,提升事实性与引用准确性
|
11月前
|
机器学习/深度学习 自然语言处理 算法
谷歌的野心:通用语音识别大模型已经支持100+语言
谷歌的野心:通用语音识别大模型已经支持100+语言
157 0
|
11月前
|
人工智能 移动开发 自然语言处理
NLP预训练范式大一统,不再纠结下游任务类型,谷歌这个新框架刷新50个SOTA
NLP预训练范式大一统,不再纠结下游任务类型,谷歌这个新框架刷新50个SOTA
253 0
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
ICLR 2022 | 减少跨语言表示差异,字节跳动AI Lab通过流形混合增强跨语言迁移
ICLR 2022 | 减少跨语言表示差异,字节跳动AI Lab通过流形混合增强跨语言迁移
103 0