python3语音识别模块_智能语音机器人架构实践

背景

语音机器人是58集团TEG架构平台线AI Lab自主研发的具有自动电话拨打、多轮语音交互、智能意向判断等多种功能的智能对话机器人。可应用于自动电话销售、产品服务推广、信息审核、语音通知等多种业务场景。例如在五八招聘销售场景下,语音机器人可以批量自动外呼潜在客户,模拟真实销售人员与客户进行多轮沟通,从而挖掘出潜在商机客户,显著提高销售人效。

语音机器人相对于人工坐席,具有低成本、高效率、工作态度稳定、数据记录全面客观等特点,对比如下:

python3语音识别模块_智能语音机器人架构实践_第1张图片

整体架构

python3语音识别模块_智能语音机器人架构实践_第2张图片

语音机器人包括基础服务层、逻辑层、编辑运营层、接入层和WEB接入平台:

  • 基础服务层为语音机器人提供基础的通话和语音能力支持,包括语音通话模块和语音识别/合成模块。语音通话模块基于第三方SIP供应商实现SIP信令建立、语音编解码、语音上/下采样等功能,支持机器自动拨打电话,自动判断通话状态。语音识别/合成模块集成封装了阿里、百度、腾讯、科大讯飞等第三方语音识别/合成接口,用于话术的合成、通话语音及响铃的识别。
  • 编辑运营层是一套集数据标注、效果评估、数据分析功能于一体的Web系统。编辑人员通过Web系统完成单句意图、整轮意图、语音识别等的标注工作,并定期进行数据分析和效果评测。
  • 逻辑层是语音机器人的核心部分,包括意图识别模块、对话交互模块和对话管理系统。

意图识别模块基于深度学习相关模型、规则匹配等实现单句意图识别、整轮意图识别等功能。单句意图识别针对用户说的每一句话判断其意图,将其映射到系统定义的19个语义标签里,如肯定、否定、继续聆听等;整轮意图识别用于在一通电话结束后判断用户的整体意向,如成功邀约、中性意图、倾向拒绝、明确拒绝等;真实意图识别用来判断用户回复后机器接下来应该怎么回复。

对话交互模块通过对话监听器监听发送队列和接收队列里的事件,完成语音的发送和接收,实现语音机器人与用户的语音沟通。

对话管理系统包括主线流程管理、分支流程管理、通话逻辑判断、意图/词槽映射和对话状态维护等功能。主线流程管理指按照话术中定义的主线流程管理状态和策略根据识别的用户意图进行语音回复。分支流程管理包括分支话术管理和标准问题管理。通话逻辑判断包括挂断、等待、超时等操作的判断。意图/词槽映射指根据业务场景需求提取相应信息。对话状态维护指维护状态数据结构、对话历史等。

  • 接入层包括实时外呼接口、WMB消息总线和结果回传接口。业务方调用实时外呼接口实现电话实时呼出,语音机器人外呼的结果数据通过WMB消息总线传递给业务方,业务方拿到语音机器人传回的数据进行人工跟进并将跟进结果通过结果回传接口返回给语音机器人,实现数据的闭环。
  • WEB接入平台为业务方外呼任务接入提供可视化支持,包括账户管理、话术管理、外呼任务管理以及数据报表等模块。账户管理支持普通用户、业务管理员、超级管理员等不同角色的权限管理;话术管理方便业务方进行话术模板的创建、上传话术;外呼任务管理提包括实时外呼申请和审核、外呼任务数据的搜索。

对话交互

语音机器人的对话流程是由话术驱动的。话术是一个有向无环图,图的顶点称为话术节点,逻辑上可以分为开场白、结束语和业务话术,结构上可以分为主线节点、支线节点、标准问题节点等。图的边称为话术逻辑,一般可以分为正向逻辑和负向逻辑,分别由正向语料和负向语料表示。一个话术示例如下:

python3语音识别模块_智能语音机器人架构实践_第3张图片

业务方完成话术设计后,可以通过离线批量外呼和在线实时外呼两种方式使用外呼服务,其中离线批量外呼是在WEB管理平台上传联系人列表并指定外呼时间而创建离线批量任务发起外呼,在线实时外呼则是通过调用SCF接口传入联系人信息实时发起外呼。

一次完整的外呼过程可以分为通话前、通话中和通话后三个阶段,其过程如图所示:

python3语音识别模块_智能语音机器人架构实践_第4张图片

通话前主要完成防骚扰校验与SIP调度。防骚扰校验预先判断本次通话是否会对用户造成骚扰,避免因打扰用户带来的用户投诉, 因此在通话前会结合不同外呼业务与不同外呼类型进行防骚扰校验,目前采用方法有:黑名单过滤、外呼频次控制、外呼时间段控制、用户历史通话情绪判断等。SIP调度优先选择与被叫归属地相同的主叫SIP资源,次优选择与被叫归属地距离最近的主叫SIP资源来提高外呼接听率和降低外呼成本。

当SIP连接建立后,系统会发送话术开场白。系统语音经过语音采样和编码,通过RTP协议最终传送到用户端。同时,系统会接收用户语音,用户语音经过语音解码和重采样,通过VAD算法检测语音端点,语音部分通过流式语音识别转换为用户文本。用户文本经过意图识别和槽位识别,由对话管理系统选择合适的回复策略并生成系统回复语音。系统与用户完成多轮语音交互,直到用户或系统挂断通话。

当一通对话结束,系统会首先根据响铃识别通话状态(接听、空号、停机等);根据通话状态和对话内容判定用户意向(有意向、无意向、无法判断等)。最终,通话记录、通话内容及用户意向等会存储到相应的数据库中,同时系统会将调用方需要的字段通过WMB回调给调用方。

对于销售场景,人工销售需要对系统筛选的优质商机进行二次跟进。调用方需要向系统回传人工跟进数据,如人工电话跟进、人工文本跟进以及最终的商机成单数据等,用于系统优化意向判断模型,进一步提升对话效果。

意图识别

语音机器人中的意图识别有两层含义:单句意图和整轮意图。在交互过程中,语音模块会识别用户所说的话,并转写为对应的文本,单句意图表示用户所说的每句话所表达的意图,对话管理器根据单句意图确定对应的回复策略;整轮意图表示在完成通话后,根据通话内容判断用户对系统所说内容的意向,是倾向接受还是倾向拒绝,该标签会反馈给业务方,以便对用户进行划分。

单句意图识别又可以分为三部分。

第一,识别与通话行为相关的意图,包含:肯定、否定、在忙、不理解、继续聆听、提供信息、确认、更换、对比、提问、提供方案、建议、挂断、再见、问候、感谢、客气、抱歉、闲聊,共19个标签,这些标签的含义不随话术、语境的变化而改变,根据这类标签可以确定用户当前的回复大致要表达什么意思,对其中的通用意图(如:问候语、挂断等)可以直接给出回复,对于包含一定信息量的意图(如:肯定、提问等),根据话术中的配置实现简单的话术跳转。

python3语音识别模块_智能语音机器人架构实践_第5张图片

第二,识别标准问题,在实际交互过程中,用户通常会问些话术之外的问题,如:“你是谁啊?”等,经过数据积累会根据不同业务总结出一些具备代表性的标准问题,在配置话术时,需要根据业务场景为这些标准问题定制答案,在收到用户回复时,会先去匹配这些标准问题,若命中某个标准问题,则会返回对应的回复,并执行拉回策略,切换到之前的话题中。

第三,识别与语境相关的话术,前面两种意图都只考虑了用户单轮回复内容,很多情况下同样的回复在不同语境下表达了完全相反的意思,如:“我没找到工作”,对于问题“你找到工作了吗?”是否定回答,而对于问题“你还在找工作吗?”是肯定回答,这种情况下,会根据上文判断当前的回复是肯定还是否定。

整轮意图识别分为对话意向和自定义意图标签。

对话意向包含成功邀约、中性可跟进和明确拒绝,对于成功邀约的用户/商机,后续会有销售做进一步跟进,对于明确拒绝的用户/商机会放弃进一步跟进。

自定义意图标签,业务方除了关注用户对业务内容的关注程度外,可能还需要获取交互过程中,用户都提到了哪些关键点,业务方通过在话术中添加关键节点和对应的跳转逻辑,并在相关跳转逻辑上配置意图标签,在交互过程中一旦触发该逻辑,将会对用户打上该标签,实现获取用户的自定义意图的功能。

python3语音识别模块_智能语音机器人架构实践_第6张图片

意图识别是一个复杂且极具挑战性的问题,需要考虑业务、语义、语气等因素,还要在一定程度上避免语音识别错误带来的影响。在语义理解上,我们使用了TextCNN、DSSM、LSTM、BERT等深度学习模型,在规避语音识别错误上,我们使用了听不清语音分类,无意义语句识别等,当前意图准确率达到85%。

系统服务化

语音机器人后台系统采用微服务架构设计,使用58自研RPC框架SCF实现(参考 58RPC框架SCF的设计与实践)。整个后台服务的设计如下图所示:

python3语音识别模块_智能语音机器人架构实践_第7张图片
  • 实时外呼接入服务和WMB消息总线负责系统业务接入,实时外呼接入服务接收线上实时外呼请求,最终外呼结果通过WMB消息总线回传给业务方。业务方的人工跟进结果也通过实时外呼接入服务进行回传。
  • 语音机器人后台系统由主体外呼服务、ABTest服务、SIP资源调度服务、语音断句服务、语音识别服务、对话管理服务和三个意图识别服务等多个微服务组成。主体外呼服务贯穿整个通话过程,负责外呼的发起和语音的交互,在外呼发起前调用SIP资源调度服务拿到有效的SIP资源进行外呼,用户接听电话后,接收用户说话语音并调用语音断句服务和语音识别服务得到用户回复文本,再调用对话管理服务得到机器要进行回复的话术进行应答。主体外呼服务接收到用户回复语音后会进行缓存以供意图识别服务进行访问。对话管理服务在判断用户意图时会调用单句意图识别服务或真实意图识别服务得到回复话术,在整轮通话结束后调用整轮意图识别服务判断整轮通话的用户意图。
  • 意图识别服务利用深度学习模型进行意图判断,先使用离线数据在WPAI上训练好模型后进行上线,再调用WPAI在线预测服务进行预测。

总结

本文主要介绍了语音机器人的架构设计,包括总体架构、外呼流程和话术结构等。语音机器人各个模块使用的具体技术,如意图识别、对话管理等,后续会有相应的文章详细介绍。

语音机器人提供通用的语音外呼能力,可以应用于自动电话销售、产品服务推广、信息审核、语音通知等多种业务场景,目前已稳定接入销售、客服、运营等多个业务。后续语音机器人将重点优化语音外呼效果,提供简单快捷的接入平台,提高意图识别准确率,提升语音对话流畅度,给传统的销售、客服等人力密集型业务提效。


欢迎大家关注“58架构师”微信公众号,定期分享云计算、AI、区块链、大数据、搜索、推荐、存储、中间件、移动、前端、运维等方面的前沿技术和实践经验。

你可能感兴趣的:(python3语音识别模块)