陈可新,黄伟民
(福州职业技术学院,福建福州350108)
近年来,随着用户信息服务需求的快速发展,呼叫中心已经在国内各行业得到广泛的应用。传统的呼叫中心通过IVR(Interactive Voice Response)交互式语音应答,以提高呼叫服务质量并节省费用。IVR可以使用户获得7X24信息服务,提高服务质量并协调用户操作过程。但是IVR也使得用户要面对复杂、繁冗的系统IVR导航菜单,用户需要逐层听取菜单提示,根据引导逐步按键操作才能得到服务,这容易给用户造成较差的系统信息服务体验。同时,由于用户不能通过IVR获取便捷的自助服务,使人工座席资源大量地耗费于简单、重复性的劳动中,这将降低呼叫中心整体工作效率。
利用语音传递信息是人类最方便、最快捷的一种方式,语音识别技术(Automatic Speech Recognition,ASR)是机器通过识别和理解,将语音信号中的词汇内容转换为计算机可读的输入,如按键、二进制编码或者字符文本序列的技术。语音识别本质上是一种模式匹配识别过程,语音识别过程基本包括语音信号的预处理、语音的特征提取、训练和识别等组成部分[1]。语音识别技术在电话信道上的应用已成为当前通讯领域中最重要的应用之一。通过在新一代呼叫中心系统中引入语音识别技术作为用户和呼叫中心的交互手段,用户可以直接使用语音与系统进行交互,由此能够提升用户的信息服务体验,提高系统的工作效率。Asterisk软交换系统是一个开源的软件VoIP(Voice over Internet Protocol)解决方案,它在中小型企业预算可承受的范围内提供商业交换机的功能和伸缩性,基于Asterisk的VoIP解决方案已成为当前中小型企业呼叫中心的首选。
在企业呼叫中心系统中通过引入语音识别技术,可以创建智能化IVR语音导航系统,使系统成为能听懂自然语言的互动式语音应答系统,将传统的IVR树形的按键操作,转换为扁平化的系统对话,使用户能直达业务节点接受服务。语音识别技术的应用,将使传统的IVR语音导航菜单扁平化并大大缩短通话时间,降低IVR业务节点的放弃率,提升用户服务体验。通过在人工服务中应用语音识别,能够实现用户语音的“可视化”,完成用户需解决问题的词条及关键字的识别,使辅助座席人员快速地进行知识库知识节点的搜索匹配,提高系统中座席人员的工作效率和服务能力[2]。以下将以基于Asterisk的呼叫中心系统为例,说明语音识别在呼叫中心中的应用及具体实现方法。
Asterisk是一个应用广泛、结构明晰、可扩展性好的软交换系统。Asterisk内核包含了5个必要的核心操作模块和4个可加载的应用接口,5个核心模块分别是PBX核心模块、动态加载器模块、实时调度和I/O管理器、编解码转换模块和应用启动器模块。Asterisk的4个扩展接口分别是编码转换接口、Asterisk通道接口(SIP,IAX等)、扩展应用接口(AGI,AMI)、文件格式接口。Asterisk的可扩展性使其广泛地应用于电话通信的各个领域[3]。
作为Asterisk与外部交互的主要方式,AGI(Asterisk Gateway Interface)提供给开发者强大的功能及灵活性。通过调用AGI接口程序,开发者可以采用perl、php、C、java等多种编程语言编写AGI程序与Asterisk交互,程序可以在Asterisk的拨号方案中被调用。Asterisk与AGI通过标准的输入输出流交换信息,Asterisk系统内部通过输入输出流与外部资源进行信息交互,实际交互过程中Asterisk默认给AGI传送相应的输入变量,AGI程序接收后处理,返回信息给Asterisk系统[4]。
在基于Asterisk系统中进行通信应用开发,需要完成相关应用的拨号方案及AGI接口程序设计。拨号方案是Asterisk系统的核心,它定义了Asterisk对来话和去话的处理流程,控制系统的呼入和呼出的处理和路由,也是系统配置连接行为的地方。Asterisk启动后,系统核心将启动一个线程监听通道消息,接受并处理通道上的会话请求,当Asterisk从一个通道上收到一个用户的呼入连接,Asterisk可从拨号方案中查询对应的通道命令,通道接口负责管理呼入者的连接状态。拨号方案的每一次执行属于一个通道(channel),实际的交互过程为AGI程序与某一通道进行信息交互。
在基于Asterisk的语音识别过程中,系统将在用户呼入时在拨号方案中执行AGI语音识别程序。用户通过系统接入号呼入系统,系统提示用户通过语音输入提交问题信息,用户根据系统提示完成语音问题提交,系统在拨号方案调用AGI程序录制用户语音信息,在把语音转换成系统调用的语音识别引擎(如Google语音识别引擎)可接收的音频格式后,将接收到的语音音频文件提交给语音识别引擎进行分析处理[5]。系统语音识别引擎对接收到的用户语音音频文件进行分析处理,并将分析的结果文本和语音识别率回送给Asterisk系统。若识别率达到系统要求则进行处理并提供后续服务,若未达到系统要求则提示用户重新提交语音信息。基于Asterisk的用户语音信息识别处理流程如图1所示。
图1 Asterisk语音识别流程
Asterisk系统允许基于AGI接口开发电信应用模块,通过AGI接口程序,开发人员可以在电话呼叫的任意阶段与Asterisk交互。通过在Asterisk的拨号方案中调用语音识别AGI应用程序,系统允许用户在呼入系统听到提示音后采用语音方式与系统进行信息交互。支持对用户语音输入进行识别的Asterisk拨号方案设计如下:
exten= > 1235,1,Answer()
exten= > 1235,n,Playback(hello)
;;调用AGI程序记录用户语音信息,并进行语音识别
exten= > 1235,n(record),agi(speech -rec.agi)
在上述Asterisk的拨号方案中,speech-rec.agi是负责实现用户语音识别的AGI应用程序,可在程序中调用系统设置的语音识别引擎,该语音识别引擎可以是系统基于自身业务特点的语音识别系统,也可以是通用的语音识别系统,如谷歌、微软等提供的语音识别系统等。语音识别引擎对系统发送的语音音频信息进行分析,并将分析后的结果,即用户语音信息对应的文本返回给Asterisk通道变量,最后在Asterisk的拨号方案中对通道变量中的返回值进行分析和处理。
利用Asterisk的RECORD FILE函数能够实现对电话通道内用户语音信息的录制,直到接收到DTMF(Dual Tone Multi Frequency)再确认结束按键,或者超时结束[6]。在用户语音信息录制结束后,可以将用户语音数据封装,编码成符合系统要求的音频文件(如x-flac格式)并提交给语音识别引擎进行处理,提交语音信息时需要事先设置语音识别引擎的URL地址,将编码后的音频文件采用POST方式提交到语音分析引擎的接口地址,下面给出使用perl语言完成的语音信息录制及音频文件提交代码:
最后,将语音识别引擎回送的识别结果文本和识别率返回到Asterisk的通道变量中,若识别率达到要求(程序中设置识别率不低于80%),则可以对用户提交的问题进行后续处理,若未达要求则提示用户需再次提交语音信息,或采用其它方式与系统进行交互。
综上所述,本文简要地分析了当前呼叫中心系统中传统IVR语音导航存在的问题,介绍了语音识别技术在呼叫中心智能IVR导航系统中的作用,对利用Asterisk的AGI编程接口开发语音识别功能的原理和过程进行阐述,并给出基于Asterisk调用语音识别引擎实现用户语音识别的详细实现过程。系统通过对呼叫中心呼入用户的语音信息进行录制、分析及转换,使用户采用更加灵活、人性化的方式与系统进行信息交互,较好地提升了用户信息服务体验,并提高了基于Asterisk的呼叫中心座席资源的工作效率。
[1]刘荣辉,彭世国,刘国英.基于智能家居控制的嵌入式语音识别系统[J].广东工业大学学报,2014(2):49-53.
[2]刘向宇.探讨语音识别在智能客服系统中的应用[J].中国新通信,2014(6):79.
[3]张平波,高承志.基于Asterisk的VoIP软电话系统的设计与实现[J].信息化研究,2013(4):35-39.
[4]刘志伟,余金山.基于Trixbox电话语音通知系统的设计与实现[J].计算机与数字工程,2010(2):148-151.
[5]张巍,贾玉辉,张志楠.一种语音识别的可定制云计算方法[J].中国海洋大学学报:自然科学版,2014(1):112-117.
[6]Leif Madsen,Jim Van Meggelen,Russell Bryant.Asterisk:The Definitive Guide,Third Edition[M].O’Reilly,2011:475 -488.