当前位置: 首页 > news >正文

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

目录

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

相关文章:

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

目录 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 …...

数据结构复习(三)顺序表oj

目录 27. 移除元素 26. 删除有序数组中的重复项 88. 合并两个有序数组 27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外…...

2023.2.10每日一题

每日一题题目描述解题核心解法一:模拟题目描述 题目链接:2553. 分割数组中数字的数位 给你一个正整数数组nums,请你返回一个数组answer,你需要将nums中每个整数进行数位分割后,按照nums中出现的相同顺序放入答案数组…...

Homekit智能家居DIY一智能吸顶灯

买灯要看什么因素 好灯具的灯光可以说是家居的“魔术师”,除了实用的照明功能外,对细节的把控也非常到位。那么该如何选到一款各方面合适的灯呢? 照度 可以简单理解为清晰度,复杂点套公式来说照度光通量(亮度&#x…...

关于 OAuth 你又了解哪些?

作者罗锦华,API7.ai 技术专家/技术工程师,开源项目 pgcat,lua-resty-ffi,lua-resty-inspect 的作者。 OAuth 的背景 OAuth,O 是 Open,Auth 是授权,也就是开放授权的意思。OAuth 始于 2006 年&a…...

18. 构造函数和析构函数,构造函数的分类和调用

构造函数和析构函数 构造函数 //没有返回值 不用写void//函数名 与 类名相同//可以有参数 ,可以发生重载//构造函数 由编译器自动调用一次 无须手动调用析构函数 //没有返回值 不用写void函数名 与类名相同 函数名前 加 ~不可以有参数 ,不可以发生重载析构函数 也是由编译器自…...

JavaScript设计模式es6(23种)

设计模式简介设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的…...

设计「业务」与「技术」方案

三天研发,两天设计; 01【优先做设计方案】 职场中的那些魔幻操作,研发最烦的是哪个? 作为一个数年且资深的互联网普通开发,可以来说明一下为什么是:缺乏设计; 面对业务需求的时候&#xff0c…...

C/C++:预处理(下)

目录 一.回顾程序的编译链接过程 二. 预处理之预定义#define 1.#define定义的标识符 2.#define定义的宏 3.带副作用的表达式作为宏实参 4.两个经典的宏 5.#define使用的一些注意事项小结 6.宏与函数的比较 7.#undef 附:关于#define的三个冷知识 三. 条件…...

2023互联网相关岗位转行与就业选择的简单分析

文章目录1、城市2、岗位1、城市 能找得到工作的城市,可能主要也就这些base了 2、岗位 主要技术岗位 Python 侧重人工智能,人工智能门槛高大家心知肚明。如果学python 不走人工智能,只走单纯的后端开发,不管从薪资还是岗位数量…...

LeetCode·每日一题·1223.掷骰子模拟·记忆化搜索

作者:小迅链接:https://leetcode.cn/problems/dice-roll-simulation/solutions/2103471/ji-yi-hua-sou-suo-zhu-shi-chao-ji-xiang-xlfcs/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权&#xff0…...

【GPLT 二阶题目集】L2-043 龙龙送外卖

参考地址:AcWing 4474. 龙龙送外卖(杂题选讲) 作者:yxc 感谢y总! 龙龙是“饱了呀”外卖软件的注册骑手,负责送帕特小区的外卖。帕特小区的构造非常特别,都是双向道路且没有构成环 —— 你可以…...

Maven:基础知识

Maven概念图生命周期目录工程创建测试常用命令COMPILATION ERROR : 不再支持目标选项 5。请使用 7 或更高版本。问题解决pom.xml文件properties配置示例scope配置详解概念图 依赖管理构建项目Maven 的底层核心实现项目的构建和管理必须通过插件完成,但插件本身并不包…...

Web 框架 Flask 快速入门(一)flask基础与模板

前言 课程地址:Python Web 框架 Flask 快速入门 文章目录前言🌴 Flask基础和模板🌷 一个简单的flask程序🌼 模板的使用🌴 Flask基础和模板 1、web框架的作用 避免重复造轮子,app程序不必关心于服务器的沟…...

1CN/Jaccard/PA/AA/RA/Katz/PageRank/SimRank

common neighbors(CN) 公共邻居的数量。 Jaccard 用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。 preferential attachment(PA) 节点倾向于连接到节点度较高的节点上,&…...

YOLOv5-Backbone模块实现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章地址: 365天深度学习训练营-第P8周:YOLOv5-Backbone模块实现🍖 作者:K同学啊一、前期准备1.设置GPUimport torch from torch impor…...

【C语言】程序环境和预处理

🌇个人主页:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸C语言专栏:https://blog.csdn.net/vhhhbb/category_12174730.html 小苏希望大家能从这篇文章中收获到许…...

9.关系查询处理和查询优化

其他章节索引 梳理 名词解释 代数优化:是指关系代数表达式的优化,也即按照一定规则,通过对关系代数表达式进行等价变换,改变代数表达式中操作的次序和组合,使查询更高效物理优化:是指存取路径和底层操作算…...

计算机组成原理(三)

5.掌握定点数的表示和应用(主要是无符号数和有符号数的表示、机器数的定点表示、数的机器码表示); 定点数:小数点位置固定不变。   定点小数:小数点固定在数值位与符号位之间;   定点整数:小…...

C. Least Prefix Sum codeforces每日一题

🚀前言 🚀 大家好啊,这里是幸麟 🧩 一名普通的大学牲,最近在学习算法 🧩每日一题的话难度的话是根据博主水平来找的 🧩所以可能难度比较低,以后会慢慢提高难度的 🧩此题标…...

ASEMI三相整流模块MDS100-16图片,MDS100-16尺寸

编辑-Z ASEMI三相整流模块MDS100-16参数: 型号:MDS100-16 最大重复峰值反向电压(VRRM):1600V 最大RMS电桥输入电压(VRMS):1700V 最大平均正向整流输出电流(IF&#…...

【第37天】斐波那契数列与爬楼梯 | 迭代的鼻祖,递推与记忆化

本文已收录于专栏🌸《Java入门一百例》🌸学习指引序、专栏前言一、递推与记忆化二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析5.原题链接三、【例题1】1、题目描述2.解题思路3、模板代码4、代码解析5、原题链接三、推荐专栏四、课后习题序…...

Map集合

Map集合 Map接口的简介 Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。 Map 没有继承 Collection 接口&#xff0c…...

PyQt5编程扩展 3.2 资源文件的使用

目录 本例运行效果: 设计Qt窗体 建立项目 放一个Group Box 放三个Label 放一个Horizontal Slider 放两个Line Edit 层次结构 布局 放一个Group Box 放两个Label 放两个Line Edit 放一个Push Button 层次结构 布局 放一个frame 层次结构 布局 窗体…...

Linux系统之文件共享目录设置方法

Linux系统之文件共享目录设置方法一、本次实践目的二、检查本地系统环境1.检查系统版本2.检查系统内核三、创建相关用户及用户组1.创建共享目录2.创建测试用户账号3.创建用户组4.设置用户的属组5.查看admin和IT用户组成员6.查看所有用户信息四、共享目录权限设置1.设置/data/so…...

上海亚商投顾:三大指数均涨超1% 芯片板块集体大涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪三大指数今日低开高走,午后集体涨超1%,创业板指盘中涨超1.7%。芯片板块集体大涨,…...

Harbor私有仓库部署与管理

目录 前言 一、Harbor概述 二、Harbor 的特性 三、Harbor的构成 四、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署Harbor服务 3.1、部署docker compose服务 3.2 下载或上传Harbor安装程序 3.3、启动Harbor 3.4、查看Harbor启动镜像 4、物理机访问se…...

互联网架构之 “高可用” 详解

一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可用性是100%。 如果系统每运行…...

分布式高级篇4 —— 商城业务(2)

一、订单服务1、订单基本概念2、订单基本构成3、订单状态4、订单流程5、配置拦截器拦截订单请求6、订单确认页模型抽取7、订单确认页vo封装8、Feign 远程调用请求头丢失问题\*\*\*\*\* 惨痛教训9、Feign 异步调用请求头丢失问题10、查看库存状态11、模拟计算运费12、接口幂等性…...

二分查找基本原理

二分查找基本原理1.二分查找1.1 基本概念1.2 二分查找查找步骤1.2.1 中间索引不能整除,取整数作为中间索引1.2.2 索引不能整除,整数1作为中间索引1.3 二分查找大O记法表示2. 二分查找代码实现1.二分查找 1.1 基本概念 二分法(折半查找)是一…...

深圳网站定制价格低/seo推广学院

C语言第四-五章第四章 数 组4.1数组的概念C 语言可以根据用户需要,用基本数据类型定义特殊性质的数据类型,称为构造类型。构造类型有:数组、结构、联合。数组:相同数据类型变量的有序集合。有序表现在数组元素在内存中连续存放。数…...

大学 英文网站建设/湖南关键词优化快速

在页面上显示SWF是要等到目标完全被加载完才会渲染出来。当加载的SWF文件比较大时,页面会处于空白状态,用户体验不好。较好的做法是做一个文件大小较小的loading动画来加载目标SWF,但对于单独的项目来说并不是最好的做法,因为这样…...

360怎么变成建设银行首选网站/买卖交易网

1、在我们的Mac系统下打开“终端”,输入python,然后回车即可看到我们电脑是否安装了python,以及它的版本,这里我的是2.7.5版本,如果未安装请百度之。 2、>>>之后就是我们可以直接输入的python源码了 首先我们输入:print …...

彩票网站net网站开发/连云港百度推广总代理

也许30多岁了再玩Blog有点矫情。从开发岗位上退出做了教师,不满Java在IT教育中的霸道,希望.NET能够真正带来程序设计领域的清新和简单。其实我一直是Borland公司的追随者,从Borland C到Delphi。如今我更看好.NET。也许是不再年轻的缘故&#…...

美乐乐网站模板/成都网站优化公司

今天安装了一下TortoiseSVN,然后建了个test测试文件,在add或者check out 、update的时候,虽然文件是最新的,但是文件上没有对应的状态显示,即感叹号或者绿色对勾。百度了一下,找到了解决办法,在…...

柳市网站建设公司/免费s站推广网站

前言&#xff1a; 在使用vue框架进行开发的时候可能会使用到组件的递归&#xff0c;比如常见的树形结构。 代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"width…...