rnn中文语音识别java_语音识别算法阅读之RNN-T-2018

论文:

EXPLORING ARCHITECTURES, DATA AND UNITS FOR STREAMING END-TO-END SPEECH RECOGNITION WITH RNN-TRANSDUCER,2018

CTC的一个问题在于,其假设当前帧的输出与历史输出之间的条件独立性;RNN-T引入预测网络来弥补CTC这种条件独立性假设带来的问题

c69e5ecaeddd94e5f7bc376f69601d82.png

45e9111d45d317925db1747a056a59f1.png

4e53ef817808458f1896e0e9c510367d.png

a0005349e80b5fe9d644dd4ee31c6fcf.png

思想:

1)针对CTC网络的条件独立性假设(当前时刻输出与之前的输出条件独立),引入语言模型预测网络分支,通过联合前馈神经网络将二者结合,在预测最终输出时能够同时利用声学和语言特征信息;

2)在grapheme作为建模单元基础上,引入了词组单元wordpieces,能够捕获更长的文本信息,有利于减少替换错误;

模型:

CTC网络: 采用多级任务CTC,建模单元包括音素phoneme、字母grapheme、词条wordspieces,音素CTC结构采用5层LSTM(700cell)、字母CTC采用10层LSTM(700cell)、词条CTC采用12层LSTM(700cell);此外,在字母LSTM输出时,通过时域卷积(kenel size=3)来缩短时间片长度,减少参数量,加速训练的同时对效果不造成影响

预测网络: 对于字母建模单元,预测网络采用两层LSTM(1000cell);对于词条单元,因为词条标签数目较多,在LSTM之前引入一个较短的embedding层,维度为500

联合网络:采用前馈神经网络结构,即一层全连接层(700)+softmax+CTC损失

27425aecb4ac5de707df9fb71de6da2a.png

细节:

输入特征:声学特征输入特征80logfbank+一阶差分+二阶差分=240维;语言模型特征采用词组词典对应的one-hot向量

训练数据采用[2]中的数据增强,添加噪声和混响,每个样本得到20个左右的混响或噪声增强数据

CTC网络预训练采用多级(phonemes、graphemes、wordspieces)多任务CTC目标损失/预测网络预训练采用交叉熵损失/联合网络采用词条单元wordspieces CTC目标损失

音素级CTC的输出单元个数为61个phoneme+blank;字母级CTC的输出单元个数为44grapheme+blank;词条级CTC的输出单元个数为1000~30000有效词条+blank

2e05bcf39e16002589398b37f96dee47.png

grapheme

16b28957889035f7a8807e33bfa92dc1.png

wordspiece

解码:beam search,输出单元为grapheme beam width=100;输出单元为词条时beam width=25

训练:

声学模型训练数据集:18000小时voice-search、voice-dictation+混响和噪声增强;语言模型训练数据集:10亿句文本数据,来源于voice-search、voice-dictation、匿名化google搜索等日志;测试集15000voice-search utts+15000voice-dictation utts

CTC网络和预测网络采用预训练进行初始化,联合网络随机初始化

grapheme beam width=100,wordpieces beam width=25

预测:当前步输出yu = p(y|xt,yu-1),如果yu为non-blank,那么下一步预测输出为p(y|xt,yu),否则下一步输出为p(y|xt+1,yu-1);当最后一个时间步T输出为blank时终止

实验:

论文中RNN-T取得了接近state-of-the-art的效果WER :voicesearch 8.5% voice-dictation 5.2%

CTC网络和语言模型预训练,均有助于提升效果

提升LSTM深度从5层到8层,带来10%相对提升

wordspiece RNN-T相对于grapheme RNN-T实际效果更好,原因在于wordspiece作为输出单元能够降低替换错误

grapheme LSTM输出,通过时域卷机操作(kernel size=3),在不影响实际效果的情况下,有效减少wordpiece输入的时间片维度,节省wordpiece LSTM参数训练和解码的时间

wordspiece作为输出单元时,相对于grapheme,语言模型困惑度更低

增加wordspiece输出单元个数1k->30k,有助于进一步降低语言模型困惑度,提升实际效果,但也相应的增大了参数量

5e33fc41dfd0b56ca72600e8e51e4d4a.png

89be6b9049a656a28b080f77592b594c.png

环境:

kaldi特征提取+CMVN

pytorch模型构建及训练

数据集:aishell1 178h train/dev/test

输入:3*left-context+current frame+0*right-context=4*40=160维

模型:

CTC网络4*Bi-LSTM(320)

预测网络:1*LSTM(512)

联合网络:1*full_connect(512)+tanh+softmax(4232)

ac5e56239a37654779b8496fc4900994.png

训练:

SGD

max_gram=200

lr=0.0001

momentum=0.9

weight_ratio=0.5

c16d5ac75362c8c7caa1490a0c642bb5.png

解码:贪心搜索,每一个时间步取最大概率对应的输出

效果:aishell dev:10.13/test:11.82

a26fcf00f177ff9df3f6d6fa7a3f9317.png

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

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

相关文章

java数字不等于_java – 仅使用set中的数字查找等于或大于给定目标的总和

首先让我们将这个问题简化为整数而不是实数,否则我们将无法获得快速优化算法.例如,让我们将所有数字乘以100,然后将其四舍五入为下一个整数.所以说我们有项目大小x1,…,xn和目标大小Y.我们想要最小化该值k1 x1 … kn xn – Y在这种条件下(1) ki is a non-positive integer fo…

Mybatis 系列2-配置文件

【Mybatis 系列10-结合源码解析mybatis 执行流程】 【Mybatis 系列9-强大的动态sql 语句】 【Mybatis 系列8-结合源码解析select、resultMap的用法】 【Mybatis 系列7-结合源码解析核心CRUD配置及用法】 【Mybatis 系列6-结合源码解析节点配置objectFactory、databaseIdProvid…

python中restful接口开发实例_Python RESTful接口开发02

什么是RESTfulRESTful是一种设计思想,一种风格。RESTful主要包括 资源 和 对资源的操作。资源: 对实体的抽象,图书、音乐、电影、学生等都属于资源。对资源的操作: HTTP 方法 行为 示例 GET 获取资源的信息 http://example.com/…

Storm环境搭建(分布式集群)

作为流计算的开篇,笔者首先给出storm的安装和部署,storm的第二篇,笔者将详细的介绍storm的工作原理。下边直接上干货,跟笔者的步伐一块儿安装storm。 原文链接:Storm环境搭建(分布式集群) Step1…

php 红包算法,PHP语言:实现微信红包拆分算法

本文主要向大家介绍了PHP语言:实现微信红包拆分算法,通过具体的内容向大家展示,希望对大家学习php语言有所帮助。 修复最后一个红包输出未保留2位数 修复领取的红包金额低于最小红包限制* 红包分配算法** example* $coupon new Coupon(…

java 强制向上转型,Java 转型(向上或向下转型)详解及简单实例

在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型。向上转型我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向于使用抽象概念…

复习Python DB-API

一、python的DB-API 1.Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同 的方式操作各数据库。 Python DB-API使用流程: 1. 引入API模块。 2. 获取与数据库的连接。 3. 执行SQL语句和存储过程。 4. 关闭数据库连接。 2.Python操作mysql 安装包&am…

java se程序设计课后答案,JAVA SE程序设计及实践

实践3 类与对象实践3.4修改Menu类,增加显示普通员工、经理、管理员对应的功能菜单的方法。package com.dh.hrmanager.util;import java.util.Scanner;public class Menu {/*** 返回登陆菜单*/public void showLoginMenu() {System.out.println("\n\n\t\t欢迎进…

个人空间风格模版php,home.php这个页面风格模板在哪里修改?答案:space_home.html...

/template/default/home 空间模块模板目录editor_image_menu.htmfollow_feed.htm 广播首页follow_feed_li.htm 广播数据列表follow_user_header.htm 广播用户数据统计invite.htm 邀请模板magic_call.htm 道具-点名卡magic_detector.htm 道具-探测器magic_doodle.htm 道…

18.QT-QPlainEdit 信号与槽

QPlainEdit编辑功能 Public Slots void appendHtml ( const QString & html ) void appendPlainText ( const QString & text ) void centerCursor () void clear () void copy () void cut () void insertPlainText ( const QString & text ) void paste () void …

VS生成Cordova for Android应用之Gradle

VS生成Cordova for Android应用之Gradle 原文:VS生成Cordova for Android应用之Gradle一、Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。 …

进一法整数php,进一法取整、四舍五入取整、忽略小数等的取整数方法大全

PHP取整数函数常用的四种方法,下面收集了四个函数;经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intvalPH…

pjax转发

pjax几大特点: 1、异步(ajax) 2、地址栏改变路径 3、实现前进和后退back和forword 如何解决:地址变了之后,万一F5刷新的问题,主要是通过后台判断是否为pjax请求,是的话做个标志,在前…

php全局cors,PHP开启CORS - slagga的个人页面 - OSCHINA - 中文开源技术交流社区

php后台响应头部代码//json头header("Content-type: application/json");//跨域header("Access-Control-Allow-Credentials: true");header("Access-Control-Allow-Origin: 跨域URL");//CORSheader("Access-Control-Request-Methods:GET, P…

嘻嘻

今天我们来聊一下如何减肥? 其实我也不知道,嘻嘻~ 开个玩笑 好了,今天我们继续来学习新的知识。 在前两篇文章中,我们接触到了索引的概念,今天我们要对索引进行一个拓展。首先我们先来看一下下面这段代码: …

mysql :完整性约束

---恢复内容开始--- 一:介绍 约束条件与数据类型的宽度一样 ,都是可选参数 作用,用于保证数据的完整性和 一致性 主要分为: primary key (pk) 标识该字段为该表的主键, 可以唯一的标识记录 foreign key (fk…

php htts cookies,Http和Https下的cookie的写入问题

session和cookie是不一样的session存储在服务器,cookie存储在客户端设置cookie:function setcookie ($name, $value null, $expire null, $path null, $domain null, $secure null, $httponly null) {}获取cookie:$_COOKIE[$sCookieName];题主的写法只是操作了服务器端的…

断言NSAssert的使用

NSAssert()的定义是 #define NSAssert(condition, desc) condition是条件表达式,值为yes或者no,在OC中规定0为假,非0就为真。 desc为异常描述,为NSString类型。 当condition为yes时程序继续运行; 当condition为no时程序…

五维图matlab,五维立体图,怎么画五维图(即以五边形反映各项水平)

一维、二维、三维、四维、五维分别是什么?线是一维的,参数是点 面是二维的,参数是线 体是三维的,参数是面 以此类推,以体为参数构成的空间就是四维空间,通常理解为时间,从很多科幻小说中可以看到…

java 做项目踩坑,web项目踩坑过程

sql函数设计:一开始本来是直接用Java的jdbc直接传输操作语句的。但后来学了存储过程发现存储过程可以提高不少的效率。就重构了自己对数据库的操作代码。包括:开启,查找,修改,关闭。开启:直接使用的构造函数…