每年的双11,都是快递行业面临大考的时候,也是新技术锤炼的最佳时刻。目前,壹鸽智能语音对话机器人已在多家快递公司上岗,今年双11期间全天累计对话次数达百万次以上。
1. 智能语音对话机器人系统架构
一个完整的智能语音对话机器人系统主要由自动语音识别(Automatic speech recongnition,ASR)、自然语言理解(Natural Language Understanding,NLU)、对话管理(Dialogue Management,DM)、自然语言生成(Natural Language Generation,NLG)以及语音合成(Text To Speech,TTS)五部分构成。其中,对话管理包括对话状态跟踪(Dialogue StateTracking,DST)和对话策略(Dialogue Police,DP)。管道方法框架图如图1所示,首先ASR会将用户的语音转化成文本输入到NLU,然后进入到对话管理的对话跟踪模块,接着往下到对话策略模块输出action,NLG会将action转成自然语言,最后通过TTS转化成语音传达给用户。
图1
2. 智能语音机器人交互时序流程
智能语音机器人呼叫流程的交互时序流程(以呼入为例),如图2所示,主要流程为:
1.客户拨打电话给智能语音机器人。
2.智能语音机器人接听电话后,呼叫中心平台调用业务流程管理接口,启动并初始化对话流程状态图。
3. 业务对话流程管理模块初始化对话流程状态图后,发送开场白话术给呼叫中心。
4. 呼叫中心平台接受到开场白话术,根据配置选择进行TTS语音合成或者直接播放录制好的录音,并进行放音操作通知客户。
5. 客户收到开场白语音后同样做出相应的语音回复,开始进行对话流程。
6. 呼叫中心平台收到客户的回复语音后通过MRCP协议调用ASR服务进行语音识别。
7. 呼叫中心收到ASR返回的文字结果后,通过HTTP协议调用业务流程对话管理接口进行对话状态更新。
8. 业务流程对话管理接收到呼叫中心传来的请求信息后,调用语义解析模块进行语义解析,并根据语义解析的结果选择话术返回给呼叫中心平台并更新对话状态。
9. 呼叫中心收到当前话术,根据配置选择进行TTS语音合成或者直接播放录制好的录音,并进行放音操作通知客户。
10.根据配置好的业务流程状态图,重复6-9步骤,直至呼叫对话流程结束。
11.业务对话流程结束后,呼叫中心通知ASR服务结束当前的语音转写时间请求。最终通知业务流程对话管理模块挂机操作,并向呼叫管理平台上报呼叫结果。
图2
3. 智能语音对话机器人模块介绍
壹鸽智能语音平台集成了语音识别引擎、语音合成引擎、语义理解引擎,能够提供语音识别、语音合成、语义理解等语音及语义服务,典型功能需求包括:
3.1 语音识别ASR
语音识别能够将用户的语音转换成文字。针对语音识别应用中面临的方言口音、背景噪声等问题,在实际业务系统中所收集的涵盖不同方言和不同类型背景噪声的海量语音数据的基础上通过先进的区分训练方法进行语音建模,能够使语音识别在复杂应用场景下均有良好的效果表现。
模型优化包括声学模型优化和语言模型优化。由于声学模型训练需要大量的数据(客户的标注数据不足以训练声学模型),并且同时需要音频及对应的标注文本,声学训练又是一个高计算的任务,需要多台高性能服务器及GPU构成的硬件系统,所以给客户做声学优化不可行。语言模型优化相对声学模型优化,其生成模型方式及硬件要求,可在利用客户标注数据进行,以下是语言模型优化的流程:
图3
语言模型优化主要分为需求评估、数据准备、模型训练、测试评估、迭代优化五个部分,其中标绿框表示不一定能做(有时候拿不到客户的样本数据),标蓝框表示第一次优化工作需要做的。
3.2 前端语音处理
前端语音处理,利用信号处理的方法对说话人的语音进行检测、降噪等预处理,以便得到最适合识别引擎处理的语音,其主要功能包括端点检测VAD、流式语音智能断句和噪音消除。
3.2.1 端点检测
语音端点检测是对输入的音频流进行分析,确定客户说话的起点和终止点的处理过程。一旦检测到客户开始说话,语音开始流向识别引擎,直到检测到客户说话结束。这种方式能够使得识别引擎在客户说话的同时开始进行识别处理,做到最大限度的即时处理。
n 端点检测过程:
1. 基于语音信号的特征,用能量,过零率,熵 (entropy) , 音高 (pitch) 等参数以及它们的衍生参数,来判断信号流中的语音/非语音信号。
2. 在信号流中检测到语音信号后,判断此处是否是语句的开始或结束点。在商用语音系统中,由于信号的多变的背景和自然对话模式而更容易使得句中有停顿(非语音),特别是在爆发声母前总会有无声间隙。因此,这种开始/结束的判定尤为重要。
n 端点检测目的:
1. 减少识别器的数据处理量。可以大量减少信号传输量及识别器的运算负载,对于语音对话的实时识别有重要作用。
2. 拒绝非语音的信号。对非语音信号的识别不仅是一种资源浪费,而且有可能改变对话的状态,造成对用户的困扰。
3. 在需要打断 (barge-in) 功能的系统中,语音的起始点是必须的。在端点检测找到语音的起始点时,系统将停止提示音的播放。完成打断功能。
n 端点检测对识别系统的影响
随着语音识别应用的发展,越来越多的系统将打断功能作为一种方便有效的应用模式。而打断功能又直接依赖端点检测。端点检测对打断功能的影响发生在判断语音/非语音的过程出现错误时。表现在过于敏感的端点检测产生的语音信号的误警将产生错误的打断。例如,提示音被很强的背景噪音或其它人的讲话打断,是因为端点检测错误的将这些信号作为有效语音信号造成的。反之,如果端点检测漏过了事实上的语音部分,而没有检测到语音。系统会表现出没有反应,在用户讲话时还在播放提示音。 端点检测对识别系统的识别效果影响也很大。语音信号的起始点和结束点判断有误,有可能影响整个信号的完整性,在语句的开头或结尾漏掉一些有用的数据。当这种情况发生时,很可能对识别的准确度有特别大影响。不完全的信息会使识别率降低。
n 商用端点检测应具备的特性:
1. 端点检测的精确度高。
2. 更好的背景噪声和语音模型:使系统对背景噪声,其它说话人和非语音的声音有很好的拒绝功能。
3. 默认的系统相关参数有很好的适用性,而在有需要的现实环境中,可以通过系统调节来适应通话环境,改善端点检测的效果。
4. 对信道有自适应能力:在对话开始后能很快适应当前的信道特征,使得端点检测的准确度有进一步提高。
5. 独特的识别服务器的反馈和非语音持续时间双重结束点判定功能,有效的改善了语音结束点的判定。特别是对较长的语句效果更加突出。
基于可靠的端点检测技术和智能反馈,智能打断功能不仅应该在一般的环境下工作出色,而且能有效的拒绝环境噪声,非语音的高强噪声(呼吸,关门等) 环境中其它人的声音。
3.2.2 流式语音智能断句
现有的语音处理方案是先用语音活动检测模块对语音进行断句,再将断开的语音进行自动语音识别。但是,在电话语音交互场景中,VAD面临着两个难题:
1. 可以成功检测到最低能量的语音(灵敏度)。
2. 如何在多变的复杂噪声环境下成功检测(漏检率和虚检率)。
漏检反应的是原本是语音但是没有检测出来,而虚检率反应的是不是语音信号而被检测成语音信号的概率。相对而言漏检是不可接受的,而虚检可以通过后端的ASR和NLP算法进一步过滤,但是虚检会带来系统资源利用率上升,以及造成响应不及时。
对于在目标人交互语音前发生虚检,主要问题是增加ASR识别处理数据量,如下图所示:
图4
图5
对于在目标人交互语音后发生虚检,不仅增加ASR识别处理数据量,还会造成响应不及时。现有语音处理方案存在断句不准确的问题,主要有两个主要缺点,一是无法过滤噪音和无效的语音,另外就是对说话人的要求较高,中间不能有停顿。如果句间停顿时长设置的太短,容易造成截断;句间停顿时长设置太长,又会造成响应不及时。如下图所示:
图6
图7
流式语音智能断句模块是主要由语音识别模块、信息流聚合模块、动态窗口设定模块、断句识别模块构成。其中,语音识别模块用于接收并识别语音实时流,并按照指定的频率输出带有时序的语音识别结果;信息流聚合模块用于对带有时序的语音识别结果进行优化处理,并整合经过优化处理后的带有时序的语音识别结果,以形成语音识别结果序列;动态窗口设定模块用于从语音识别结果序列中选择指定范围的文本,进而将指定范围的文本用于断句分析;断句识别模块用于分析指定范围的文本的语义,并根据语义确定是否进行断句。
图8
3.2.2 噪音消除
引擎具备噪音消除功能,在实际应用过程中背景噪声对于语音识别应用是一个现实的挑战,即便说话人处理安静的办公室环境,在电话语音通话过程中也难免会有一定噪声,语音识别系统需具备高效的噪音消除能力,以适应客户在千差万别的环境中使用的要求。
3.3 后端识别处理
后端识别处理,具有对大词汇量、独立于说话人的健壮识别功能,简单来说,就是能够满足大词汇量,并能适应不同年龄、不同地域、不同人群、不同信道、不同终端和不同噪声环境的应用环境。
3.3.1 语义置信度
在语音识别领域一个很重要的因素是置信度输出,在限定词汇量的条件下,如果客户的提问或回答不超出限定的词汇,ASR识别后文本的正确率可以达到95%以上。但是,一旦问题超出限定的领域或者出现集外词,ASR的识别性能就会严重下降。因此,对ASR识别结果的可信度进行度量就显得非常重要,它可以降低集外词(OOV)带来的不利影响。
采用的方法是利用统计语言模型衡量ASR识别所得到的整个句子的可信度。如果一个句子的词误识率比较低,构成这个句子的众多三元短语(W1W2,W3),会比较多的出现在统计语言模型Trigram中,如图9所示;反之,如果出现较多的识别错误,那么句子中大部分的词W1和元短语(W1,W2)将出现在Unigram或Bigram中,很少有三元短语命中Trigram,如图10所示;对于一个由若干词W1,W2,……,Wi,……,Wn构成的句子,可根据各个词及它所构成的短语在统计语言模型中出现的情况对其中每个词打分。出现在Trigram中的可信度高,因而得分较高,出现在Bigram或Unigram中的可信度低,因而得分较低。再在各个词得分的基础上得到整个句子的可信度得分。若得分低于某个门限,则认为句子中包含较多的识别错误或者集外词,可信度较低,应当被拒识。
图9
图10
ASR识别后文本是由一个个词构成的词序列,其中某些词对于理解整个句子有着非常重要的作用,这就是所说的关键词。在这一步要做的就是提取出这些关键词,形成一个关键词串,作为下一步“问题理解”的输入,这种处理同时也是为了降低“问题理解”时的难度,如图11所示。可以把特定的对话节点看作一个问题域,针对该问题域设计关键词表,预先规定在这一问题域内的关键词。这个关键词表是ASR系统中相应问题域下的词汇表的子集,记录了每个关键字的汉字串,类标识和词序号等信息。在提取关键词时,只需要在句子中进行搜索,检测到出现在关键表的关键词,记录它们出现的位置和次序。比如一个句子“你好,我想问一下,我那个嗯,快递是不是寄错地址了?”,这里可以提取出关键汉字串“问一下”、“快递”、“寄错地址”。对于不包含关键词的句子,例如“啊,可以说给我打了,里头哭了。”,可把它视作无效或者错误的输入,给出相应的提示。
图11
以对话节点来分类语料,可较好的捕获用户说话的习惯和领域用语,某一节点场景下机器人与客户的对话可限定在某个问题域内进行。对句子进行准确的理解,并不需要考虑句子中的每个词,只需对几个蕴含关键概念的关键词汇进行理解就能把握句子的意义。关键词识别技术从语句中抽取用户关心的关键信息,能够降低对识别系统和环境噪声的要求。
3.3.2 语料统计分析
利用日志数据,学习用户的语言使用习惯,从日志中自动抽取语意标注数据和构建领域语言模型。以对话节点来分类语料,基于不同典型节点的语料进行词表抽取,如图12所示。
图12
针对每个问题域,需要确定有限大小的“词汇表”,并通过大量的训练语料训练出相应的基于词类的统计“语言模型”。“关键词表”可以从“词汇表”中提炼得到,它记录的是对于理解问题有实质作用的词汇及其相关信息。此外还要在“关键词表”的基础上形成“关键词类型组合模板库”,其中每个模板代表问题域内的一类具体问题,此模板库在“问题理解”过程中使用,如图13所示。
图13
以快递物流领域的对话语料为基础。对话过程是两个人通过电话以一问一答的形式进行的,电话一端代表客户,另一端是智能语音客服机器人,客户端说话方式完全是自由的和随意的。
为了表述方便,我们首先给出如下定义:
定义1 对话语句(Utterance) 从对话者一方开始讲话到讲完停下或被对方强行打断为止,所说的全部内容称作一个对话语句。
定义2 对话子句(Dialog sentence) 一个对话语句中所包含的分句,称作对话子句。
例如: 嗯|你好/我想查|一下/我|那个|快递|什么|时候|能|到/现在|还|没|送来
这一段文字从开始到结束是一个对话语句,在这个对话语句中包含有4个对话子句(由“/”隔开),每一个子句中包含多个词(由“|”隔开)。
语料整理流程如图14所示,整理后语料(日志)形式如图15所示。
图14 语料整理流程
其中,词典标注采用人工方式,语料标注采用机器自动标注与人工核对相结合的方法。当第一次收集语料时,词典是不存在的,我们只需要对整理的语料进行分词,然后提取所有的词汇,并依据这些词汇建立相应的词典。词典一旦建立之后,当领域转移或扩展时,系统只需将新收集的语料中在词典中没有的所有新词提取出来,然后在人的辅助下决定是否将这些新词添加到词典中去。这样,对于应用领域接近或同一领域扩展时,只需要处理少数新的词汇即可,而避免了大量的重复工作。
图15
n 语句Utterance
嗯,你好,我想查一下我那个快递什么时候能到现在还没送来?
n 语句分词(机器标注)
嗯|你好|我想查|一下|我|那个|快递|什么|时候|能|到|现在|还|没|送来
n 分割对话子句Dialog sentence(人工审核标注)
嗯|你好/我想查|一下/我|那个|快递|什么|时候|能|到/现在|还|没|送来
Ø Sentence1:嗯|你好
Ø Sentence2:我想查|一下
Ø Sentence3:我|那个|快递|什么|时候|能|到
Ø Sentence4:现在|还|没|送来
n N元短语Ngram提取(机器提取关键子串)
Ø 一元短语(Unigram)
嗯、你好、我想查、一下、我、那个、快递、什么、时候、能、到、现在、还、没、送来
Ø 二元短语(Bigram)
嗯你好、我想查一下、我那个、那个快递、快递什么、什么时候、时候能、能到、现在还、还没、没送来
Ø 三元短语(Thigram)
我那个快递、那个快递什么、快递什么时候、什么时候能、时候能到、现在还没、还没送来
n N元短语Ngram审核确认(人工审核关键子串)
图16
3.3.3 智能调整识别策略
在客户与语音识别系统进行多次会话过程中,系统具有智能调整识别策略,能够自动根据对话节点来动态调整语音识别策略,通过训练典型节点语言模型(如,开场白节点语言模型),在客户不同节点语音交互时,加载相应节点的语言模型与通用语言模型融合,共同处理用户输入,如图17所示。并且,系统也能够根据系统运行情况来动态调整语音识别策略,在系统较忙时(CPU占用较高)采用计算量较小但具有足够精度的策略以保证系统的响应速度,在系统不忙时(CPU占用较低)采用精度更高的策略以达到更优的识别结果,该功能在保障稳定运行的基础上充分利用系统的计算资源,有利于保护客户的设备投资。
图17
3.3.4 语音识别呼叫日志
语音识别的呼叫日志在系统中有着非常重要的作用,该日志记录输入的音频、加载的语法、识别过程的中间结果、识别模块呼叫过程、识别使用的各种参数、识别结果、音频前瞻缓冲信息、断句方式以及当时的系统环境信息,这些数据显示在运营系统中,为效果分析和优化的基础和依据。
3.4 语音合成
语音合成,能够将输入文本实时转换成流畅、清晰、自然、具有表现力的语音数据,输出高质量的语音。
1. 能够保证对文本中未登录词、多音字、特殊符号(如标点、数字)、韵律短语的智能分析和处理;
2. 能够支持输入GB2312、GBK、Unicode、UTF-8等多种字符集以及普通文本等多种格式的文本信息;
3. 能够提供预录音合成模板,对合成文本中符合语音模板固定成分的文本使用发音人预录语音,非固定成分使用合成语音,改进合成效果,满足更广泛的需求;
4. 能够提供音量、语速、音高(基频)等多种合成参数的动态调整功能。
3.5 语义解析
3.5.1 语义解析架构及流程
快递领域的特点是问题通常是为一些重复性的服务请求,比如退货,查快递,下单,查运费等, 实现的是一个非常特定的目标,客户只能同智能语音机器人聊设定好的固定主题,其可能的输入和输出是有限的,只需尽可能有效地完成具体的任务即可。这类对话系统从整体架构上可分为两层:
1) 意图识别层:识别语言的真实意图,将意图进行分类并进行意图属性抽取。意图决定了后续的领域识别流程,因此意图层是一个结合上下文数据模型与领域数据模型并不断对意图进行明确和推理的过程。
2) 问答匹配层:对问题进行匹配识别及生成答案的过程。在对话体系中可按照业务场景进行不同典型问题类型的划分,并且依据不同类型采用不同的匹配流程和方法。
领域意图识别一般只要识别用户语义所指的类别,行动类意图则是在一个领域内的操作类意图,电话呼叫场景下意图识别任务有着以下难点:
1)数据量匮乏:一般情况下,一个新的领域任务都会面临冷启动的问题,相应的意图识别也面临着缺少足够训练语料甚至无训练数据的问题,因此更多真实情况下,意图识别一开始都是小数据建模问题。
2)语音识别错误传递:很多情况下,意图识别的对象并不是准确的文本,一方面可能是用户拼写错误,另一方面可能是由于语音识别的误差。这就要求意图识别模型要具有很强的泛化能力与鲁棒性。
3)短文本意图不明显:真实口语交流中,用户的表述一般属于短句,很多情况下单句并不具备足够的信息判断其意图,给意图识别模型增加了困难。
针对以上主要问题,一般从以下几点考虑:
1)针对数据量匮乏的问题,一方面可以借鉴迁移学习策略,利用现有的大量文本数据或者己有的其他领域任务辅助当前的新任务,一种简单的迁移学习方法即是使用预训练词向量或语言模型结合简单深度神经网络模型对数据建模。另一方面,针对无训练样本或极少训练样本的新意图,一开始可以结合模板匹配或基于手工特征的传统机器学习方法做粗糙的意图识别,这种策略具有精准率高,召回不足的特点,可以再冷启动阶段快速构建意图识别系统,同时可以在小数据集模型拟合能力不足的情况下进行快速干预。基于小数据量搭建起基本系统,通过不断获取真实语料,返回来再迭代模型,优化模型。
2)语音转写误差传递的问题在电话呼叫系统中更为突出,语音识别系统往往不能达到100%的转写准确率,因此,模型要对包含噪声的文本有相应的容错能力。通过实际样本分析可以发现,一般用户的拼写或者语音转写错误的字往往是正确文本的同音字。因此,引入字(当拼写错误时,分词系统往往无法准确分词)和拼音特征可以很大程度上缓解拼写错误和转写错误的问题。
3)针对短文本意图不明的情况,一般将上下文信息考虑到意图识别的过程当中。而考虑上下文一般有两种方式,第一种是将历史信息直接加入到模型当中对当前文本意图进行判断,另一种方式则是直接根据当前领域、前一状态通过规则判断当前文本意图。一个灵活并且泛化能力较强的意图识别模块往往结合了多种方法,如上所述,这里,意图识别采用规则模板以及深度模型相结合的方法,其中规则模板的思路方法较为简单和传统。
根据快递业务场景特点,语义解析分为了意图识别和智能问答两个子问题。因此设计了基于文本分类的意图识别模型,以及基于深度语义匹配的智能问答模型。语义解析流程如图18所示:
1. 提取用户语音识别转写后的文本首先通过数据预处理单元,进行文本去噪(过滤语音转写生成的语气词等)、分词、分字、提取拼音。
2. 预处理后的文本进入语义解析单元,进行通用意图识别,该部分依次进行模板匹配和通用意图识别模型,若成功识别为某一通用意图,则返回意图ID,否则进入步骤3。
3. 3进入业务意图识别,该部分同样依次进行模板匹配和通用意图识别模型,如果成功识别为某一通用意图,则返回意图ID,否则进入步骤4。
4. 进入智能问答进行语义匹配,如果成功匹配到标准问题,则返回问题ID,否则返回无意图。
图18
3.5.2 意图识别
意图识别模型主要结构如图19。模型输入为文本,输出为该文本所属不同意图的概率。本文将意图识别模型抽象为三层,包括:嵌入层、编码层、输出层。嵌入层主要功能为生成词表示;编码层以词表示为输入,完成对句子进行编码,输出句子向量;输出层将句子向量进一步变换,计算损失函数,最终通过反向传播算法更新网络参数。
图19
3.5.3 智能问答
智能问答的语义匹配模型的基本架构如图20所示。模型共分为输入编码层、交互层以及融合层:输入编码层使用双向LSTM分别对两个输入词嵌入做序列编码,以捕获更丰富的语义信息,该部分词嵌入也可以采用字符、拼音粒度的表示;交互层首先计算输入编码层表示的Attention特征,然后同词嵌入、输入编码层的输出特征拼接。拼接特征通过双向LSTM编码,进一步捕获带有相关信息的句子编码,作为下一层的输入;融合层对浅层和深层信息进行融合,并对最终相似度得分进行预测。
图20
用户带着明确的目的而来,希望得到明确满足特定限制条件的信息和服务,例如:下单、查时效或查件等。由于用户的需求可能比较复杂,需要分多轮进行陈述,用户也可能在对话过程中不断修改或完善自己的需求。此外,当用户陈述的需求不够具体或明确的时候,机器也可以通过询问、澄清或确认来帮助用户找到满意的结果。因此,任务驱动的多轮对话不仅仅是一个简单的自然语言理解加信息检索的过程,还是一个决策过程,需要机器在对话过程中不断根据当前的状态决策下一步应该采取的最优动作(如:提供结果、询问特定限制条件、澄清或确认需求等)从而能够最有效的辅助用户完成信息或服务获取的任务。由于用户的数据会逐步增长,在不同的阶段对准确率的预期也不同,因此我们需要有一种渐进式的方式,针对不同阶段提供不同方法来达成当前目标,其核心思想在于如何有效的利用用户提供的数据。比如少量数据的时候使用比较基础的相似度模型,有几百条数据后应用迁移学习的方法,再进一步就可以使用传统的机器学习模型,同时还会根据数据量进行各种模型的对比和调参。
4. 智能语音对话机器人系统指标
1. 时间特性要求:系统极限响应时间到底是多少?如果以微服务的形式调用,总的时间被分摊到每一步的时间消耗应该是多少。
2. 灵活性:系统的各个模块应该在可控的状态内,每一个模块可插拔,保证线上质量。
3. 安全性:内外网隔离,注意网络安全、系统安全、用户安全、数据安全。
4. 可扩展性:系统和集群稳定运行,主要的集群实现双机热备、灾备,当单个节点发生故障可以迅速切换。
5. 可用性:系统的各项功能可用,系统上线必须符合一定的正确率。