Paraformer 语音识别原理

Paraformer(Parallel Transformer)非自回归端到端语音系统需要解决两个问题:
- 准确预测输出序列长度,送入预测语音信号判断包含多少文字。 如何从encoder 的输出中提取隐层表征,作为decoder的输入。
采用一个预测器(Predictor)来预测文字个数并通过Continuous integrate-and-fire (CIF)机制来抽取文字对应的声学隐变量
- 如何增强非自回归预测内部依赖的建模能力。
基于GLM的 Sampler模块来增强模型对上下文语义的建模
Paraformerr的组成:Encoder(编码器),Predictor(预测器),Sampler(采样器),Decoder(解码器),loss function。
- Encoder(编码器),把声学特征转变成固定维度的稠密向量.
- Predictor(预测器),预测文字个数𝑵^′,实现语音和文本对齐,并通过Continuous integrate-and-fire (CIF)机制来抽取文字对应的声学隐变量𝑬_𝒂。
- Sampler(采样器),通过采样,将声学特征向量与目标文字向量变换成含有语义信息的特征向量,配合双向的Decoder来增强模型对于上下文的建模能力;采用Glangcing LM增强非自回归的上下文建模能力.
- Decoder(解码器),把向量转变成目标文字

Encoder
采用SAN-M结构,对于语音建模来说,全局建模和局部建模都极为关键,所以标准的Self-attention层增加了局部建模模块Memory Block,从而增加Self-attention的局部建模能力。
Decoder
离线和流式系统采用不同结构。离线识别使用双向SAN-M,流式识别采用单向的SAN-M,并结合基于SCAMA的流式注意力机制来实现。SCAMA流式注意力机制原理如上图所示,首先针对语音特征进行分chunk操作,送入encoder建模后进入predictor分别预测每个chunk的输出token数目。Decoder在接受到token数目和隐层表征后,来基于SCAMA流式注意力机制预测每个chunk的输出。
Predictor
基于CIF来预测输出token的数目,并提取隐层表征作为decoder的输入。即将encoder预测输出送入函数,将每帧的预测输出转化为一个0-1之间的概率分布,连续给集合的概率得到一个域限门值 β,根据 β 输出一个token。
Continuous Integrate-and-Fire(CIF)来产生声学embedding。CIF是软单调对齐,被用来做流式语音识别。
训练的时候额外采用MAE Loss来使得预测的概率和等于整个输出的token数目。推理的时候采用门限值 β 为1,也就是累积到1的时候输出一个token,来预测整条语音的输出字数。
举例如下图, α \alpha α从左到右,0.3+0.5+0.3=1.1>1,于是fire一个token。 E α 1 = 0.3 ∗ H 1 + 0.5 ∗ H 2 + 0.2 ∗ h 3 E_{\alpha 1}=0.3*H1+0.5*H2+0.2*h3 Eα1=0.3∗H1+0.5∗H2+0.2∗h3。由于还剩0.1的值没有用,于是0.1用于下一个token计算。同理, E α 2 = 0.1 ∗ H 3 + 0.6 ∗ H 4 + 0.3 ∗ H 5 E_{\alpha 2}=0.1*H3+0.6*H4+0.3*H5 Eα2=0.1∗H3+0.6∗H4+0.3∗H5, E α 3 = 0.1 ∗ H 5 + 0.9 ∗ H 6 E_{\alpha 3}=0.1*H5+0.9*H6 Eα3=0.1∗H5+0.9∗H6。 E α 4 = 0.2 ∗ H 7 + 0.6 ∗ H 8 E_{\alpha 4} =0.2*H7+0.6*H8 Eα4=0.2∗H7+0.6∗H8. 共fire了4次,也就是4个 E α E_\alpha Eα
。

Sampler

上图中展示了四种常见的建模方式:
第一个是自回归Decoder,即当前时刻依赖前一时刻的输出;
第二个是标准的单轮迭代的非自回归端到端Decoder,使用独立建模方式;
第三个是 MLM,它是多轮迭代非自回归常采用的方式,将某些时刻替换成mask,利用周边的token预测mask的位置,并通过多轮迭代的方式提升预测精度。
第四个是Paraformer采用的建模方式,通过GLM浏览语言模型对隐层表征和grand truth的label进行采样,预测隐层表征对应输出的token来提升token的内部建模能力,从而减少Paraformer中的替换错误。
假设输入 ( X , Y ) (X,Y) (X,Y), X X X表示语音,有 T T T帧, Y Y Y表示文字,有 N N N个文字。Encoder把输入 X X X映射到隐藏表示 H H H。 然后Predictor把隐藏表示映射为预测的文字个数 N ′ N^{'} N′和对应的声学向量embedding E a E_a Ea。输入 E a E_a Ea和 H H H给Decoder,产生最后的预测 Y ′ Y^{'} Y′,这是第一次解码,主要为了得到预测的结果并通过Sampler模块来采样,这时梯度并不回传(其实代码里是可选择的)。Sampler 采样 E a E_a Ea和目标 E c E_c Ec来产生 E s E_s Es,需要依据 Y ′ Y^{'} Y′和 Y Y Y之间的距离。Decoder最后使用 E s E_s Es和 H H H来预测最终的结果 Y ′ ′ Y^{''} Y′′,这时才会回传梯度。最后, Y ′ ′ Y^{''} Y′′用来采样负例并计算MWER, 通过目标长度N和预测的 N ′ N^{'} N′来计算MAE。
推断时,Sampler模块可以去掉,只使用 E a E_a Ea和 H H H来预测 Y ′ Y^{'} Y′,从而推理时并没有增加额外计算量。
loss
基于负样本采样的MWER训练准则。
https://zhuanlan.zhihu.com/p/649558283
https://zhuanlan.zhihu.com/p/637849790
https://arxiv.org/abs/2206.08317
相关文章:
Paraformer 语音识别原理
Paraformer(Parallel Transformer)非自回归端到端语音系统需要解决两个问题: 准确预测输出序列长度,送入预测语音信号判断包含多少文字。 如何从encoder 的输出中提取隐层表征,作为decoder的输入。 采用一个预测器(Predictor&…...
用户注册这样玩,保你平安
前言 基本上每个系统系统都包含用户注册、发送验证码等基本操作。在前些年,我还记得我在逛 csdn、贴吧、网易新闻等网站的时候是可以不登陆也能浏览完网页内容的,但是近几年这些网站已经改成了不登陆不让用,浏览网页时不时提醒你要进行登录&…...
QXDM Filter使用指南
QXDM Filter使用指南 1. QXDM简介2 如何制作和导入Filter2.1 制作Filter2.1.1 制作Windows环境下Filter2.1.2 制作Linux环境下Filter 2.2 Windows环境下导入Filter 3 Filter配置3.1 注册拨号问题3.1.1 LOG Packets(OTA)3.1.2 LOG Packets3.1.3 Event Reports3.1.4 Message Pack…...
智能优化算法应用:基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蝴蝶算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝴蝶算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…...
3dsMax插件Datasmith Exporter安装使用方法
3dsMax插件Datasmith Exporter安装使用方法 某些文件格式无法用Datasmith直接导入虚幻引擎,这些数据必须先被转换为Datasmith能够识别的文件格式。Datasmith Exporter插件就可以帮助您的软件导出可以被Datasmith导入虚幻引擎的.udatasmith格式文件。 在开始使用虚幻…...
Rocketmq架构
NameServer:作为注册中心,提供路由注册、路由踢出、路由发现功能,舍弃强一致,保证高可用,集群中各个节点不会实时通讯,其中一个节点下线之后,会提供另外一个节点保证路由功能。 Rocket mq name…...
中兴亮相中国国际现代化铁路技术装备展览会 筑智铁路5G同行
近日,第十六届中国国际现代化铁路技术装备展览会在北京中国国际展览中心举办,中兴以“数智铁路,5G同行”主题亮相本次展览会,并全面展示了“数字铁路网络基础设施”、“云边结合的铁路行业云”、“数字铁路赋能赋智”等方面的最新…...
从零学算法15
15.给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 …...
《Effective C++》条款27
尽量少做转型动作 class A { public:A(int x) :a(x) {};virtual void add(){a;} private:int a; }; class B :public A { public:B(int x) :b(x),A(x) {};virtual void add(){static_cast<A>(*this).add();b;}private:int b; }; 如上描述把子类转型为A类,调用…...
无图谱不AI之三元组数据保存Neo4j
目录 1. 代码学习1.1 源代码1.2 代码解读 没有图谱称为弱人工智能,有图谱的称为强人工智能。 图谱可以让机器学习和人工智能具备推理能力。 1. 代码学习 1.1 源代码 # -*- coding: utf-8 -*- from py2neo import Node, Graph, Relationship# 可以先阅读下文档&a…...
Mybatisplus同时向两张表里插入数据[事务的一致性]
一、需求:把靶器官的数据,单独拿出来作为一个从表,以List的方式接收这段数据; 此时分析,是需要有两个实体的,一个是主表的实体,一个是从表的实体,并在主表实体新增一个List 字段来接…...
天眼销:精准的企业名录
企业名录的重要性,对于销售而言都是极其重要的。本期为家人们分享如何正确挑选出优质的企业名录渠道,避免走一些弯弯坑坑。 为了有效利用企业名录进行客户开发,您需要关注信息的准确性、可提供的资源数量以及信息的时效性。能否根据您的需求…...
TypeError: Cannot read properties of null (reading ‘shapeFlag‘)
vue3 开发过程遇到这样一个报错 TypeError: Cannot read properties of null (reading shapeFlag)最后发现是ref定义的变量,在访问时没有使用.valuereactive 变量初始化是数组,如果使用字符串赋值时也会报这个错。...
视频监控平台EasyCVR多场景应用,AI视频分析技术助力行业升级转型
传统的视频监控系统建设,经常存在各方面的因素制约,造成管理机制不健全、统筹规划不到位、联网共享不规范,形成“信息孤岛”、“数据烟囱”。在监控系统的建设中缺乏统一规划,标准不统一、视频图像信息利用率低等问题日益突出。随…...
如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!
目录 1. 前言 2. 本地FTP搭建 2.1 Serv-U下载和安装 2.2 Serv-U共享网页测试 2.3 Cpolar下载和安装 3. 本地FTP发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4. 公网访问测试 5. 总结 1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角&am…...
c++--类型的基础
1.常量对象,常量成员函数 (1).常量对象 常量对象的引用和指针不能调用类的普通的成员函数。只能调用常量成员函数。 (2).常量成员函数:把const放在类成员函数参数列表后。表示隐含的this是一个指向常量的指针 (3).当创建一个const对象时,直到…...
Python with提前退出:坑与解决方案
Python with提前退出:坑与解决方案 问题的起源 早些时候使用with实现了一版全局进程锁,希望实现以下效果: Python with提前退出:坑与解决方案 全局进程锁本身不用多说,大部分都依靠外部的缓存来实现的,r…...
Vue3-provide和inject
作用和场景:顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信 跨层传递普通数据: 1.顶层组件通过provide函数提供数据 2.底层组件通过inject函数获取数据 既可以传递普通数据,也可以使用ref传递响应式数据(…...
Python与设计模式--适配器模式
23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...
大模型能否生成搜索引擎的未来?
文|郝 鑫 编|刘雨琦 ChatGPT火爆之前,水面下,也有中国公司也在朝着智能助手的方向努力。夸克便是其中之一。在GPT风靡科技圈后,国内就开始陆续冒出一些大模型厂商。对当时夸克而言,做大模型毋庸置疑&am…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
