谷歌语音输入法可以离线识别!
这一次,是谷歌AI团队。就在刚刚,他们为自己的一款手机输入法——Gboard(don 不要和谷歌拼音输入法混淆~):离线语音识别。目前这个新功能只能在自家产品Pixel系列手机上使用。
像素圈以外的广大已经下载或者正在下载途中的人,包括iOS用户,可能要失望了。
他们对这项新功能的配置描述如下:端到端、神经和本地部署的语音识别系统。
在他们最近的论文用于移动设备的流式端到端语音识别,他们提出了一个基于RNN-T (RNN译者)的训练模型。
它非常小巧,可以部署在手机上。这意味着赢了不会有太多的网络延迟或混乱,即使用户离线,这个语音识别系统也总是可用的。该模型始终工作在字符级别,因此即使你说话,它也会一个字符一个字符地输出单词,就像有人在实时打字,并在虚拟键盘上准确地听你说什么。
比如下面两张图是在听写系统中输入同一个句子时的情况:左边是服务器端,右边是本地端。哪边的语音识别体验更好?
总而言之,离线,没有延迟。"这也是谷歌这次亮出的大杀器。
出现延迟是因为您的语音数据必须从手机传输到服务器,然后在解析后返回。这可能需要几毫秒甚至几秒钟。如果语音包在以太网中丢失,将需要更长的时间。
将语音转换成毫秒文本需要相当大的计算能力。这不是听到一个声音然后写一个字那么简单,而是需要理解一个人的意思以及许多与语言相关的语境和其背后的意图。
这个可以在手机上完成,但是这样的话会消耗电池电量。
语音识别模型简史
一般来说,语音识别系统由几个部分组成:将音频段(通常为10ms帧)映射到音素的声学模型,连接音素形成单词的发声模型,以及表达给定模型的语言模型。在早期的系统中,这些组件是独立优化的。
2014年左右,研究人员开始专注于训练单个神经网络,将输入音频波形直接映射到输出句子。通过生成给定一系列音频特征的一系列单词或字形来学习模型,这种序列到序列的方法促进了基于注意力和听-听-听-拼(LAS)模型的诞生。虽然这些模型在准确性方面表现出很大的前景,但它们通常会检查整个输入序列,并且在输入时不允许输出,这是实时语音转录的必要特征。
同时,一种叫做Connectist临时分类(CTC)的技术有助于减少当时识别系统的延迟问题。这对于后来RNN-T架构的创建是一个重要的里程碑,也算是CTC技术的一个概括。
(编辑注:CTC全称connectionist temporary classification,是Graves等人在2006年提出的,用于训练递归神经网络(RNN)来解决具有可变时间序列的序列问题。它可以用于在线手写识别或语音和音频中的音素识别。到目前为止,CTC并不是一个新名词,在工业上的应用已经非常成熟。比如百度最近公布的在线语音识别输入法中,其最新的语音模型也在CTC的基础上融入了注意力等新技术。)
什么是RNN T?
RNN-T是一个没有注意机制的序列对序列模型。与大多数序列到序列模型不同,这些模型通常需要处理整个输入序列(在语音识别中,它是波形)以产生输出句子,RNN-T将连续处理输入样本和流输出符号。
输出符号是字母表中的字符。RNN-T将逐个输出字符,并在适当的位置输入空格。它通过一个反馈回路来执行这个操作,训练反馈模型预测的符号来预测下一个符号。如下图所示。
RNN-T由输入音频样本x和预测符号y表示。预测符号(Softmax层的输出)通过预测网络反馈到模型。
很难有效地训练这样的模型,但随着新开发的训练技术进一步降低5%的单词错误率,其计算强度变得更高。为了解决这个问题,研究人员开发了一个并行实现过程,因此RNN-T损失函数可以在谷歌云TPU v2上大量运行。训练中实现了约3倍的加速。
离线识别
在传统的语音识别引擎中,声学、发声和语音模型被组合成一个大的搜索图,其边由语音单元及其概率来标记。当语音波形呈现给识别系统时,解码器将在给定输入信号的图中搜索具有最高相似度的路径,并读出该路径所采用的单词序列。通常,解码器由基本模型的有限状态转换器(FST)表示。然而,尽管解码技术复杂,但由于生产模型的大小几乎为2GB,因此图搜索仍然很困难。这可以不能通过在手机上托管来实现,所以这种方法需要在线连接才能正常工作。
为了提高语音识别的有效性,研究人员试图将新模型直接托管在设备上,以避免通信网络的延迟和固有的不可靠性。因此,端到端方法不需要在大的解码器图上搜索。相反,解码器包括通过单个神经网络的波束搜索。RN-T与传统的基于服务器的模型具有相同的精度,但前者只有450MB,并且它更智能地使用参数和打包信息。但即使在今天的智能手机,450MB还是占了不少空间。例如,在大型网络中,信号传输可能会很慢。
因此,研究人员通过使用参数量化和混合核技术进一步降低了模型规模。这项技术早在2016年就发布了,在TensorFlow Lite版本中提供了开放的模型优化工具包。与训练好的浮点模型相比,模型量化在运行时提供了4倍的压缩和4倍的加速,这使得RNN-T在单核上的运行速度比实时语音更快。压缩后,最终的模型大小只有80MB。
什么效果如何?
在谷歌公布了这项新功能后,TechCrunch评论说鉴于谷歌其他产品离线工作,你会离线写邮件吗?当然,在网络条件不好的情况下,这个新的应用功能可能会解决用户的痛点,但显然,这还是有点讽刺的。"
这一度在HackerNews上吸引了许多用户的评论,他们也将一些矛头指向了所谓的离线功能:
"离线功能不是主要的吸引力,但正如本文所提到的,延迟问题的减少是巨大的。他们可能没有提到的是对隐私问题的影响。但是,用户一般不会不能离线处理事情,但是如果需要稳定的包流来回,连接网络也是一个很麻烦的问题。"
不过,用户在尝试之后,还是很乐观的:我刚刚把我的Pixel1代换成了飞行模式,尝试了语音输入。果然,它的离线工作速度非常快!这个印象很深刻(我之前试过,以前它只理解一些特殊短语。)
有多少好的方法可以实现这个功能,但我认为任何应用都可以从发音的这种改善中受益。"
为此,营长还特意下载了Gboard、讯飞、百度三种语音输入法,看看它们在飞行模式下的效果如何。
第一轮
Gboard:目前非像素手机中离线语音不可用,部分机型不甚至不支持语音。不过打字还是丝滑流畅。
第二轮
科大讯飞:离线语音包可以下载,但是在正常网络条件下语音识别的速度和准确率还是挺高的。
第三轮
百度:也可以下载离线语音。没有网络连接的情况下,语音识别效果还是可以的。
我不不知道国内经常用讯飞和百度输入法的朋友。看到这个新闻你有什么想法?欢迎信息。
标签:语音模型离线