解读:阿里热线小蜜实时语音对话场景下的算法实践
Posted 卓寿杰SoulJoy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解读:阿里热线小蜜实时语音对话场景下的算法实践相关的知识,希望对你有一定的参考价值。
1. 介绍
语音语义技术是人机交互通道,识别越准确,交互越流畅,交互效果越好
主要挑战:
- 口语化:用户的表述呈现出含糊、冗长、不连续并存在ASR噪声
- 多模态:语音对话相比文本蕴含了更多的信息,如语气、情绪、背景环境等
- 双工化:不局限于一问一答的形式,会出现静默、等待、互相打断等复杂的交互行为。呈现出低延时(人人对话rt < 400ms),强交互(turn-taking频繁)的特点
下面我们就针对这3个挑战,看看阿里热线小蜜是怎么优化的、
2. 口语化问题
2.1 ASR-Robust SLU
作者对比了几种ASR自然语言理解的方案:
作者基于阿里热线小蜜业务,最终选择了容错SLU的方案。其主要优点在于:
- 无需准备含ASR错误的训练语料,仅需要在下游任务自身语料上进行 finetune,就可以得到具有ASR容错能力的SLU模型
- 仅需要文本作为输入,线上链路无需改造成本
- 采用BERT-like预训练架构,兼容目前大多数NLP下游任务
作者没有讲阿里小蜜是如何预训练模型的。但是可以参考下论文《Learning ASR-Robust Contextualized Embeddings for Spoken Language Understanding》:
作者展示的效果:
效果看起来挺好的。不过,接的文本任务是比较简单的意图分类(或 匹配),如果后续涉及到实体识别、KBQA的任务,这方案就不太适用了。
2.2 口语化表达
作者提出的方案主要就是进行抽取式摘要
- 短句分类 + Pattern推理
- Bert-Sum
参阅:https://zhuanlan.zhihu.com/p/264184125
3. 多模态问题
关于这块,作者主要介绍了情绪识别相关的内容。方案也是比较经典的多模态融合模型,没太多可说的:
4. 双工对话
先介绍下,同步、异步和双工的区别:
上图的电话号码例子就非常形象:
- 我们和在线机器人聊天,就是同步的:我们需要把电话号码完整的打字编辑完,再发送信息,该信息同步触发机器人进行回答。
- 而如果我们和在线人工客服之间进行这样的对话,人工客服在我们打字时,可以做其他事情,所以我们之间是异步的。
- 如果我们和热线人工客服之间进行这样的对话,不必等到我们说出完成的电话号码,热线人工客服就开始在理解我们说的话,并有所回应。这就是双工的对话。
双工对话的特点:
- 语音对话对通信双方具有独占性 -> 响应时延敏感
- 基于语音的信息传递具有持续性、非瞬时、非原子 -> 边听边想、边想边说
- 不完全博弈,通话双方并不准确的知道对方下一刻要做什么 -> 容易误判
作者的解决方案是加了一块 Duplex DM模块:
触发从原来的完整的ASR结果信息,变成了Micro-turn。我理解应该就是流式的ASR,使得相应速度更快,做到边听边想:
在每个Micro-turn,基于当前的对话上下文和双工状态,由Duplex DM给出对应的Action。Action包括:等待,调用Chatbot链路并回答、任务无关的回复(task-free chat)、中断当前播音等等。
其中,task-free chat,是双工对话中一些当前场景无关的响应,例如语气承接,句尾承接(如 好的。。 嗯。。)等等
作者没有介绍Duplex DM具体怎么做。但介绍了单单在问电话号码场景下,就还额外优化了 数字意图识别、数字改写、micro-turn DST & Decoder ==
相信 Duplex DM 决策的场景肯定不只这一个场景,如果每个都这样case by case 去优化的话,个人感觉这样做的方案还是挺重的
以上是关于解读:阿里热线小蜜实时语音对话场景下的算法实践的主要内容,如果未能解决你的问题,请参考以下文章
深度学习核心技术精讲100篇(四十六)-情感分析算法在阿里小蜜的应用实践