LAS、CTC、RNN-T、NT、MoChA

news2024/11/16 1:16:05

LAS

LAS是一个做语音识别的经典seq2seq模型,主要分为三个部分Listen、Attention、Spell

Listen

Listen部分就是一个encoder。
输入声学特征向量,提取信息、消除噪声,输出向量。
在这里插入图片描述
encoder可以是RNN
在这里插入图片描述
也可以是CNN。比较常见的是先用CNN,再用RNN
在这里插入图片描述
还有一种趋势是使用Self-Attention
在这里插入图片描述

Down Sampling减少取样

由于声音的采集通常都是很大数据量的。比如采样率为16KHz需要在一秒钟采集16000个采样点,所以通常需要对声音的特征向量进行Down Sampling,减少样本数。

对于RNN,
方法一是通过使用两层RNN,4个向量通过第一层RNN输出4个向量,通过第二个RNN输出2个向量
方法二是把通过RNN输出的四个向量中,每隔一个输出向量
在这里插入图片描述

对于CNN,使用TDNN的方法,可以认为一段附近的几个特征向量差不多,采取使用第一个和最后一个向量,减少样本参数。

对于Self-Attention,计算当前向量和所有向量(1秒16K)计算量太大,只计算一个范围内的注意力。
在这里插入图片描述

Attention

我们可以直接编码解码之后直接输出,但是我们当前的编码解码不仅限于这一个编码向量,还取决于周围的编码向量,所以要做attention。

注意力机制如下图所示。 z z z是待训练的向量,初始时随机初始化, z z z与每个 h h h做match得到注意力分数 α α α
match的方法有两种,一种是Dot-product,另一种是Addictive。
在这里插入图片描述
在这里插入图片描述
做完match之后,每个 h h h的注意力分数 α α α做softmax,然后对应比例的h相乘相加,得到向量 c c c c 0 c^{0} c0作为decoder(Spell)的输入。
在这里插入图片描述

Spell

c 0 c^{0} c0作为decoder的输入
随机初始化的 z 0 z^{0} z0经过训练之后得到 z 1 z^{1} z1 z 1 z^{1} z1作为RNN的隐状态输入
通过RNN,输出|V|维向量经过Softmax,输出最大概率的token。
在这里插入图片描述
z 1 z^{1} z1作为待训练的向量,与每个 h h h做attention,得到 c 1 c^{1} c1作为输入
把得到的Token加入RNN网络, z 1 z^{1} z1训练后得到的 z 2 z^{2} z2作为隐状态,训练得到下一个Token
在这里插入图片描述

CTC

在这里插入图片描述

它的结构很简单,就是input经过一个Encoder进行输出,输出经过分类器、softmax之后得到token。

在这里插入图片描述
由于在一小段音频中(10ms),音频中可能没有什么有价值的内容,这时候不容易预测token值,所以在词表中添加一个符号 ∅ \varnothing ,用 ∅ \varnothing 表示目前不能识别此处的token,也许在看到下一个音频段的时候知道了此处是什么,然后再输出此处的token。

在这里插入图片描述
最后处理输出,把 ∅ \varnothing 去掉,把重复的tokens合并起来。

在这里插入图片描述

CTC在训练时,预测的token和真实token计算损失时,会有一个问题,你不知道 ∅ \varnothing 会出现在哪个位置,会有很多种情况。实际上会把所有情况都用于训练。
在这里插入图片描述
CTC的问题:encoder输出后经过一个线性分类器,每个分类器输入一个向量,输出一个向量,token之间没有互相关联,预测时不看前后出现的token。

RNA

在这里插入图片描述
RNA模型就是一种解决CTC问题的模型。
它把CTC的线性分类器改成LSTM,把前一个计算的输出和hidden state参与到后面的token预测中。

RNN-T

目前前面所述的模型的decoder都是一个输入只输出一个token,现实中也有一个输入输出多个token的情况。比如语音说“th”这个单词时,只发了一个音,如果输出是“t”显然不合适。

我们可以改变词表,手动加入一些像“th”,“zh”等等这些作为token。但我们更希望模型本身灵活且健壮。

RNN-T输入一小段音频之后,一直进行输出,直到没有token可输出时,输出 ∅ \varnothing

在这里插入图片描述
它有和CTC一样的问题, ∅ \varnothing 会出现在任何位置,在计算损失时增加训练难度。

解决方法是,在最后增加一个RNN模型(语言模型),这个RNN忽略 ∅ \varnothing ,只把Token当作输入进行训练,所以可以通过大量文字训练这个RNN。
在这里插入图片描述

Neural Transducer

上述模型,每次只读一个音频片段就进行输出。

NT每次读 w w w个片段, w w w个片段做attention,然后经过LSTM
在这里插入图片描述

在这里插入图片描述

MoChA

Neural Transducer每次移动的窗口是固定的。MoChA是一种不断变换窗口大小的。
在这里插入图片描述
encoder层输出之后的,按序判断窗口是否该在此h处
在这里插入图片描述

总结

在这里插入图片描述

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

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

相关文章

多元宇宙算法求解电力系统多目标优化问题(Matlab实现)【电气期刊论文复现与算例创新】

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文&…

Shiro-SpringBoot (一)

前不久负责项目中刚好也使用了Shiro做权限控制,趁着空闲期想把之前做的整理一下。在日常项目开发中,权限认证是不可少的模块。比较常用的有Spring Security,或是轻量级的Apache Shiro。相对来说Shiro提供了认证、授权、加密、会话管理、与Web…

华为机试 - 羊、狼、农夫过河

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 羊、狼、农夫都在岸边,当羊的数量小于狼的数量时,狼会攻击羊,农夫则会损失羊。农夫有一艘容量固定的船,能够承载固定数量的动物。 要求求出不损失羊情况…

体验Vue3的SSR框架 - Nuxt3

SSR 与 Nuxt SSR 是 Server-Side Rendering,即服务端渲染的英文缩写。 Vue.js 是一个用于构建客户端应用的框架。默认情况下,Vue 组件的职责是在浏览器中生成和操作 DOM。在客户端是单页应用 (SPA) 。 也可以将 vue 程序在服务端渲染,渲染…

【GD-1开发板】CH340驱动安装方法

CH340驱动安装方法正常情况异常情况CH340驱动安装步骤现在国产ARM替代STM32的arm芯片运动正如火如荼进行中,我也录制了一套完整的”ARM嵌入式开发入门教程“,并配套了一个GD32F103C8T6的开发板。 但有小伙伴拿到板子后,说下载程序的时候&…

实验七:定时/计数器8253、8254

目录 例实验目的实验内容报告要求例 已知8253的两个计数器CLK0=1MHZ,CLK1=1KHZ,现系统要求8253的OUT1产生0.1s的定时方波信号。 (1):应如何实现? (2):说明两个计数器的工作方式并计算计数初值 (3):编写初始化程序(8253的端口地址80H-83H,均采用二进制计数) C…

详解torch.nn.functional.grid_sample函数(通俗易懂):可实现对特征图的水平/垂直翻转

一、函数介绍 Pytorch中grid_sample函数的接口声明如下,具体网址可以点这里 torch.nn.functional.grid_sample(input, grid, mode‘bilinear’, padding_mode‘zeros’, align_cornersNone) 为了简单起见,以下讨论都是基于如下参数进行实验及讲解的&…

BSN开放联盟链“中移链”浏览器2.0正式发布!

由中国移动信息技术中心自主研发的中移链EOS区块链浏览器2.0版本,已在区块链服务网络(BSN)官网和BSN-DDC网络官网正式发布。 中移链浏览器2.0 无论是从政策导向还是从业务需求方面来说,区块链技术的发展已经是一种不可逆的趋势&a…

查找-二叉排序树

问题引入 【问题描述】 输入若干个整数建立二叉排序树,以0结束输入,在二叉排序树上查找关键字,删除指定关键字结点。 【输入形式】 (1)第一行,输入若干个整数,输入0结束输入; 如输入关键字 45 24 53 12 28 90 0 可建立如下二叉排序树 (2)第二行,输入两个整数,一…

GameOff2022参与有感

GameOff2022参与有感以及年度总结 厚颜无耻的用我们美术的立绘 GameOff— Redemption 很高兴在一个月的时间里面和大家一起完成了《Redemption》 比赛链接:Itch.io 百度云盘链接: 链接:https://pan.baidu.com/s/1ylK0QRr2lmkqi4JF1wsXtA 提…

【servelt原理_6_servlet核心接口和类】

servlet核心接口和类 在Servlet体系中,除了实现servlet接口,还可以通过继承GenericServlet或HttpServlet类实现编写1.Servlet接口 servlet接口是整个servlet的核心。它是所有Servlet类必须直接或者间接实现的一个接口,其内部需要实现的5个方法分别关乎…

基于flv.js的视频自动播放

1: html <video class"video-content" id"video">您的浏览器不支持 HTML5 video&#xff01; </video> 2: 创建flv实例并播放 let videoPlayer document.getElementById(video); //获取html if (flvJs.isSupported()) {//创建flv实例this.P…

音视频开发——FFmpeg技术点 【进阶一览】

概述 Fmpeg是一套领先的音视频多媒体处理开源框架&#xff0c;采用LGPL或GPL许可证。它提供了对音视频的采集、编码、解码、转码、音视频分离、合并、流化、过滤器等丰富的功能&#xff0c;包含了非常先进的音频/视频编解码库libavcodec&#xff0c;具有非常高的可移植性和编解…

[附源码]计算机毕业设计中小学课后延时服务管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Git 之 已有项目创建 git 仓库

Git 之 已有项目创建 git 仓库前言一、现在 github/gitee 中创建仓库二、在项目的文件夹当中 git bash here1.git init2. git remote add origin 仓库地址3. git pull origin master4. git add . git commit -m git push -u origin master前言 项目已经开始写了,但是还没有…

干货 | 数字经济创新创业——如何造就成功的职业生涯

下文整理自清华大学大数据能力提升项目能力提升模块课程“Innovation & Entrepreneurship for Digital Economy”&#xff08;数字经济创新创业课程)的精彩内容。主讲嘉宾&#xff1a;Kris Singh: CEO at SRII, Palo Alto, CaliforniaVisiting Professor of Tsinghua Unive…

第一天:Python元学习——通用人工智能的实现

文章目录0 封面1 第一章&#xff1a;元学习简介1.1 元学习与少样本学习1.2 元学习的类型——学习度量空间1.3 学习初始化1.4 学习优化器1.5 通过梯度下降来学习如何通过梯度下降来学习2 第二章&#xff1a;使用孪生网络进行人脸识别与音频视频2.1 什么是孪生神经网络孪生神经网…

机器学习与数据挖掘——数据预处理

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔空间 一&#xff1a;关于数据预处理 在工程实践中&#xff0c;我们得到的数据会存在有缺失值、重复值等&#xff0c;在使用之前需要进行数据预处理。数据预处理没有标准的流程&#xff0c;通常…

Kaldi的简单介绍和基本使用说明

Kaldi的简单介绍和基本使用说明前言一、ASR简介1.语音识别系统特征提取&#xff1a;声学模型发音词典语言模型语音解码2. ASR项目二、Kaldi简介三、Kaldi项目的结构四、Kaldi的安装1. 安装依赖的几个系统开发库2. 安装依赖的第三方工具库3. 编译Kaldi代码配置Kaldi编译Kaldi五、…

Python-进程和线程

张钊*&#xff0c;沈啸彬*, 王旭* 李月&#xff0c;曹海艳&#xff0c; (淮北师范大学计算机科学与技术学院&#xff0c;淮北师范大学经济与管理学院&#xff0c;安徽 淮北) *These authors contributed to the work equllly and should be regarded as co-first authors. &a…