超越整句的流式多级Attention:解密百度输入法背后的语音识别模型

简介: 1 月 16 日,百度输入法举办了「AI·新输入全感官输入 2.0」发布会,正式对外发布百度输入法 AI 探索版,这是一款默认输入方式为全语音输入、并以注意力机制为语音核心的新产品。新语音模型结合了 CTC 和 Attention,为每日数亿条语音识别调用提供硬核支持,本文将带你一观新模型是如何劝君「动口不动手」。

全语音交互对于语音识别准确率要求极高。百度表示,其 AI 探索版的语音输入用户体验提升得益于四项重大突破,分别是在在线语音、离线语音、中英混合语音以及方言四个领域上实现的。


关于在线语音识别,百度发布了流式多级的截断注意力建模(SMLTA),将在线语音识别准确率相对于上一代 Deep Peak 2 再次提升 15%,并实现了基于 SMLTA 模型的在线语音识别服务大规模上线应用。


在离线语音识别中,百度通过持续优化去年 1 月发布的 Deep Peak 2 系统,让离线语音输入相对准确率再次提升,并表示可以保证在没网的情况下实现输入法的流畅快速使用。百度输入法「中英自由说」可以在不影响中文语音输入准确率的情况下,实现高精准的中英文混合语音识输入(例如,可以准确地区分「有你的快递」和「you need cry dear」)。「方言自由说」则将普通话和六大方言融合成一个语音识别模型,在输入时可以无需设置自由切换,无论是普通话和方言之间,还是方言和方言之间。

 

开启百度输入法 AI 探索版后,点击语音按钮,除了可以说出你要记录的内容,让输入法帮你直接录入转文字。还可以呼唤「小度小度」语音助手,并说出相应指令,即可实现语音修改、发表情、发弹幕、发文件等一系列操作,满足与输入相关的周边需求。可以说,百度输入法 AI 探索版的核心功能就是语音识别。


0EBF84A5-49F2-4A51-BD78-C8A7415589CD.jpeg

百度输入法 AI 探索版界面


在下文中,机器之心将介绍百度输入法中部署的最新在线语音识别模型——SMLTA 的架构细节。简言之,SMLTA 就是流式多级的截断注意力模型,是融合了 CTC、LSTM 和 attention 等近年语音识别技术的集大成者。百度表示,SMLTA 是在业界首个截断模型能超越整句的注意力模型,同时这也是第一次实现了基于 Attention 技术的在线语音识别服务的大规模上线。


可大规模工业使用的基于注意力建模的语音识别


CTC 模型和注意力 (Attention) 模型在学术界都不是新名词。尤其是注意力模型,是近些年研究的热点,注意力模型已经在实验室内被证明能够实现语音识别的端到端建模,这种建模将使得语音识别系统极度简化。相对于包括 CTC 在内的所有传统语音识别技术而言,注意力模型都被认为有较高的识别率。但这都只是在实验室得到的实验结论。注意力模型在投入实际工业应用中还会遇到大量的问题,例如无法做到一边传语音一边识别从而导致用户等待时间太长的问题和无法保证长句字识别时候的识别精度的问题等。


百度采用的是一种名为「流式多级的截断注意力模型(SMLTA)」,其中流式表示可以直接对语音的小片段(而不是必须整句),进行一个片段一个片段地增量解码,多级表示堆叠多层注意力模型,而最后的截断则表示利用 CTC 模型的尖峰信息,把语音切割成一个一个小片段,注意力模型建模和解码可以在这些小片段上展开。这样的模型就是支撑起每天数亿条识别任务的核心方法,也是工业上大规模使用注意力模型进行语音识别的范例。


其实想要了解百度的工业级语音模型,看看下面这张结构图就够了,其目前已经被证明在大规模应用上有非常好的效果。后面我们主要围绕这张图介绍 SMLTA 模型的具体结构:245FBE0B-6DA8-41E9-8C67-847164BBF2D0.png


如上所示为 SMLTA,最下面的输入声波会按照 CTC 尖峰的分布,被截断为一个个语音小片段(时间步),也就是 h 所表示的内容。除了截断外,这里 CTC 模型的另外一个核心作用是把短时平稳的语音信息抽象成高度集中的局部信息。之后的注意力建模就是在这个一个个小片段上进行的,这样的注意力建模被称作局部注意力建模。


按照 CTC 建模的特性,每一个语音小片段预测的就是一个基本建模单元(比如音节,或者高频音素组合)。在对每个语音小片段进行注意力建模前,百度进行了一个编码过程。编码过程抽取出来的特征就是代表这个建模单元的最本质描述特征 c。在注意力建模之后,百度又采用了 2 层 LSTM 模型,来描述每个单元的最本质描述特征 c 和识别结果之间的一对一的映射关系,从而实现完美的实现了端到端建模。这种建模方式,使得语音识别摆脱之前复杂的动态规划解码器带来的系统的冗余和复杂,使得语音识别过程变成一个简单的滚动生成过程:在一个时间步生产一个识别结果,然后滚动到下一个时间步,再生成下一个识别结果,直到识别过程结束。


由于该方法把传统的全局的注意力建模转换成局部注意力建模,所以这个过程也是一个绝对可以流式实现的过程,无论多长的句子,都可以通过截段来实现流式解码和精准的局部注意力建模,同时也实现了流式解码。


由于 CTC 模型必然存在着插入和删除等错误,这些错误会影响截断的效果,也就是影响语音小片段的定义,从而一定影响最终的模型精度。因此,在百度的 SMLTA 中采用了一种多级注意力结构。这种多级结构描述工作原理描述如下:具体而言,在上图不同的语音片段 h 上,第一层注意力机制会注意当前语音片段以及过去所有一段时间内的语音片段的语音特征信息,也就是注意不同发音对当前预测的重要性,且重要性是由注意力的权重α来决定的。直观而言,第一层 Attention 注意到的是 CTC 截断的「音」,这些音组合起来能表示某个具体的文字的特征,也就是输出结果 c。而第二层 Attention 是建立在前一层注意到的特征 c 之上,对第一层注意力模型的输出再进行第二次注意力学习。如果第一次注意力的学习结果存在冗余信息的话,经过第二次注意力建模,就能找到真正需要集中注意力的注意力点。


所以工业级的 SMLTA 模型最核心的部分还是利用 CTC 模型的尖峰对连续音频流做截断,然后在每个截断的小语音片段上进行注意力建模。传统的注意力模型必须需要在整句范围内建模,而百度的注意力模型却可以在小片段上建模。核心原因是因为 CTC 模型的尖峰信息所对应的特征表示是高度局部集中的。这种高度局部集中的特征表示,使得仅对当前截断的小片段做注意建模,就能够实现对当前建模单元的高精准描述。而不需要像之前那样对一个很大范围的声音信息进行「集中注意力」。


这就是流式的、多级的截断注意力模型,它解决了传统注意力模型不能进行流建模和解码的问题,并且依靠截断,实现了对长句子的高精准的注意力建模,同时也解决了 CTC 模型的插入或删除错误对注意力模型的影响。CTC 建模和注意力建模这两者的结合,对于学术或研究还是有很重要意义的,更不用说流式实时解码对工业应用的贡献了。


语音识别模型的迭代


SMLTA 也可以看成是百度上一代语音识别模型 Deep Peak 2 的进一步优化。Deep Peak 2 的全称叫做「基于 LSTM 和 CTC 的上下文无关音素组合建模」。上下文无关建模方式是指:把高频出现的音素联合在一起,形成一个音素组合体,然后将这个音素组合体作为一个基本建模单元。Deep Peak 2 还通过声学模型学习和语言信息学习相分离的训练方法,使用音素组合来保留最重要的音素连接特性,从而避免了上下文无关建模时的过拟合问题。这种建模方式可以显著缩小建模单元,带来更快的解码速度。

 

相比之下,SMLTA 对 Deep Peak 2 的核心改进在于局部注意力和多级注意力的引入,可以看成是将 Deep Peak2 通过结合注意力机制来获取更大范围和更有层次的上下文信息。这种改进一般而言会造成计算量的增加,但百度表示,其整体计算量和上一代的 Deep Peak 2 是技术相当的。整个工业产品部署完全是 CPU 部署,无需额外的 GPU 就可以完成。成本低廉,适合大规模推广使用。


3B69D8EB-165D-46BB-A095-94FB28E11651.png


By the Way


机器之心在发布会现场还见识到了百度输入法 AI 探索版的一项很有意思的功能——凌空手写。它不需要特殊的手写笔,也不需要类似深度摄像头或多目摄像头等硬件,只需要最普通的 RGB 摄像头即可。如下图所示,使用者只要对着摄像头竖起手指就可以在空气中开始写字,写完后张开手掌,就能结束写字,输入法会开始识别并将对应文字输出。图中的使用者正在尝试写一个「绍」字,已输出的「凌空手写张」也是用这个功能写的。


C7CBC563-957A-4030-B830-2F0B138B5C5D.jpeg


凌空手写采用双神经网络模型的方案:一个是基于灰度图的指尖跟踪模型,另一个是基于多方向特征文字识别模型。此外,研发团队发现锯齿和连笔在三维空间的手写识别中对识别率影响较大,于是对抗锯齿和连笔消除算法进行了大量优化工作。无论实用性如何,这么好玩的功能还是值得试试~FA539CA3-257B-47F3-819D-8CBE996EFE9F.png



本文为机器之心原创,转载请联系本公众号获得授权

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
机器学习/深度学习 自然语言处理 算法
Jieba分词的准确率提升:使用paddle模式进行分词(使用百度飞桨深度学习模型进行分词)
jieba中的paddle模式是指使用飞桨(PaddlePaddle)深度学习框架加速分词的一种模式。相对于传统的分词算法,paddle模式采用了深度学习模型,可以获得更高的分词准确度和更快的分词速度。
|
16天前
|
机器学习/深度学习 PyTorch 语音技术
语音识别模型
Whisper 是 OpenAI 推出的语音处理项目,基于深度学习,具备高度智能化和准确性的语音识别、翻译和生成能力。通过丰富的数据集和先进的注意力机制,Whisper 在多种语言环境下表现出色,支持语音识别、翻译、口语识别和语音活动检测等多种任务。用户可以通过 Python 代码或命令行轻松使用 Whisper,完成高质量的语音处理任务。官网:https://openai.com/research/whisper,GitHub:https://github.com/openai/whisper。
22 2
|
29天前
|
机器学习/深度学习 监控 数据挖掘
基于Django和百度飞桨模型的情感识别Web系统
基于Django和百度飞桨模型的情感识别Web系统
33 5
|
29天前
|
机器学习/深度学习 算法 语音技术
超越传统模型:探讨门控循环单元(GRU)在语音识别领域的最新进展与挑战
【10月更文挑战第7天】随着人工智能技术的不断进步,语音识别已经从一个相对小众的研究领域发展成为日常生活中的常见技术。无论是智能手机上的语音助手,还是智能家居设备,甚至是自动字幕生成系统,都离不开高质量的语音识别技术的支持。在众多用于语音识别的技术中,基于深度学习的方法尤其是递归神经网络(RNNs)及其变体如长短期记忆网络(LSTMs)和门控循环单元(GRUs)已经成为了研究和应用的热点。
22 2
|
4月前
|
机器学习/深度学习 算法 数据可视化
Python基于librosa和人工神经网络实现语音识别分类模型(ANN算法)项目实战
Python基于librosa和人工神经网络实现语音识别分类模型(ANN算法)项目实战
116 0
|
6月前
|
机器学习/深度学习 语音技术
Hotword模型在语音识别系统中定义为能够识别特定关键词或短语(也称为唤醒词)的模型
Hotword模型在语音识别系统中定义为能够识别特定关键词或短语(也称为唤醒词)的模型
304 9
|
6月前
|
机器学习/深度学习 语音技术 Python
使用Python实现语音识别与处理模型
使用Python实现语音识别与处理模型
86 0
|
6月前
|
语音技术
长音频集成模型的标点结果既依赖于语音识别也依赖于语音端点检测(VAD)
长音频集成模型的标点结果既依赖于语音识别也依赖于语音端点检测(VAD)【1月更文挑战第11天】【1月更文挑战第52篇】
125 1
|
机器学习/深度学习 人工智能 数据可视化
Spectron: 谷歌的新模型将语音识别与语言模型结合进行端到端的训练
Spectron是谷歌Research和Verily AI开发的新的模型。与传统的语言模型不同,Spectron直接处理频谱图作为输入和输出。该模型消除归纳偏差,增强表征保真度,提高音频生成质量。
87 1
|
达摩院 自然语言处理 测试技术
直接开源!达摩院公布下一代工业级语音识别模型
直接开源!达摩院公布下一代工业级语音识别模型
725 0
下一篇
无影云桌面