卡信互客

实现一个电话机器人你知道要做些什么吗

  本质上,电话机器人是一种具有数据流特性的多轮对话交互系统,对用户体验和实时性有很高的要求。数据流传输由电话提供,即将电话语音转换为数据包,并持续发送至下游处理模块;传统对话机器人提供多轮交互能力,即根据用户所说的决策返回脚本;数据流和车轮的转换涉及电话效果的控制。从工程设计的角度来看,为了减少系统无效包的数量,可以通过单独的双工控制器模块来实现。因此,整个电话机器人的框架如下:

  流程可表述如下:

  电话端通过协议将持续不断的电话数据转换为离散的数据包,每个一段时间发送给双工控制器。数据包包括电话的唯一标识、机器是否在播放以及播放的id、采集到的用户侧的语音数据。

实现一个电话机器人你知道要做些什么吗-图1

  双工控制器接收用户侧的语音数据后,请求asr,解析出用户对应的文本,以及当前用户说话的状态(正在说话,没有说话,说话结束等),结合当前机器的说话状态,设计电话的控制策略(是否需要转换成一轮通话后下发、用户说话是否有效、是否一直沉默触发了超时机制等)。当决定下发时,需要形成请求包请求下游,获得下游的回复并返回,作为接下来机器待播放的话;当决定不下发,直接拦截掉该请求,返回空的accept包。

  asr模块负责识别用户说话话,并且判定用户说话的状态,即vad。同时给出n-best结果,供下游使用。每个数据包都会被调用和返回,因此是工程上的性能瓶颈。

  nlu模块负责解析asr识别到的结果,形成用户对应的领域(domain)、意图(intent)和槽位(slot)。由于双工控制器的存在,只有在需要的时候才会请求nlu模块,即该nlu模块与多轮对话中的nlu可以看作是通用的。

  dm模块负责对整个通话过程进行追踪。获取nlu的识别结果后,进行对话状态跟踪(dst),识别出用户表达的user goal以及当前所处的状态,据此决策(policy)该返回哪些回复语句。同理,dm模块也是在需要的时候才会被请求,与多轮对话中的dm可以看作是通用的。

  nlg模块负责生成最终的话术。不同于多轮对话,电话机器人的回复要求必须是语音,而多轮对话的回复通常可以是语音、也可以是文字。因此,nlg模块主要生成链接(tts或者录音url),如果选用tts,即多了tts生成模块。


分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

微信号:15211005858

9:00-18:00

关注我们