谷歌同声翻译Translatotron原理
背景介绍
作为中国人,学好英语这件事从小学开始就让人苦恼,近些年随着AI的快速发展,语言差异是否会缩小甚至被消灭成了热门话题。在5月15日,谷歌AI在博客平台发出一篇文章,正式介绍了一款能保留原声的“同声传译”黑科技,消息一出,迅速席卷网络,为科技发烧友带来了更多曙光,下面,让我们来揭开这个叫做“Translatoron”的神秘面纱。
Translatotron的出现
目前市面常用的语音翻译产品的翻译过程包含三个步骤,首先将语音转换为文字,再由机器将文字转换为目标语言文字,最后将目标语言的文字转化为语音(文字转语音全称Text-To-Speech,也叫TTS)。
而谷歌的Translatotron有很大不同,它通过某种手段实现了语音到语音的直接转译,避免了上述的三个步骤。除此之外,它还有一些其它的优势,比如更快的推理速度、更容易识别不需要翻译的名称及专业名词等,最牛的是它可以保留原说话人的声音特征,做到原声输出其它语言,幻想一下用自己的声音说出了连本人都听不懂的外语,是不是有点像《流浪地球》中的同声翻译,多刺激啊,在此向大刘致敬!
Translatotron的原理
其实端到端的语音翻译在2016年就出现了,当时研究者们发现用“序列到序列模型”来做“语音到文字”的翻译可行性很高,到了2017年,研究者们证明出它果然很吊,但是这还不够,Translatotron的出现又向大家证明了“序列到序列模型”不仅可以转文字,还可以不依赖任何中间文本,直接帮你转为语音。
上面部分的名词有些含糊不清,这里来解释一下,首先是端到端学习,英文名为end-to-end,它就像一个黑盒子,人们把数据丢进去后只关心结果是否与期望的结果一致,不关心中间的实现过程。这个黑盒子的实现原理是,当结果和期望的结果出现误差后,它会将误差反传回训练模型的每一环节,让它们根据误差来自我调节,直到结果与预期相符为止。
而序列到序列模型,英文为Sequence to Sequence,它是端到端理念的一种实现框架,最早出现于Bengio在2014年的论文,Bengio是蒙特利尔大学的教授,他与另外两位朋友被AI领域的人戏称为“加拿大黑手党”。
“序列到序列”模型的目的是“将一个领域(比如中文)的序列转化为另一个领域(比如英文)的序列”,它是通过联合两个循环神经网络(RNN)来实现的,而联合的这种结构又被叫做编码-解码(Encoder-Decoder)结构,结构的两端支持多种数据类型,比如文字、语音、图像、视频等,非常适用于机器翻译。
Translatotron正是利用了图像这种数据类型,它通过声谱图作为输入,再生成出目标语言的声谱图,然后通过一个叫做Vocoder的语音编解码器(用于分析和合成用于音频数据压缩,多路复用,语音加密,语音转换等的人类语音信号)将新生成的光谱图转换为时域波形(一种表达信号与时间关系的波浪形状)。另外,它还可以选择使用一个编码器在合成翻译语音中维护原来的语音特征。
这项研究是由谷歌大脑、谷歌翻译和谷歌语音团队共同完成的,由于目前的训练数量较少,Translatotron所展示出的翻译质量以及原声匹配度没有预想中那么好,但随着更多数据的训练相信会有非常光明的前景。感兴趣的同学可以去官方博客了解一下。
谷歌同声翻译Translatotron原理的更多相关文章
- 谷歌验证器的原理及JS实现
阅读本篇文章你可以了解到谷歌验证器的实现原理,并且可以自己使用node.js实现支持谷歌验证器的两步验证. 这两年发现身边的很多应用和网站纷纷支持两步验证,并且呼吁用户使用两步验证. 并且发现,除了A ...
- Chrome谷歌页面翻译增强插件开发
最近想做一个Chrome的插件(看别的博客说其实叫插件不准确,应该叫拓展,大家叫习惯了就按习惯的来吧).一开始咱先直接看了Chrome开发(360翻译)和chrome extensions(这个官方的 ...
- PC端免费高效的同声翻译
疫情期间上网课,对于英语听力较差或者需要观看英文视频,但实际上并没有双语字幕的这种情况下需要找一个实时的翻译工具.虽然说手机上此类软件比较多,但电脑上没有特别合适的应用可以做为一个免费实时翻译.哪怕是 ...
- 自己动手写谷歌API翻译接口
可以看到,利用GET请求方式,带入某些参数,就会返回一个json数组,QueryString参数如下: 同样的,我们只需要传入这三个参数,就可以获得我们想要的翻译内容,公开方法,代码如下. ...
- Mesh R-CNN 论文翻译(原理部分)
毕设做Mesh R-CNN的实现,在此翻译一下原论文.原论文https://arxiv.org/pdf/1906.02739.pdf. 摘要 二维感知的快速发展使得系统能够准确地检测真实世界图像中的物 ...
- Java跨平台原理
此篇博文主要源自网络xiaozhen的天空的博客:http://xiaozhen1900.blog.163.com/blog/static/1741732572011325111945246/ 1.是 ...
- 【转】Java跨平台原理
原文地址:http://www.cnblogs.com/gw811/archive/2012/09/09/2677386.html 1.是么是平台 Java是可以跨平台的编程语言,那我们首先得知道什么 ...
- 用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过 ...
- .NET开发笔记(二十三) 谷歌地图下载
关于如何将地球经纬度坐标系统转换成程序中常用到的平面2D坐标系统,网上的文章很多,参考http://www.cnblogs.com/beniao/archive/2010/04/18/1714544. ...
随机推荐
- Optimistic concurrency control
Optimistic concurrency control https://en.wikipedia.org/wiki/Optimistic_concurrency_control Optimist ...
- HTML——input
一个简单的HTML表单,包含两个文本输出框和一个提交按钮: <form action="form_action.asp" method="get"> ...
- maven采用tomcat7启动项目
1.maven 集成tomcat7启动项目 <plugin> <groupId>org.apache.tomcat.maven</groupId> <arti ...
- Linux 设备和模块的分类
概念:在Linux系统中,所有设备都被映射成 [设备文件] 来处理,设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作. 一.设备类型 整理自:(相当不错,建议有时间看下原文) <第一章 ...
- git 生成patch和应用patch【转】
本文转载自:http://www.jianshu.com/p/814fb6606734 1.在git源码目录下执行 1.1.两个commit间的修改(包含两个commit) git format-pa ...
- Ubuntu apt-get update 失败【转】
本文转载自:http://www.jianshu.com/p/0de2b5717ce8 1 $ sudo apt-get update 报了一堆错误: Err http://cn.archive.ub ...
- java--List判断是否为空
list.isEmpty()和list.size()==0 没有区别 isEmpty()判断有没有元素,size()返回元素个数 如果判断一个集合有无元素,用isEmpty()方法. 这就相当与,你要 ...
- socket,获取html,webservice等,支持chunked,gzip,deflate
1. [代码][C#]代码using System;using System.Collections.Generic;using System.Linq;using System.Net.Socket ...
- 2013各大IT公司薪资标准
以此鼓励自己 :http://jinhua.19lou.com/forum-874-thread-115901362964023509-1-1.html 以下三个是老大级别的公司 [微软] 研 ...
- 一次php脚本出现段错误(Segment fault)的经历
今天在一台新服务器上cli运行一个php脚本,出现了Segment fault错误,第一感觉应该是某个扩展安装有问题 这段php代码是调用soap接口,查看soap扩展没啥问题,一时不知道是啥原因. ...