端到端语音识别模型LAS(listen-attention-spell)

目录

  • 端到端语音识别模型LAS
    • 介绍:
    • 模型:
    • 模型代码片段

端到端语音识别模型LAS

Listen, Attend and Spell (LAS)的神经网络结构,由listener和speller组成,listener是以fbank为输入的pyramidal RNN encoder,speller是基于attention的RNN decoder,输出为建模的字符;模型所需的所有组件的训练是jointly的;每个输出的字符之间没有传统CTC模型的独立性假设要求。

介绍:

目前的端到端ASR(CTC & sequence to sequence)系统存在的问题:
1、CTC是建立在输出字符之间彼此条件独立的假设上;
2、sequence to sequence方法只是应用在phoneme sequence,对ASR系统来说并不是端到端的训练。
文章作者使用pyramidal RNN(pRNN)最为编码器的主要原因:
1、在time step 上降维,减少信息的冗余性,有助于注意力模型捕获更关键的信息;
2、OOV的字符和低频率的单词会自动处理,因为一次只输出一个字符;
3、解决拼写变体的问题,如“triple a”和“aaa”。

模型:

示意图:
LAS模型结构

模型代码片段

1、Encoder 代码片.

class Encoder(nn.Module):r"""Applies a multi-layer LSTM to an variable length input sequence."""def __init__(self, input_size=320, hidden_size=256, num_layers=3,dropout=0.0, bidirectional=True, rnn_type='lstm'):super(Encoder, self).__init__()self.input_size = input_sizeself.hidden_size = hidden_sizeself.num_layers = num_layersself.bidirectional = bidirectionalself.rnn_type = rnn_typeself.dropout = dropoutself.lstm = nn.LSTM(input_size=input_size, hidden_size=hidden_size, num_layers=num_layers,batch_first=True,dropout=dropout,bidirectional=bidirectional)

2、Dncoder 代码片.

class Decoder(nn.Module):""""""def __init__(self, vocab_size=vocab_size, embedding_dim=512, sos_id=sos_id, eos_id=eos_id, hidden_size=512,num_layers=1, bidirectional_encoder=True):super(Decoder, self).__init__()# Hyper parameters# embedding + outputself.vocab_size = vocab_sizeself.embedding_dim = embedding_dimself.sos_id = sos_id  # Start of Sentenceself.eos_id = eos_id  # End of Sentence# rnnself.hidden_size = hidden_sizeself.num_layers = num_layersself.bidirectional_encoder = bidirectional_encoder  # useless nowself.encoder_hidden_size = hidden_size  # must be equal now# Componentsself.embedding = nn.Embedding(self.vocab_size, self.embedding_dim)  # 将每个词编码成d维向量self.rnn = nn.ModuleList()self.rnn += [nn.LSTMCell(self.embedding_dim +self.encoder_hidden_size, self.hidden_size)]for l in range(1, self.num_layers):self.rnn += [nn.LSTMCell(self.hidden_size, self.hidden_size)]self.attention = DotProductAttention()  # 点乘注意力机制self.mlp = nn.Sequential(nn.Linear(self.encoder_hidden_size + self.hidden_size,self.hidden_size),nn.Tanh(),nn.Linear(self.hidden_size, self.vocab_size))

3、Attention 代码片.

class DotProductAttention(nn.Module):r"""Dot product attention.Given a set of vector values, and a vector query, attention is a techniqueto compute a weighted sum of the values, dependent on the query.NOTE: Here we use the terminology in Stanford cs224n-2018-lecture11."""def __init__(self):super(DotProductAttention, self).__init__()# TODO: move this out of this class?# self.linear_out = nn.Linear(dim*2, dim)def forward(self, queries, values):"""Args:queries: N x To x Hvalues : N x Ti x HReturns:output: N x To x Hattention_distribution: N x To x Ti"""batch_size = queries.size(0)hidden_size = queries.size(2)input_lengths = values.size(1)# (N, To, H) * (N, H, Ti) -> (N, To, Ti)attention_scores = torch.bmm(queries, values.transpose(1, 2))attention_distribution = F.softmax(attention_scores.view(-1, input_lengths), dim=1).view(batch_size, -1, input_lengths)# (N, To, Ti) * (N, Ti, H) -> (N, To, H)attention_output = torch.bmm(attention_distribution, values)# # concat -> (N, To, 2*H)# concated = torch.cat((attention_output, queries), dim=2)# # TODO: Move this out of this class?# # output -> (N, To, H)# output = torch.tanh(self.linear_out(#     concated.view(-1, 2*hidden_size))).view(batch_size, -1, hidden_size)return attention_output, attention_distribution

gitcode链接:https://gitcode.net/weixin_47276710/end-to-end-asr/-/tree/master

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微调Whisper语音识别模型和加速推理

前言 OpenAI在开源了号称其英文语音辨识能力已达到人类水准的Whisper项目,且它亦支持其它98种语言的自动语音辨识。Whisper所提供的自动语音识与翻译任务,它们能将各种语言的语音变成文本,也能将这些文本翻译成英文。本项目主要的目的是为了…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的nlp预训练模型

目录 给我推荐20个比较流行的nlp预训练模型给我推荐20个比较流行的nlp预训练模型源码给我推荐20个比较流行的nlp预训练模型 BERT (谷歌) GPT-2 (OpenAI) RoBERTa (Facebook) ALBERT (谷歌) ELECTRA (谷歌) XLNet (谷歌/纽约大学) T5 (OpenAI) Transformer-XL (谷歌/香港中文大…

真实世界的人工智能应用落地——OpenAI篇 ⛵

💡 作者:韩信子ShowMeAI 📘 深度学习实战系列:https://www.showmeai.tech/tutorials/42 📘 本文地址:https://www.showmeai.tech/article-detail/414 📢 声明:版权所有,转…

谈谈ChatGPT是否可以替代人

起初我以为我是搬砖的,最近发现其实只是一块砖,哪里需要哪里搬。 这两天临时被抽去支援跨平台相关软件开发,帮忙画几个界面。有了 ChatGPT 之后就觉得以前面向 Googel 编程会拉低我滴档次和逼格,于是全部面向 ChatGPT 编程了。 我…

处理Element 日期选择器el-date-picker 限制时间跨度一年

处理Element 日期选择器el-date-picker 限制时间跨度一年 。 主要通过pickerOptions里的disabledDate来控制禁止选中的日期。实现思想就是,当选中第一个开始日期时,拿到该时间戳计算时间范围,然后控制接下来选中时间在一年以内,超…

elementui 中 DatePicker 日期选择器 设置仅能选今日之前 且展示是上个月到这个月的日期

使用了elementui组件的DatePicker组件,设置了日期选择范围为当前日期后,效果如图,右侧面板是灰色的,使用体验感不太好 而我想要实现的是这种效果:一点击出来,展示的就是上个月到这个月的日期 仔细翻阅了官…

vue+elementui 日期选择器

// 这个日期选择器的规则是开始的日期不能超过当天的日期 // 结束的日期不能超过开始的日期并且只能选开始日期选择的这一年的日期 结束的日期默认年份是开始日期选择的年份<el-form:model"DateTimeModel"ref"DateTimeRef":rules"DateTimeRules&qu…

elementui选择月份范围,限制只能选前后1年范围内

需求&#xff1a; 选中2022-2月之后可选范围为2021-2月~2023-2月&#xff0c;其余的月份禁用 代码&#xff1a; <el-form :model"queryParams" ref"queryForm" :inline"true"><el-form-item label"时间范围"><el-date-…

element plus 限制时间范围选择器,开始日期和结束日期不能超过一年

1.限制开始日期和结束日期不能超过一年 <el-date-pickerclass"date-timeselect"v-model"timeValue"type"daterange"value-format"YYYY-MM-DD"format"YYYY-MM-DD"range-separator"至"start-placeholder"开…

vue2 + elementui 日期时间选择器 禁止选择当前时间之前的日期及时间,并添加相应校验规则

项目里有这样一个需求&#xff1a;文章设置的预发布时间不得早于当前时间&#xff08;包括日期和时分秒时间&#xff09;。 具体实现如下&#xff1a; 1、在日期时间选择其中设置禁止选中&#xff08;包括日期和时间&#xff09; &#xff08;1&#xff09;在html&#xff0…

vue Element ui日期插件的使用设置日期选择范围是当前时间到一年

<li> <p class"input_date"><el-date-pickerv-model"value1"type"date"placeholder"选择日期"prefix-icon" "format"yyyy-MM-dd"value-format"yyyy-MM-dd":picker-options"pickerO…

ElementUI 日期选择器 datepicker选择范围限制

ElementUI 日期选择器 datepicker选择范围限制 在使用 el-date-picker 的时候&#xff0c;经常会对选择的时间进行一定限制&#xff0c;所以今天就总结了一些范围 1、第一步 给 el-date-picker 组件添加 picker-options 属性&#xff0c;并绑定 对应数据 pickerOptions 2、对…

elementUI 日期选择器限制时间范围

elementUI 日期选择器限制时间范围 &#xff08;借鉴或根据自己需求修改&#xff0c;纯用于自己记录使用并学习&#xff09; 产品需求&#xff0c;新建任务的时候&#xff0c;选择一个名称&#xff0c;然后返回该名称的有效日期&#xff0c;只能在有限日期内选择任务的时间 使…

html 手机扁平化范围选择日历控件,ElementUI 日期选择器 datepicker 选择范围限制

在使用elementUI中日期选择器时,经常会遇到这样的需求——对可选择的时间范围有一定限制,比如我遇到的就是:只能选择今天以前的一年以内的日期。 查阅官方文档,我们发现它介绍的并不详细,下面我们就来详细介绍一下: 1.给 el-date-picker 组件添加 picker-options 属性,并…

Pandas+ChatGPT强强结合诞生PandasAI,数据分析师行业要变天了?

大家好,我是千与千寻,可以叫我千寻,我自己主要的编程语言是Python和Java。 说到Python编程语言,使用Python语言主要使用的是数据科学领域的从业者。 Python编程语言之所以在数据科学领域十分火热,源于Python语言的三大数据科学工作包,NumPy,Pandas,SciPy。 以下是三…

Springboot前后端分离国际化实现-chatgpt

前言 Springboot国际化可以帮助使用者在不同语言环境中构建应用程序&#xff0c;这样应用程序可以有效地适应不同语言文化背景下的用户需求。 此外&#xff0c;Springboot国际化也可以方便多语言应用程序重用和维护&#xff0c;从而减少了系统部署的时间成本和维护的费用。 要实…

以 ChatGPT 为代表的「大模型」会是多大的技术革命?如果要发生技术革命需要具备哪些条件?...

AI大模型在具体场景下的多样价值 AI大模型相当于是通过积累大量知识&#xff0c;最后形成的一个有泛化知识的个体。它跟原来传统意义上的小模型之间的差异&#xff0c;就相当于一个经过了大量通用题库训练的大学生&#xff0c;和一个只在特定专业受训练的技校生的差异。 放眼整…

元宇宙场景下的实时互动RTI技术能力构建

元宇宙可谓是处在风口浪尖&#xff0c;无数的厂商都对元宇宙未来抱有非常美好的憧憬。正因如此&#xff0c;许许多多厂商都在用他们自己的方案&#xff0c;为元宇宙更快、更好的实现&#xff0c;在自己的领域贡献力量。LiveVideoStack 2022北京站邀请到了 ZEGO 即构科技的解决方…

STM32的国产替代,盘点下我知道的国产MCU

电子元件涨价和缺货是多少嵌入式工程师的痛&#xff0c;一年内上游厂家晶圆产能告急能有数十次之多。而MCU更是重灾区&#xff0c;且不说国内有超75%的市场都是被国外产品占据&#xff0c;就是本国内的代理和供应商也是漫天要价&#xff0c;而交期更是长达7个月之久&#xff0c…