导读:网易云商关于“加速 CTC 语音识别模型推理”的论文被?ASRU2023 录用,ASR 是专注于探讨语音技术热点难点问题的国际顶级语音会议,本文将基于网易云商的实践经验,探究该论文解决的业务中的关键问题。
“小爱同学,明天早上 7 点叫我起床”
“小度小度,来点轻松的音乐吧”
“天猫精灵,播放适合 5 岁孩子的故事”
大家熟悉的这些智能家居产品,背后都有语音技术的身影。
作为人工智能技术中的一个重要分支,语音技术让计算机能够理解和生成人类的语音,实现与人类自然、流畅、高效的交互,旗下有语音识别(ASR)、语义理解(NLP)、语音合成(TTS)等多个子类别。?
专注于探讨语音技术热点难点问题的国际顶级语音会议 ASRU2023 公布论文入选结果,网易云商关于“加速 CTC 语音识别模型推理”的论文被大会录用,展现了网易云商突破技术难题的决心和实力。
据悉,ASRU 研讨会是 IEEE 语音和语言处理技术委员会(SLTC)的旗舰技术活动,每两年举办一次,汇集了来自学术界和工业界的顶级专家和研究人员,共同探讨广泛的语音识别与理解问题,是语音与语言处理学术圈的顶会。
在这样一个极具影响力的技术顶会中脱颖而出,网易云商的这篇论文有何独特之处?解决了什么关键问题?让我们来一探究竟。
主流的语音识别都采用端到端方案,它的整个过程可以大致分为四步:语音输入——编码——解码——输出。拿我们熟悉的微信语音转文字场景为例,输入一段语音,先要经过编码(将原始语音信号转换为隐层特征序列),然后进行解码(将隐层特征序列转换为识别结果),最后经过后处理之后输出文字结果。
在编码环节,为了将原始的语音信号转换为隐层表达,需要借助 Encoder(编码器)进行建模和识别。以一句“你好”为例,短短的两个汉字,对应的序列长度就有近 200 帧(语音中一帧一般为 20-50 毫秒)。而目前主流的 ASR 模型都需要很大的 Encoder 来对语音序列信号进行建模,这在提升识别准确率的同时,也带来了庞大的计算量和部署成本。
针对困扰行业的此问题,网易云商 AI 技术组(下称 AI 组)开展深入研究。先通过使用 CTC(Connectionist Temporal Classification,一种序列建模算法,用于在语音识别,手写识别和其他序列问题中训练深度神经网络的算法) 来标识每一帧是否是空白帧,随后,逐帧动态决定 Encoder 的层数,对于空白帧仅使用 Encoder 的一部分层建模,减少计算量,其他关键帧则使用整个 Encoder 建模,保证识别准确率。具体示意图如下:
首先,语音序列 x 逐帧输入到第一部分编码网络即“编码网络 1”,获得隐层表达 h1。h1 通过 CTC 获得每一帧的输出概率,这个概率包含 1 个空白符号的概率和 V 个实际非空白符号(如中文汉字)的概率。如果某一帧的空白符号概率大于提前设定的门限值(如 0.95),那么该帧会被当做空白帧,因而跳过第二部分网络"编码网络 2"的计算,其输出概率会被直接用来进行束搜索解码(beam-search decoding)。如果该帧不是空白帧,则隐层表达 h1 会被继续输入到“编码网络 2”,获得更好的隐层表达 h2 并根据 CTC 计算更加准确的输出概率用于束搜索解码。整个序列依照此流程完成推理,为不同的输入帧提供不同的编码层数,实现帧级别的动态编码网络。
以下图这条语音为例,它的波形显示在第 1 行,对应的文本是 "You do me a great honour",很明显这句话中存在一些静音片段。对应的 ASR 模型配置是"编码网络 1"有 8 层 conformer(一种编码网络结构) 层,"编码网络 2"有 4 层 conformer 层。"编码网络1"的隐层表达用 CTC 预测的每一帧输出概率显示在第 3 行,其中(蓝色虚线) 即代表空白帧的概率,其他颜色的实线是实际符号的概率。按照特定门限值给出的空白帧检测结果在第 4 行,当模型检测到某一帧是空白帧时(对应 skip position 是 1),"编码网络 2"就不会参与该帧的计算;否则"编码网络 2"会继续计算隐层表达,并通过 CTC 给出最终的输出概率,对应下图第 2 行。
需要说明的一点是:由于 CTC 是根据算法训练得到的,它的空白帧概率并不能与真实的语音空白片段完全对应;而且它主要在尖峰位置预测对应的输出符号,这些尖峰位置与实际语音发生的位置相比,通常会有一定滞后。
如果仔细推敲上述流程的话,会发现一个问题:如果 CTC 预测的空白帧概率不准怎么办?很明显,如果某些帧被错误认定为空白帧,那么语音中的一些实际上很重要的帧就不会被充分编码,导致模型准确度下降。
为了增加空白帧检测的准确度,尽量避免跳过一些潜在的重要帧,AI 组针对上述流程的基础上提出了 2 个改进措施:
训练时引入蒸馏学习策略,使用整个编码网络(即“编码网络 1” + “编码网络 2”)的输出指导“编码网络 1”的输出,达到同步两个网络之间的空白帧输出的效果。由于整个编码网络的输出更加准确,因此可以用来指导空白帧检测模块,通过模型训练来提高检测准确度。
推理时引入“空白帧检测扩展”策略,对于每一帧输入,只有当该帧及其相邻前 2 帧的空白帧概率都大于门限值时,才会跳过“编码网络 2”的计算;否则该帧会被当做重要帧,并继续被送入“编码网络 2”计算隐层表达和输出。
为了进一步提高模型的计算效率,降低空白帧检测的计算量,AI 组在计算空白帧输出概率时引入因子化 CTC(Factorized CTC)。如下图,在检测某一帧是否为空白帧时,我们只需要 p(blank)这个值。由于非空白帧需要继续送入"编码网络 2"计算隐层表达和输出概率用于解码,使用下图左侧 CTC 方式进行空白帧检测时,非空白帧对应的 p(1~V) 是不会被用到的。由于非空白符号的数目 V 相对较大(通常是数千量级),p(1~V) 这部分无效计算会增加额外计算量。而使用下图右侧的 Factorized CTC 进行空白帧检测时,可以用两步计算输出概率:
按照2分类计算空白符号概率 p(blank)。
如果 p(blank) 的数值大于门限值,则计算非空白符号的概率p(1~V),然后将这两部分概率组合获得完整的输出概率,用于束搜索解码;否则跳过 p(1~V) 的计算,省掉虚线框部分的计算量。与原始 CTC 相比,Factorized CTC 的计算效率更高,并且效果基本没有损失。
用一种更灵活的方式,更简化的模型,加速了模型推理速度,降低了计算量和部署成本。实验结果表明,网易云商提出的这种方式,可以在保证识别效果基本不变的情况下,跳过了 33% 的"编码网络 2"的计算,将模型的推理速度提升 29%。这大大提升了 ASR 服务的性价比。
多年来,网易云商一直在 AI 语音技术领域不断探索,深入研究,并应用在网易云商旗下智能外呼、智能质检、呼叫中心、呼入机器人、坐席辅助等产品中,为企业用户带去高性价比、高效率、有温度的智能语音解决方案,在服务和营销场景大放异彩。
某主打国战玩法的魔幻题材 MMORPG 手游,公测至今已经 5 年,游戏运营团队主要采用常规的短信方式进行流失召回,单用户平均回流成本通常在 11-13 元左右。现在,他们希望找到成本更低、效率更高的方式。
运营团队选取了流失 4 年内的付费用户,以新服回归活动(送代币、坐骑、时装、抽取法宝)为利益点,采用网易云商提供的智能外呼方案进行大批量的召回,最终回流率达到 7.8%,单用户平均回流成本仅 2.8 元,流召活动整体 ROI 达到 15 倍。
语音技术在日常生活和生产应用中扮演着越来越重要的角色,网易云商将持续探索,攻坚克难,加速 AI 创新。