2022年新一代kaldi团队技术输出盘点

news2025/5/26 8:21:20

目录

1. 技术创新

1.1 Pruned RNN-T loss

1.2 RNN-T 的快速 GPU 解码

1.3 多码本量化索引的知识蒸馏

1.4 RNN-T 和 CTC 的低延时训练

1.5 Zipformer

1.6 Small tricks

2. 模型部署

2.1 Sherpa

2.1 Sherpa-ncnn

3. 更多的 recipe 和模型

参考资料


1. 技术创新

1.1 Pruned RNN-T loss

该项工作是新一代 Kaldi 针对 RNN-T 损失函数的创新性改进。原始的 RNN-T 损失函数在处理长文本或者长语音的时候显存占用较大,训练时间较长。对此,我们提出对 RNN-T 的 log-probability lattice 进行裁剪,能够在不损失训练精度的前提下大幅缩短 RNN-T 损失函数的计算时间。该工作[1]已经被Interspeech2022 收录,我们也撰写了多篇文章详细介绍其中的细节:

  • 初探 Pruned RNN-T:多快好省的 RNN-T 训练

  • 细聊 Pruned RNN-T: Pruned RNN-T 何以又快又好

1.2 RNN-T 的快速 GPU 解码

在该项工作中我们在 GPU 上实现了高效的 FSA 解码,为此我们对 RNN-T 做了一些改造,首先我们在 RNN-T 中使用了无状态的 decoder 网络,使用有限的 left context;另外,我们在解码时限制每一帧语音只能输出一个 symbol。在这两个前提下,我们基于 k2 中的 RaggedTensor 实现了帧同步的 beam search 解码。这可能是现今唯一既能使用  FSA 又能运行于 GPU 的解码方法,我们测试发现使用 80M 的模型在英伟达 V100 显卡上能并行跑 200 路以上的语音,LibriSpeech 数据集上的解码实时率低至 0.0025。该工作[2]已经提交至 ICASSP2023,icefall中的fast_beam_search实现了该种解码办法,欢迎大家尝试!

1.3 多码本量化索引的知识蒸馏

知识蒸馏是常见的提升模型表现的办法。针对传统知识蒸馏框架中的训练效率和教师标签存储成本的问题,新一代 Kaldi 团队创新性地提出了基于多码本量化索引的知识蒸馏。该办法能够在几乎不影响知识蒸馏的效果的前提下,实现对教师标签上百倍的压缩,有效的解决了传统知识蒸馏办法在大数据集下面临的困境。该工作[3]目前也已经提交至 ICASSP2023,我们也撰写了一篇详细的文章介绍标签压缩的算法:新一代 Kaldi 中基于量化的蒸馏实验(写得特别好,小编强烈推荐!)

1.4 RNN-T 和 CTC 的低延时训练

时延是流式ASR模型的一项重要指标。新一代 Kaldi 团队针对流式 RNN-T 模型的时延惩罚做了大量研究,最终探索出一条简单有效的时延惩罚策略。根据 lattice 中不同通路的产生的时延,对 RNN-T 的 log-probability lattice 进行简单的修正,让模型更倾向于学习时延更短的通路。通过控制时延惩罚的参数,我们可以精准的控制时延和模型准确率之间的 trade-off。该工作已经提交 ICASSP2023,论文的链接在这里[4],欢迎大家阅读!

在 CTC 模型中,我们也借鉴了该思路实现了一套时延惩罚策略。有兴趣的读者请移步Delay Penalty For RNN-T and CTC,我们对 RNN-T 和 CTC 中的时延惩罚策略都做了详细的介绍。

1.5 Zipformer

Zipformer 模型是新一代 Kaldi 团队提出的新型声学建模架构。针对传统Conformer 的诸多细节做了大幅度改动,包括

  • 优化器(ScaledAdam)

  • 时间维度 U-Net(通过降采样和升采样大幅降低计算量)

  • 注意力权重复用,减少计算量

  • 多个创新性的子模块

  • ...

目前 Zipformer 模型已经在诸多测试集上取得了出色的识别准确率,代码也已经合并在 icefall[5]的中,欢迎大家尝试。再告诉大家一个小秘密,Dan 哥现在正在对 Zipformer 的诸多子模块做进一步优化,预计在不远的将来会有新一版的 Zipformer 和大家见面,敬请期待!

1.6 Small tricks

除了上述的几项,我们还做了如下的一些工作:

  • 模型平均算法,简单有效的 ensemble 技巧。通过维护一个averaged_model变量,高效的实现更细粒度的模型平均;

  • 升点小技巧之—在icefall中巧用语言模型,让你的模型越来越好;

  • 训练小助手之新一代 Kaldi 中的 RandomCombiner,有效训练更深的模型;

  • 训练小助手之新一代 Kaldi 中的 LSTM GradientFilter,实时追踪并且剔除可能导致梯度爆炸的坏样本,让你的LSTM模型更加稳定;

  • 提速小助手之跳帧 Blank-skipping[7]。在解码 RNN-T 模型时,利用 CTC 的概率输出跳过输出 Blank 的帧,大幅提升解码的效率(详见原论文[8])。该方案我们在 icefall 中也有实现,欢迎大家尝试。

  • ...

读读读(小编有话说:简单有效,说不定哪天就能用在自己的模型上了呢!)

2. 模型部署

2.1 Sherpa

sherpa[9]是新一代 Kaldi 团队推出的服务端 ASR 模型部署方案。包含了特征提取,神经网络计算和解码三个部分,并且提供了 Python 接口方便使用。部署完成后,只需要一个浏览器,你就可以流畅体验icefall中提供的诸多自动语音识别模型。使用教程详见极速上手新一代 Kaldi 服务端框架 sherpa。

2.1 Sherpa-ncnn

如果你在寻找一个适合于移动端或者嵌入式端的部署方案,那不妨试试sherpa-ncnn。Sherpa-ncnn[10]是新一代Kaldi团队在去年推出的安装便捷,支持实时语音识别的 Python 包。仅需一行代码

pip install sherpa-ncnn

便可以体验新一代 Kaldi 支持的诸多语音识别模型。sherpa-ncnn现在已经支持Linux,Windows,macOS,Android 等常见平台。在嵌入式平台上,sherpa-ncnn也实现了实时语音识别。我们还实现了基于ncnn的 int8 模型量化,能够进一步压缩模型大小,提升推理速度。更多细节欢迎大家阅读这几篇文章:

  • sherpa-ncnn 简介:sherpa + ncnn 进行语音识别

  • 移动端使用案例:新一代 Kaldi - 移动端语音识别;

  • 嵌入式端使用案例:新一代 Kaldi - 嵌入式端实时语音识别;

每篇都干货满满,并且展示了诸多 demo!(小编注:军哥手把手教你,零基础教你玩转语音识别,一看就会!)

3. 更多的 recipe 和模型

过去的一年中,我们在icefall中增添了不少新的 recipe,涵盖了诸多公开数据集其中包括:

  • 中文数据集:aishell2[11], aishell4[12], wenetspeech[13];

  • 英文数据集:gigaspeech[14],tedlium3[15];

  • 中英文数据集:tal_csasr[16]

  • 藏语数据集:xbmu_amdo31[17]

我们还新增支持了多种模型结构,包括

  • Reworked Conformer[18],是新一代 Kaldi 提出的改进版 Conformer 模型;

  • LSTM[19],使用了 LSTM 模型作为 Encoder,并加入了诸多改动提升训练的稳定性;

  • Emformer[20],是 facebook 提出的低内存占用的流式模型。icefall中的实现详见这里[21];

  • Zipformer[22],小编在上文已经介绍过了,这里不做重复啦;


参考资料

[1]工作: https://arxiv.org/abs/2206.13236

[2]工作: https://arxiv.org/abs/2211.00484

[3]工作: https://arxiv.org/abs/2211.00508

[4]这里: https://arxiv.org/abs/2211.00490

[5]icefallhttps://github.com/k2-fsa/icefall/tree/master/egs/librispeech/ASR/pruned_transducer_stateless7

[6]语言模型融合: https://mp.weixin.qq.com/s/MkvKF5JJch3DT2RA87v9lQ

[7]跳帧Blank-skipping: https://github.com/k2-fsa/icefall/tree/master/egs/librispeech/ASR/pruned_transducer_stateless7_ctc_bs

[8]原论文: https://arxiv.org/abs/2210.16481

[9]sherpa: https://github.com/k2-fsa/sherpa

[10]Sherpa-ncnn: https://github.com/k2-fsa/sherpa-ncnn

[11]aishell2: https://github.com/k2-fsa/icefall/tree/master/egs/aishell2/ASR

[12]aishell4: https://github.com/k2-fsa/icefall/tree/master/egs/aishell4/ASR

[13]wenetspeech: https://github.com/k2-fsa/icefall/tree/master/egs/wenetspeech/ASR

[14]gigaspeech: https://github.com/k2-fsa/icefall/tree/master/egs/gigaspeech/ASR

[15]tedlium3: https://github.com/k2-fsa/icefall/tree/master/egs/tedlium3/ASR

[16]tal_csasr: https://github.com/k2-fsa/icefall/tree/master/egs/tal_csasr/ASR

[17]xbmu_amdo31: https://github.com/k2-fsa/icefall/tree/master/egs/xbmu_amdo31/ASR

[18]Reworked Conformer: https://github.com/k2-fsa/icefall/tree/master/egs/librispeech/ASR/pruned_transducer_stateless5

[19]LSTM: https://github.com/k2-fsa/icefall/tree/master/egs/librispeech/ASR/lstm_transducer_stateless2

[20]Emformer: https://arxiv.org/abs/2010.10759

[21]这里: https://github.com/k2-fsa/icefall/tree/master/egs/librispeech/ASR/conv_emformer_transducer_stateless2

[22]Zipformer: https://github.com/k2-fsa/icefall/tree/master/egs/librispeech/ASR/pruned_transducer_stateless7

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言程序环境剖析——探究从.c到.exe之路

程序环境1.程序的翻译环境和执行环境2. 详解编译 链接2.1 翻译环境2.2 编译的三部分预编译编译汇编2.3链接3.运行环境1.程序的翻译环境和执行环境 在ANSI C的任何一种实现中,都存在两个不同的环境。 翻译环境,在这个环境中源代码被转换成可执行的机器指…

three.js 基础认识与简单应用

一、前言 1. 什么是three.js?你将它理解成threejs,three表示3D的意思,js表示JavaScript的意思,合起来,three.js就是使用JavaScript来写3D程序的意思。three.js是基于WebGL的一个运行在浏览器上的开源框架,使…

企业级安全软件装机量可能大增

声明 本文是学习大中型政企机构网络安全建设发展趋势研究报告. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 研究背景 大中型政企机构是网络安全保护的重中之重,也是国内网络安全建设投入最大,应用新技术、新产品最多的机构…

云原生系列之使用 prometheus监控MySQL实战

文章目录前言一. 实验环境二. 安装MySQL5.72.1 配置yum源2.2 安装MySQL之前的环境检查2.3 开始使用yum安装2.4 启动MySQL并测试三. 安装MySQL_exporter3.1 MySQL_exporter的介绍3.2 mysql_exporter的安装3.3 设置MySQL账户,用于数据收集3.4 启动mysql_exporter3.5 配…

2023年信息系统项目管理师,需要哪些备考资料?

其实考前心态是相当重要的,你需要战胜的一直是你自己。你首先要明确自己考试必胜的决心,树立好的备考心态,学习只要用对了方法,考试通过的几率还是挺高的。备考心得:我自己备考了3个月的时间通过了,分享一套…

Linux多线程---生产者消费者模型和线程池

目录 生产者消费者模型 条件变量 接口 实现基于阻塞队列的cp模型 POSIX信号量 信号量的PV操作 接口: 初始化信号量: 销毁信号量 等待信号量 发布信号量 基于环形队列的生产者消费者模型 线程池 应用场景: 如何实现? …

DHCP中继及配置

为什么需要DHCP Relay?产生背景解决方案DHCP Relay工作原理DHCP Relay配置实现产生背景 随着网络规模的扩大,网络中就会出现用户处于不同网段的情况。 这个时候客户A和客户B要请求IP地址时,首先会发送DHCP Discover广播包,这个广…

一本关于ChatGPT的书《ChatGPT 革命:了解大型语言模型的力量》免费下载

下载地址:https://download.csdn.net/download/winniezhang/87431530 这本书有什么不同: 1、从书名,到大纲,到内容,基本都来自ChatGPT的自述,本人只是负责编辑。 2、整个成书过程只用了2小时不到。 3、…

【排序算法】堆排序(Heap Sort)

堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序介绍学习堆排序之前,有必要了解堆!若…

【HTML】HTML 表格 ② ( 表头单元格标签 | 表格标题标签 )

文章目录一、表头单元格标签二、表格标题标签一、表头单元格标签 表头单元格 可以在表格中 用作第一排 作为表格 的 表头 使用 , 表头单元格 中的 文本设置 可以与 普通单元格 中的文本设置 不同 ; 表头单元格 中的 文本 会 居中 , 并且 加粗 显示 ; 表头单元格 标签 如下 : &…

2023彻底解决Typora使用iPic微博图床失效问题

一、问题描述用Typora搭配iPic图床使用,最近csdn图片显示不出来用浏览器打开图片显示403,这里原因是微博图床出问题了导致的而使用iPic其他图床则需要一直付费,那有没有一劳永逸的解决所有问题呢?二、旧图恢复首先怎么找回旧图&am…

数字信号处理-第一章 离散时间信号与系统

1.1 离散时间信号——序列 1.1.1 序列 离散时间信号只在离散时间上给出函数值,是时间上不连续的序列。一 般 ,离散时间的间隔是均匀的,以TTT表示,故用 x(nT)x(nT)x(nT)表示此离散时间信号在nTnTnT点上的值,nnn为整数…

省钱的年轻人,钱包被折扣店钻了空子

【潮汐商业评论/原创】过年期间,除了商场超市,小区附近的折扣店成了Amy经常光顾的对象。用Amy的话来说,“跟附近超市比价格,跟大卖场比距离,综合下来折扣店就是我随时购物的不二选择。”从Amy的话里,我们可…

LeetCode-101. 对称二叉树

目录题目分析递归法题目来源 101. 对称二叉树 题目分析 首先想清楚,判断对称二叉树要比较的是哪两个节点,要比较的可不是左右节点! 对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一…

如何在 Mac 上将 PDF 转换为 Word [6 种免费方法]

我们出于各种原因使用 PDF。我们可以将它们用于学校作业,以打印出谱,或离线阅读文章。我们经常想弄清楚如何在 Mac 上将 Word 文档另存为 PDF。但是,如果我们需要对 PDF 进行更改怎么办? 对 PDF 进行更改通常无法在 PDF 本身上完…

Vue3通透教程【二】更高效的构建工具—Vite

文章目录🌟 写在前面🌟 webpack🌟 Vite是什么?🌟 使用Vite创建项目🌟 写在最后🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更…

【成为架构师课程系列】架构师的核心能力地图

目录 架构师核心能力总结 #综合技术能力分层总结 #数据结构和算法知识图谱总结 #Java工程师【核心基础】知识图谱总结

全栈开发工程师面试题五-Eureka

1.服务的提供者和服务的消费者(服务的调用关系) 服务的提供者:在一次服务中被其他服务调用的服务(提供接口给其他服务) 服务的消费者:一次业务中调用其他服务的服务(调用其它微服务提供的接口) 服务的提供者…

Koa2-创建、中间件、连接数据库、处理请求、日志

文章目录安装配置koa2配置nodemon,热更新我们的项目中间件什么是中间件👻洋葱模型路由中间件连接数据库 - mysql后端允许跨域处理请求getpostputdelete后续会继续更新安装配置koa2 👻安装 koa2 npm i koa2 -s👻在package.json 配置,当然是在…

如何在QEMU社区提Bug

当在编译及使用QEMU的过程中发现问题又不能自行解决时,可以去QEMU官网提Bug。本文以笔者实际遇到的问题为例,讲解提交QEMU Bug的完整过程。 1. 访问QEMU主页 QEMU官网主页地址为:https://www.qemu.org/ 页面如下: 2. 跳转至CON…