
2017年6月毕业于中国科学技术大学语音及语言信息处理国家工程实验室,获博士学位。研究领域主要包括语音识别,自然语言理解,机器学习算法等,提出了FSMN、HOPE、FOFE等模型。
本文作者:镭铭,谵良 DFSMN模型是语音识别中一种先进的声学模型,语音识别中的声学模型是语音识别技术中的核心所在。具体来说,声学模型是根据输入语音进行发音可能性的识别,结合语言模型、解码器,就构成了完整的语音识别系统。本次开源的DFSMN模型,是阿里巴巴的高效工业级实现,相对于传统的LSTM、BLSTM等声学模型,该模型具备训练速度更快、识别更高效、识别准确率更高和模型大小压缩等效果。 一、采用DFSMN模型的产品 那么这个模型对普通人来说意味着什么呢?我们从研发团队获得的最新消息,即日起,阿里云所有公有云、专有云用户都可以享受到这个技术所带来的优势。在2017年的云栖大会上,阿里巴巴公开了关于语音识别声学模型的一个最新的技术进展,即这次开源的DFSMN技术。DFSMN模型技术是阿里巴巴语音识别的基础能力之一,在这些基础能力之上,阿里巴巴构建了一系列智能语音应用。 在法庭庭审识别、智能客服、视频审核和实时字幕转写、声纹验证、物联网等多个场景成功应用。全国有近300家法院和超过一万家法庭在使用ET,每年有超过1.2亿次客服电话由ET协助人类接听。 在传统语音交互产品方面,阿里云智能语音交互研究的技术平台能够精准转换用户的语音为对互联网内容和服务的意图,触达手机、IoT设备、互联网汽车、电视、智能音箱等各类终端,如与斑马网络、上汽合作的的荣威互联网汽车、与海尔合作的人工智能电视等。 在下一代人机交互产品方面,已经落地语音售票机于上海地铁让市民使用;在前不久的2018云栖大会武汉峰会上,使用该技术的智能语音点餐机与真人收银员进行人机PK,人工智能收银员用49秒钟时间点了34杯咖啡,而对垒的人类收银员用时两分半完成。 二、如何接入阿里云语音识别服务 对于开发人员来说,如何接入DFSMN语音识别服务,即阿里云语音识别服务呢?具体可以参考两个页面,分别是: 1. 智能语音交互产品首页 https://data.aliyun.com/product/nls 2. 智能语音交互文档 https://help.aliyun.com/product/30413.html 下面,我们简单的为大家介绍一下接入流程: 1. 申请开通智能语音服务 (1)Â Â 进入阿里云官网,注册阿里云账号。若已有阿里云账号,请看下一步。 (2)Â Â 到“智能语音交互服务”页面,点击『立即开通』。 (3)Â Â 在跳转后的页面,点击『立即购买』,购买语音服务。实际不需付费,目前公有云用户可免费使用不超过10路并发。 (4) 在数加-Access Key页面创建并获取您的Access Key ID 和 Secret。您可以使用它们调用智能语音服务。 2. 账号安全的最佳实践:上面创建的Access Key对应您的主账号,有权使用所有您主账号上开通的服务,就像Linux系统中的root用户。建议关注安全性的客户不要直接使用这个Key,而应该在RAM系统创建子账号,使用子账号的Access Key访问语音服务。具体操作步骤如下: (1) 访问RAM子账号管理页面 (2) 点击右上角“新建用户”按钮,在弹出的对话框中填写子账号用户名,其他为非必填项 (3) 勾选底部“为该用户自动生成AccessKey”复选框,点击“确定按钮” (4) 在新弹出的对话框中点击“保存AK信息”,把该子账号的Access Key ID和Secret信息保存到本地。注意:这是查看和保存 Access Key Secret的唯一机会 (5) 下面就可以使用此 Key 调用智能语音服务了 3. 语音识别服务下的”一句话识别”服务支持的app_key如下表,选择“社交领域”的app_key为nls-service。 一句话识别 app_key 语音数据格式 领域 nls-service 16kHz采样 16bit 社交聊天 nls-service-streaming 16kHz采样 16bit 社交聊天 nls-service-tv 16kHz采样 16bit 家庭娱乐 nls-service-shopping 16kHz采样 16bit 电商购物领域 nls-service-care 16kHz采样 16bit 智能客服服务领域 注: (1) “SDK支持的结果返回方式”式包括“非流式”和“流式”两种模式,“非流式”简单来说就是用户整句话说完后返回识别结果,“流式”模式下用户一边说话一边返回识别结果。 (2) “一句话识别”支持的领域包括:社交聊天、家庭娱乐、电商购物、智能客服等。用户可针对具体的使用场景选择对应领域的app_key。 4. 下载JAVA SDK和DEMO,开始语音识别。具体SDK调用方式和demo可以参考 https://help.aliyun.com/document_detail/30414.html?spm=a2c4g.11186623.6.540.UIYqFJ 5. 鉴权请求和具体方式可以参考 https://help.aliyun.com/document_detail/54528.html?spm=a2c4g.11186623.6.541.6cm5Ah 6. 除了语音识别服务之外,阿里云智能语音交互还支持关键词检测和语音合成等服务,具体接入方式也可以参考智能语音交互的产品页面或文档页面。 三、如何自己训练DFSMN声学模型 这里我们介绍如何利用阿里巴巴开源的DFSMN代码,搭建一个基于DFSMN的语音识别系统。 Step1. 训练数据下载 目前开源的流程脚本是以LibriSpeech数据库为例子的。Librispeech是一个一千小时的免费开源的英文数据集。下载地址:http://www.openslr.org/12/ 可以将这些文件下载都本地一个data目录下,然后解压缩。其中train-clean-100,train-clean-360,train-clean-500会合并组成一个960小时的训练集。dev-clean 和 dev-other用于指导训练调参。test-clean和test-other 是两个测试集。关于Librispeech数据库的详细描述可以参考这篇论文:"LibriSpeech: an ASR corpus based on public domain audio books", Vassil Panayotov, Guoguo Chen, Daniel Povey and Sanjeev Khudanpur, ICASSP 2015。 Step2. 训练代码的下载和编译 我们提供了两种开源代码形式:1)github-project:基于kaldi新建的一个分支,添加了DFSMN相关的代码;2)github-patch:将相关的代码改动编成一个补丁包。大家可以选择其中的任意一种方式去获得DFSMN的代码和相关实验脚本。 方法一、Github Project 工程的地址:https://github.com/tramphero/kaldi 工程下载:git clone https://github.com/tramphero/kaldi Kaldi中文手册:https://shiweipku.gitbooks.io/chinese-doc-of-kaldi/content/ 方法二、Github Patch 我们基于官方kaldi的"04b1f7d6658bc035df93d53cb424edc127fab819"版本添加的DFSMN相关的改动,然后将这些改动编译成一个PATCH包。PATCH的地址:https://github.com/alibaba/Alibaba-MIT-Speech 这样做的好处是不同的研究人员可以将这个PATCH下载到自己的kaldi分支,然后把PATCH中的改动添加到自己当前的kaldi里。具体的命令是: #Take a look at what changes are in the patch git apply --stat Alibaba_MIT_Speech_DFSMN.patch #Test the patch before you actually apply it git apply --check Alibaba_MIT_Speech_DFSMN.patch #If you don’t get any errors, the patch can be applied cleanly. git am --signoff < Alibaba_MIT_Speech_DFSMN.patch Step3. 模型训练 获得了数据和训练工具并且编译以后,我们可以利用开源的脚本训练模型,脚本所在的目录: kaldi/egs/librispeech/s5/run.sh. run.sh可以完全整个训练流程,不过需要注意的是需要在一开始配置下载的数据路径。 脚本的前面都是官方提供的前端数据处理,GMM-HMM训练等流程。关于DFSMN的训练在跑完这些官方流程以后可以通过如下的命令进行: 这里我们提供了3组不同的DFSMN配置。DFSMN_S, DFSMN_M, DFSMN_L对应的模型大小分别为9MB,21MB,30MB。目前开源的脚本以DFSMN_S为例子。local/nnet/run_fsmn_ivector.sh脚本是DFSMN相关的训练脚本。主要包含三部分:1)CE训练;2)生成alignment和lattice;3)smbr训练。通常我们只需要观察CE训练的模型就可以了。CE训练阶段,利用单个M40 GPU 将所有数据过一遍需要的训练时间大致需要6个小时,模型会进行10次迭代。所以单机训练只需要不到3天的时间就可以训练得到一个1千小时数据训练的声学模型。 我们提供的流程是标准的960小时的训练集的任务。通常这个任务可以通过进行数据变形(speed-perturbed and volumn-perturbed)将训练集扩展到3千小时左右。我们实验采用多几多卡并行训练,得到了一个训练结果,相应的结果在kaldi/egs/librispeech/s5/RESULTS文件里作为一个参考性能。
编者:今年的INTERSPEECH于8月20日至24日在瑞典的斯德哥尔摩顺利召开,众多的高校研究机构和著名的公司纷纷在本次会议上介绍了各自最新的技术、系统和相关产品,而阿里巴巴集团作为钻石赞助商也派出了强大的阵容前往现场。从10月25日开始,阿里iDST语音团队和云栖社区将共同打造一系列语音技术分享会,旨在为大家分享INTERSPEECH2017会议上语音技术各个方面的进展。本期分享的主题是远场语音识别技术(完整视频传送门),以下是本次分享的主要内容: 1.语音识别技术简介 1.1 什么是语音识别 语音识别(Automatic Speech Recognition,ASR)所要解决的问题是让计算机能够"听懂"人类的语音,将语音转化成文本。语音识别是实现智能的人机交互的前沿阵地,是完全机器翻译,自然语言理解等的前提条件。语音识别的研究起源于上世纪的50年代,此后经过无数学者坚持不懈的努力,从最初的基于孤立词的小词汇量语音识别系统到目前的基于大词汇量的连续语音识别识别系统,语音识别技术取得了显著的进展。特别是近年来随着大数据时代的到来,以及深度神经网络在语音识别中的应用,语音识别系统的性能获得了显著的提升。语音识别也逐步走向实用化和产品化,越来越多的语音识别智能软件和应用开始走入大家的日常生活,例如语音输入法,智能语音助手,车载语音交互系统等等。 1.2 语音识别系统框架 图1. 语音识别的数学公式表示 图2. 语音识别系统结构框图 语音识别的目的是对给定的波形序列,可以得到相应的单词或者字符序列。因此语音识别可以被看作是一个信道解码或者模式分类问题。统计建模是目前主流的语音识别方法。基于统计建模框架,对于给定语音波形序列O,我们可以采用贝叶斯决策的最大后验概率(Maximum A Posteriori,MAP)估计得到最优的输出序列W*,公式表达如图1所示。其中条件概率P(O|W) 表示模型生成观察序列的概率,对应语音识别系统的声学模型(Acoustic Model,AM)。似然值P(W)则表示序列W出现的一个先验概率,称之为语言模型(Language Model,LM)。如图2是一个标注的语音识别系统的结构框图,其主要由前端处理,声学模型,语言模型,解码器四个模块组成。解码的过程主要是利用所训练的声学模型和语言模型,搜索得到最佳的输出序列。 1.3 声学模型 声学模型的任务是计算P(O|W),即给模型产生语音波形的概率。声学模型是语音识别系统的重要组成部分,它占据着语音识别大部分的计算开销,决定着语音识别系统的性能。传统的语音识别系统普遍采用的是基于GMM-HMM的声学模型,其中GMM用于对语音声学特征的分布进行建模,HMM则用于对语音信号的时序性进行建模。2006年深度学习兴起以后,深度神经网络(Deep Neural Networks,DNN)被应用于语音声学模型。2009年,Hinton及其学生奖前馈全连接深度神经网络应用于语音识别声学建模[1],在TIMIT数据库上基于DNN-HMM的声学模型相比于传统的GMM-HMM声学模型可以获得显著的性能提升。DNN相比于GMM的优势在于:1)DNN对语音声学特征的后验概率进行建模不需要对特征的分布进行去分布假设;2)GMM要求对输入的特征进行去相关处理,而DNN可以采用各种形式的输入特征;3)GMM只能采用单帧语音作为输入,而DNN则可以通过拼接相邻帧的方式利用上下文的有效信息。2011年,DengLi等提出基于CD-DNN-HMM[2]的声学模型,在大词汇量连续语音识别任务上取得成功,相比于传统的GMM-HMM系统可以获得超过20%的相对性能提升。基于DNN-HMM的语音声学模型开始取代GMM-HMM成为主流的声学模型。此后大量的研究人员投入到基于深度神经网络的语音声学建模研究中,语音识别取得了突破性的进展。 2.INTERSPEECH 2017 论文介绍 基于深度神经网络的语音识别声学建模在过去几年取得了很大的进展,不同的网络结构以及优化策略极大提升了声学模型的性能。以下则选择本次interspeech相关的两个声学模型的最新研究点进行介绍:1)Very deep Networks;2)End-to-end ASR systems。 2.1 Very Deep Networks for Acoustic Modeling 长短时记忆单元(Long Short Memory Networks,LSTM)是目前在声学模型中广泛应用的一种循环神经网络(Recurrent Neural Networks,RNN)结构。相比于普通的RNN,LSTM通过精心设计的门结构来控制信息的存储,输入和输出,同时可以一定程度上避免普通RNN的梯度消失问题,从而LSTM可以有效的对时序信号的长时相关性进行建模。作为声学模型的LSTM通常包含3-5个LSTM层,但是直接堆积更多的LSTM层构建更深的网络往往不会带来性能的提升,反而会由于degradation problem[3]使得模型的性能更差。 针对如何优化非常深的网络,最近有两种结构被提出来,称之为Highway Networks[4] 和ResNet[3]。这两种结构都通过在非线性变换的输出额外添加一个线性成分的方式,使得网络训练过程梯度可以更好的传递,避免由于网络太深导致的梯度消失问题。不同之处在于Highway Networks通过“门”来控制输出中的线性和非线性成分的比重,而ResNet则是更加直接的直接加上线性成分。实验表明两者都可以优化非常深层的网络的训练。Residual Networks在图像分类任务上获得了很大的成功。 关于Highway Networks 和ResNet一开始都是在图像分类任务上进行验证的,而且采用的卷积神经网络(Convolutional Neural Networks,CNN)。但是由于语音信号时序建模非常重要,所以最流行的模型还是LSTM。但是通常声学模型使用的LSTM一般只包含3-5个LSTM层。所以进一步的一些研究探索借鉴Highway Networks 和ResNet,优化LSTM的结构,分别提出了Redisual-LSTM[5],Highway-LSTM[6]和Recurrent Highway Networks (RHN) [7]用于语音声学建模。下面我们结合结合论文介绍相应的网络结构以及实验结果。 Paper1. Residual LSTM: Design of a Deep Recurrent Architecture for Distant Speech Recognition Residual-LSTM通过在普通的LSTM的输出层之间添加一个skip connection,如上图红色框框中的公式表达。这样可以将底层的输出直接添加到高层,如果低层的输出层和高层的输出层节点数目相同,可以进一步采用和ResNet相同单位映射。实验室在100小时AMI会议数据库进行的验证,实验结果如下: Paper2. Highway-LSTM and Recurrent Highway Networks for Speech Recognition Highway-LSTM通过在相邻的LSTM层的cell之间建立一个线性连接,通过一个线性变换将底层cell中的表达添加到高层cell中。同时线性变换是受一个gate控制,gate的值是单前层的输入,单前层cell中表达,以及后一层cell中前一时刻的输出的一个函数。进一步的该论文中提出另一种深层的网络结构用于声学建模,称之为为ecurrent Highway Networks (RHN)。RHN的隐层采用如上图的Recurrent Highway Layer构成。 称 该论文是在一个12500小时的google voice search 任务上进行验证的。实验首先对比了普通的LSTM,Residual-LSTM,Highway-LSTM在该任务上的性能。从上图Exp1的实验结果可以看出在可比的配置下,Highway-LSTM(HW-LSTM)相比于Redidual-LSTM可以获得更好的性能。Exp2则对比了网络大小(20M,30M)情况下,HW-LSTM性能和隐层数目的关系,从结果上看通过Highway可以成功训练10层的网络,而且相比于5层网络可以获得一定的性能提升,但是进一步增加网络的隐层数目,也会出现性能的下降。 Exp3则对比了不同配置Highway-Recurrent Highway Networks(HW-RHW)再改任务上的性能。功过使用RHL层可以成功训练非常深的网络,最终深层的HW-LSTM和HW-RHW可以获得差不多的性能,并且相比于基线LSTM都有一定的提升。 对比以上两篇论文的实验结果,我们发现在两个不同的任务集上,关于Highway-LSTM和Residual-LSTM的性能对比结论刚好是相反。这和实验的任务集相关,HW-LSTM通过gate来控制网络中非线性变换和线性变换的成分。通常对于更加困难的任务更多非线性变换的模型往往具有更强的建模能力。所以google的论文在1.25万小时的任务上HW-LSTM相比于Residual-LSTM具有优势。这点我们可以进一步通过观察HW-LSTM的各个层的transform gate的值来分析。从上图我们发现transform gate的值随着训练的进行值越来越大,说明了网络更趋向于选择非线性变换成分。 2.2 End-to-End ASR System 目前大多数语音识别系统到采用NN-HMM的混合系统。需要训练一个声学模型,语言模型,然后在结合词典进行解码。最新的一个研究热点是研究端到端的语音识别系统,希望可以去除HMM,直接从声学特征输入就可以得到识别的词序列。其中具有代表性的是CTC模型(Connectionist Temporal Classification)和基于Attention的Encoder-decoder模型。 Encoder-Decoder最早是应用于机器翻译领域[8]: 通过一个encoder对序列信息进行编码得到一个向量表达,然后作为decoder的输入。Decoder则是一个预测模型,利用历史输出和encoder得到的信息去预测输出。但是Encoder-Decoder框架在翻译很长的句子时候由于遗忘问题效果并不理想。一个改进的模型是引入attention机制。Attention机理是利用网络中的一些表达从Encoder中寻找和单前预测输出有关的一些输入,关系越密切attention向量的值越大。这样Decoder就可以获得一个额外的对当前预测输出有帮助的向量,从而可以避免长序列的遗忘问题。基于端到端的语音识别也可以看作一个sequence-to-sequence的翻译问题,输入的是声学特征,得到的是文本序列。所以基于Attention的Encoder-decoder框架很快被应用于语音识别。但是该框架存在一个问题,encoder需要接受整个序列以后,decoder才能产生输出,这对于识别的语音识别是不可接受的。基于这个问题,在interspeech2017上有研究提出了一种gaussian prediction based attention 来解决这个问题。具体的论文如下: Paper3. Gaussian Prediction based Attention for Online End-to-End Speech Recognition 这篇论文的贡献主要有两点: 1)提出一种Gaussian prediction based attention解决通用的attention模型的延迟问题; 2)提出采用DCNN作为Encoder,相比于GRU可以获得更好的性能 Gaussian prediction based attention的公式表达如上图,其核心思想是假设attention的系数服从高斯分布,这在语音识别任务里是合理的。因为对于语音识别任务,和输出最相关的中心帧周边帧对预测输出都有贡献,但是这种贡献随着距离越远越小。从而Gaussian prediction based attention中不像传统的attention去计算每个时刻的attention系数,而是去预测一个Gaussian分布的均值和方差。进一步考虑到语音信号时序上单调性:下一时刻预测的atttention的中心帧应该比前一时刻更加靠后。基于此该论文采用公式9和10的相对预测方式。去预测一个正的偏移量而不是直接去预测高斯的均值。当前时刻高斯均值等于前一时刻的预测的均值加上一个正的偏移量得到。同时为保证实时性,采用如下的公式进行截断处理: 实验验证是在3小时TIMIT数据库,结果如下: 3 总结 希望大家通过阅读这篇文章可以对语音识别系统的声学模型和最新的研究热点有一定的了解。 参考文献: [1] Mohamed A, Dahl G, Hinton G. Deep belief networks for phone recognition[C]//Nips workshop on deep learning for speech recognition and related applications. 2009, 1(9): 39. [2] Dahl G E, Yu D, Deng L, et al. Context-dependent pre-trained deep neural networks for large-vocabulary speech recognition[J]. IEEE Transactions on audio, speech, and language processing, 2012, 20(1): 30-42. [3] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778. [4] Srivastava R K, Greff K, Schmidhuber J. Highway networks[J]. arXiv preprint arXiv:1505.00387, 2015. [5] Kim J, El-Khamy M, Lee J. Residual LSTM: Design of a Deep Recurrent Architecture for Distant Speech Recognition[J]. arXiv preprint arXiv:1701.03360, 2017. [6] Zhang Y, Chen G, Yu D, et al. Highway long short-term memory rnns for distant speech recognition[C]//Acoustics, Speech and Signal Processing (ICASSP), 2016 IEEE International Conference on. IEEE, 2016: 5755-5759. [7] Pundak G, Sainath T N. Highway-LSTM and Recurrent Highway Networks for Speech Recognition[J]. Proc. Interspeech 2017, 2017: 1303-1307. [8] Cho K, Van Merriënboer B, Bahdanau D, et al. On the properties of neural machine translation: Encoder-decoder approaches[J]. arXiv preprint arXiv:1409.1259, 2014. [9] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014. [10] Hou J, Zhang S, Dai L. Gaussian Prediction based Attention for Online End-to-End Speech Recognition[J]. Proc. Interspeech 2017, 2017: 3692-3696.
语音识别技术是人机交互技术的重要组成部分,而语音识别中的声学模型是语音识别技术中的核心所在,堪称重中之重。阿里巴巴iDST智能语音交互团队最新的LFR-DFSMN模型相对于之前的LFR-LCBLSTM模型可以达到训练加速3倍、识别加速2倍、识别错误率降低20%和最终模型大小压缩50%的效果,实现了语音识别的迭代速度、识别成本、服务质量的全面提升。 一、语音识别背景介绍 语音识别技术一直都是人机交互技术的重要组成部分。有了语音识别技术,机器就可以像人类一样听懂说话,进而能够思考、理解和反馈。近几年随着深度学习技术的使用,基于深度神经网络的语音识别系统性能获得了极大的提升,开始走向实用化。基于语音识别的语音输入、语音转写、语音检索和语音翻译等技术得到了广泛的应用。阿里巴巴iDST智能语音交互团队一直以来也致力于语音识别技术的研究,同时注重技术的产品落地,在工业界大规模的问题上将技术真正发扬光大去解决实际的问题。 2016年年初iDST就在工业界第一次上线了基于Latency Controlled-BLSTM-DNN hybrid的语音识别系统,这也是BLSTM模型在工业界第一次进行实时语音识别服务。相对于早期基于DNN的声学模型,以及现在工业界大规模采用的基于LSTM的声学模型,iDST的这种声学模型既保持了BLSTM声学模型的高准确率的优点,又通过Latency Control设计避免了BLSTM声学模型带来的高延时的缺点,可谓是“一举两得(更多阅读请查阅之前的分享博客[1])。2016年底,通过结合Lower Frame Rate技术,iDST智能语音交互团队进一步优化了该声学模型,一举将解码时间加速了三倍以上,通俗点说就是把语音识别服务成本降低了三倍以上,为语音识别技术走入各行各业成为基础设施打下坚实基础。在刚刚结束的云栖大会上,提到了iDST智能语音交互团队关于语音识别声学模型的一个最新的技术进展,即LFR-DFSMN(Lower Frame Rate-Deep Feedforward Sequential Memory Networks)。本文将介绍这一声学模型的研究背景,以及我们的具体实现工作。 二、语音识别声学模型回顾 图 1. 基于DNN-HMM的语音识别系统框图 目前主流的语音识别系统普遍采用基于深度神经网络和隐马尔可夫(Deep Neural Networks-Hidden Markov Model, DNN-HMM)的声学模型,其模型结构如图 1所示。声学模型的输入是传统的语音波形经过加窗、分帧,然后提取出来的频谱特征,如 PLP, MFCC 和 FBK等。而模型的输出⼀般采用不同粒度的声学建模单元,例如单音素 (mono-phone)、单音素状态、绑定的音素状态 (tri-phone state) 等。从输入到输出之间可以采用不同的神经网络结构,将输入的声学特征映射得到不同输出建模单元的后验概率,然后再结合HMM进行解码得到最终的识别结果。 最早采用的网络结构是前馈全连接神经网路(Feedforward Fully-connected Neural Networks, FNN)。FNN实现固定输入到固定输出的一对一映射,其存在的缺陷是没法有效利用语音信号内在的长时相关性信息。一种改进的方案是采用基于长短时记忆单元(Long-Short Term Memory,LSTM)的循环神经网络(Recurrent Neural Networks,RNN)。LSTM-RNN通过隐层的循环反馈连接,可以将历史信息存储在隐层的节点中,从而可以有效的利用语音信号的长时相关性。进一步的通过使用双向循环神经网络(Bidirectional RNN),可以有效的利用语音信号历史以及未来的信息,更有利于语音的声学建模。基于循环神经网络的语音声学模型相比于前馈全连接神经网络可以获得显著的性能提升。但是循环神经网络相比于前馈全连接神经网络模型更加复杂,往往包含更多的参数,这会导致模型的训练以及测试都需要更多的计算资源。另外基于双向循环神经网络的语音声学模型,会面临很大的时延问题,对于实时的语音识别任务不适用。现有的一些改进的模型例如基于时延可控的双向长短时记忆单元(Latency Controlled LSTM,LCBLSTM )[2-3],以及前馈序列记忆神经网络(Feedforward Sequential Memory Networks,FSMN)[3-5]。去年我们在工业界第一个上线了基于LCBLSTM的语音识别声学模型。配合阿里的大规模计算平台和大数据,采用多机多卡、16bit量化等训练和优化方法进行声学模型建模,取得了相比于FNN模型约17-24%的相对识别错误率下降。 三、FSMN模型的前世今生 1. FSMN模型 图 2. FSMN模型结构以及和RNN的对比 FSMN是近期被提出的一种网络结构,通过在FNN的隐层添加一些可学习的记忆模块,从而可以有效的对语音的长时相关性进行建模。FSMN相比于LCBLSTM不仅可以更加方便的控制时延,而且往往也能获得更好的性能,需要的计算资源也更少。但是标准的FSMN很难训练非常深的结构,会由于梯度消失问题导致训练效果不好。而深层结构的模型目前在很多领域被证明具有更强的建模能力。因而针对此我们提出了一种改进的FSMN模型,称之为深层的FSMN(Deep-FSMN, DFSMN)。进一步的我们结合LFR(lower frame rate)技术构建了一种高效的实时语音识别声学模型,相比于去年我们上线的LCBLSTM声学模型可以获得超过20%的相对性能提升,同时可以获得2-3倍的训练以及解码的加速,可以显著的减少我们的系统实际应用时所需要的计算资源。 2. FSMN到cFSMN的发展历程 最早提出的FSMN的模型[3]结构如图 2(a)所示,其本质上是一个前馈全连接神经网络,通过在隐层旁添加一些记忆模块(memory block)来对周边的上下文信息进行建模,从而使得模型可以对时序信号的长时相关性进行建模。记忆模块采用如图 2(b)所示的抽头延迟结构将当前时刻以及之前 N 个时刻的隐层输出通过一组系数编码得到一个固定的表达。FSMN的提出是受到数字信号处理中滤波器设计理论的启发:任何无限响应冲击(Infinite Impulse Response, IIR)滤波器可以采用高阶的有限冲击响应(Finite Impulse Response, FIR)滤波器进行近似。从滤波器的角度出发,如图 2(c)所示的RNN模型的循环层就可以看作如图 2(d)的一阶IIR滤波器。而FSMN采用的采用如图 2(b)所示的记忆模块可以看作是一个高阶的FIR滤波器。从而FSMN也可以像RNN一样有效的对信号的长时相关性进行建模,同时由于FIR滤波器相比于IIR滤波器更加稳定,因而FSMN相比于RNN训练上会更加简单和稳定。 根据记忆模块编码系数的选择,可以分为:1)标量FSMN(sFSMN);2)矢量FSMN(vFSMN)。sFSMN 和 vFSMN 顾名思义就是分别使用标量和矢量作为记忆模块的编码系数。sFSMN和vFSMN记忆模块的表达分别如下公式: 以上的FSMN只考虑了历史信息对当前时刻的影响,我们可以称之为单向的FSMN。当我们同时考虑历史信息以及未来信息对当前时刻的影响时,我们可以将单向的FSMN进行扩展得到双向的FSMN。双向的sFSMN和vFSMN记忆模块的编码公式如下: 这里N1和N2分别代表回看(look-back)的阶数和向前看(look-ahead)的阶数。我们可以通过增大阶数,也可以通过在多个隐层添加记忆模块来增强FSMN对长时相关性的建模能力。 图 3. cFSMN结构框图 FSMN相比于FNN,需要将记忆模块的输出作为下一个隐层的额外输入,这样就会引入额外的模型参数。隐层包含的节点越多,则引入的参数越多。研究[4]结合矩阵低秩分解(Low-rank matrix factorization)的思路,提出了一种改进的FSMN结构,称之为简洁的FSMN(Compact FSMN,cFSMN)。如图3所示,是一个第l个隐层包含记忆模块的cFSMN的结构框图。对于cFSMN,通过在网络的隐层后添加一个低维度的线性投影层,并且将记忆模块添加在这些线性投影层上。进一步的,cFSMN对记忆模块的编码公式进行了一些改变,通过将当前时刻的输出显式的添加到记忆模块的表达中,从而只需要将记忆模块的表达作为下一层的输入。这样可以有效的减少模型的参数量,加快网络的训练。具体的,单向和双向的cFSMN记忆模块的公式表达分别如下: 四、LFR-DFSMN声学模型 1. Deep-FSMN (DFSMN)网络结构 图 4. Deep-FSMN (DFSMN)模型结构框图 如图 4是我们进一步提出的Deep-FSMN(DFSMN)的网络结构框图,其中左边第一个方框代表输入层,右边最后一个方框代表输出层。我们通过在cFSMN的记忆模块(红色框框表示)之间添加跳转连接(skip connection),从而使得低层记忆模块的输出会被直接累加到高层记忆模块里。这样在训练过程中,高层记忆模块的梯度会直接赋值给低层的记忆模块,从而可以克服由于网络的深度造成的梯度消失问题,使得可以稳定的训练深层的网络。我们对记忆模块的表达也进行了一些修改,通过借鉴扩张(dilation)卷积[6]的思路,在记忆模块中引入一些步幅(stride)因子,具体的计算公式如下: 对于实时的语音识别系统我们可以通过灵活的设置未来阶数来控制模型的时延,在极端情况下,当我们将每个记忆模块的未来阶数都设置为0,则我们可以实现无时延的一个声学模型。对于一些任务,我们可以忍受一定的时延,我们可以设置小一些的未来阶数。相比于之前的cFSMN,我们提出的DFSMN优势在于,通过跳转连接可以训练很深的网络。对于原来的cFSMN,由于每个隐层已经通过矩阵的低秩分解拆分成了两层的结构,这样对于一个包含4层cFSMN层以及两个DNN层的网络,总共包含的层数将达到13层,从而采用更多的cFSMN层,会使得层数更多而使得训练出现梯度消失问题,导致训练的不稳定性。我们提出的DFSMN通过跳转连接避免了深层网络的梯度消失问题,使得训练深层的网络变得稳定。需要说明的是,这里的跳转连接不仅可以加到相邻层之间,也可以加到不相邻层之间。跳转连接本身可以是线性变换,也可以是非线性变换。具体的实验我们可以实现训练包含数十层的DFSMN网络,并且相比于cFSMN可以获得显著的性能提升。从最初的FSMN到cFSMN不仅可以有效的减少模型的参数,而且可以获得更好的性能[4]。进一步的在cFSMN的基础上,我们提出的DFSMN,可以更加显著的提升模型的性能。如下表是在一个2000小时的英文任务上基于BLSTM,cFSMN,DFSMN的声学模型性能对比。从下表中可以看到,在2000小时这样的任务上,DFSMN模型可以获得比BLSTM声学模型相对14%的错误率降低,显著提高了声学模型的性能。 Model BLSTM cFSMN DFSMN WER% 10.9 10.8 9.4 2. 基于LFR-DFSMN的语音识别声学模型 图 5. LFR-DFSMN声学模型结构框图 目前的声学模型,输入的是每帧语音信号提取的声学特征,每帧语音的时长通常为10ms,对于每个输入的语音帧信号会有相对应的一个输出目标。最近有研究提出一种低帧率(Low Frame Rate,LFR)[7]建模方案:通过将相邻时刻的语音帧进行绑定作为输入,去预测这些语音帧的目标输出得到的一个平均输出目标。具体实验中可以实现三帧(或更多帧)拼接而不损失模型的性能。从而可以将输入和输出减少到原来的三分之一甚至更多,可以极大的提升语音识别系统服务时声学得分的计算以及解码的效率。我们结合LFR和以上提出的DFSMN,构建了如图 5的基于LFR-DFSMN的语音识别声学模型,经过多组实验我们最终确定了采用一个包含10层cFSMN层+2层DNN的DFSMN作为声学模型,输入输出则采用LFR,将帧率降低到原来的三分之一。识别结果和去年我们上线的最好的LCBLSTM基线比较如下表所示。通过结合LFR技术,我们可以获得三倍的识别加速。从上表中可以看到,在实际工业规模应用上,LFR-DFSMN模型比LFR-LCBLSTM模型可以获得20%的错误率下降,展示了对大规模数据更好的建模特性。 CER% 产品线A 产品线B LFR-LCBLSTM 18.92 10.21 LFR-DFSMN 15.00(+20.72%) 8.04(21.25%) 五、基于多机多卡的大数据声学模型训练 实际的语音识别服务通常会面对非常复杂的语音数据,语音识别声学模型一定要尽可能的覆盖各种可能的场景,包括各种对话、各种声道、各种噪音甚至各种口音,这就意味着海量的数据。而如何应用海量数据快速的训练声学模型并上线服务,就直接关系到业务相应速度。我们利用阿里的Max-Compute计算平台和多机多卡并行训练工具,在使用8机16GPU卡、训练数据为5000小时的情况下,关于LFR-DFSMN声学模型和LFR-LCBLSTM的训练速度如下表: 处理一个epoch需要的时间 LFR-LCBLSTM 10.8小时 LFR-DFSMN 3.4小时 相比于基线LCBLSTM模型,每个epoch DFSMN可以获得3倍的训练速度提升。在2万小时的数据量上训练LFR-DFSMN,模型收敛一般只需要3-4个epoch,因此在16GPU卡的情况下,我们可以在2天左右完成2万小时数据量的LFR-DFSMN声学模型的训练。 六、解码延时、识别速度和模型大小 设计更为实用化的语音识别系统,我们不仅需要尽可能的提升系统的识别性能,而且需要考虑系统的实时性,这样才能给用户提供更好的体验。此外在实际应用中我们还需要考虑服务成本,因而对于语音识别系统的功耗也有一定的要求。传统的FNN系统,需要使用拼帧技术,解码延迟通常在5-10帧,大约50-100ms。而去年上线的LCBLSTM系统,解决了BLSTM的整句延迟的问题,最终可以将延时控制在20帧左右,大约200ms。对于一些对延时有更高要求的线上任务,还可以在少量损失识别性能的情况下(0.2%-0.3%绝对值左右),将延迟控制在100ms,完全可以满足各类任务的需求。LCBLSTM相比于最好的FNN可以获得超过20%的相对性能提升,但是相同CPU上识别速度变慢(即功耗高),这主要是由模型的复杂度导致。 我们最新的LFR-DFSMN,通过LFR技术可以将识别速度加速3倍以上,进一步的DFSMN相比于LCBLSTM在模型复杂度上可以再降低3倍左右。如下表是我们在一个测试集上统计的不同的模型需要的识别时间,时间越短则表示我们所需要的计算功耗越低: 模型 整个测试集识别所需要的时间 LCBLSTM 956秒 DFSMN 377秒 LFR-LCBLSTM 339秒 LFR-DFSMN 142秒 关于LFR-DFSMN的解码时延问题,我们可以通过减小记忆模块滤波器的向未来看的阶数来减小时延。具体实验中我们验证了不同的配置,当我们将LFR-DFSMN的延时控制在5-10帧时,大致只损失相对3%的性能。 此外,相对于复杂的LFR-LCBLSTM模型,LFR-DFSMN模型具有模型精简的特点,虽然有10层DFSMN,但整体模型大小只有LFR-LCBLSTM模型的一半,模型大小压缩了50%。 参考文献 [1] https://yq.aliyun.com/articles/2308?spm=5176.100244.teamhomeleft.53.ifFpZn [2] Yu Zhang, Guoguo Chen, Dong Yu, and Kaisheng Yao, ng Yao, long short term memory RNNs for distant speech recognition, in IEEE International Conference of Acoustics,Speech and Signal Processing (ICASSP), 2016, pp. 5755-5759. [3] Xue S, Yan Z. Improving latency-controlled BLSTM acoustic models for online speech recognition[C], Acoustics, Speech and Signal Processing (ICASSP), 2016 IEEE International Conference on. IEEE. 2017. [4] Zhang S, Liu C, Jiang H, et al. Feedforward sequential memory networks: A new structure to learn long-term dependency[J]. arXiv preprint arXiv:1512.08301, 2015. [5] Zhang S, Jiang H, Xiong S, et al. Compact Feedforward Sequential Memory Networks for Large Vocabulary Continuous Speech Recognition[C], INTERSPEECH. 2016: 3389-3393. [6] Zhang S, Liu C, Jiang H, et al. Non-recurrent Neural Structure for Long-Term Dependency[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2017, 25(4): 871-884. [7] Oord A, Dieleman S, Zen H, et al. Wavenet: A generative model for raw audio[J]. arXiv preprint arXiv:1609.03499, 2016. [8] Pundak G, Sainath T N. Lower Frame Rate Neural Network Acoustic Models[C],INTERSPEECH. 2016: 22-26. p[[