解读:【阿里热线小蜜】实时语音对话场景下的算法实践

2022-05-10 11:38:05 浏览数 (2)

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 去优化的话,个人感觉这样做的方案还是挺重的

0 人点赞