计算机语音查询系统开发
计算机语音查询系统开发
赖友源
(广东工程职业技术学院,广州510520)
系统解决
;-舞j秘口碧毋嚣|g
摘要:利用先进的Dialogic语音卡将电信,厶\共交换网与计算机数据库技术相结合的语音查询系统,克服了传统窗13'
查询方式的不足,为用户提供优质的查询服务.
关键词:数据库服务器;功能模块;事件流
DevelopmentofComputerTelephonyQuerysystem I—AIYou—yuan
(GuangdongPolytechnicCollege,Guangzhou510520,China)
Abtract:TheadvancedDialogicvoicecardisusedtoimplementavoicequerysystemwhichco
mbineswithtelecompublicswitchingnetwork andcomputerdatabasetechnology.Thissystemcouldofferbetterservicesfortheriserandove
rcomedefectsofthetraditionalquerywindows. Keywords:databaseserver;functionmodule;eventflow 0引言
基于电话网的语音查询系统已经应用于各个领
域,掌握开发过程的关键步骤,可不断研究出与时宜相
配称的先进产品.以公金查询系统为例介绍计算机
语音查询系统的开发.
l总体设计
1.1功能需求
语音查询系统需满足用户的查询需求,可以在任
何时间,任何地点进行有效的查询,再没有时问和空间
上的限制,用户所需要做的就是拨打查询热线号码,并 提供查询用户ID和密码就可以了.
1.2系统配置
针对查询服务的现状和现有设备,语音查询系统 利用一块语音卡(Dialogic卡)进行前端电话查询受理, 并设立后端数据库服务器为受理前端进行数据提供 服务.
该语音查询系统以数据库服务器(DBSERVER)作 为整个公积金查询系统的中心服务器,它的数据来源 是各个业务营业点的业务受理计算机,这些计算机定 时将业务更新数据送到中心服务器,rI1心服务器接收 到这些数据后,经验证完整无误后,对DBSERVER进行 更新.
数据库服务器采用UNIX作为操作系统平台,数据 库服务器软件选用INFORMIX;电话查询受理前端的语 音平台选用Dialogic(两线),以及Dialogic的语音开发平
03 收稿日期:2010—03—
台WindowsNT.
1.3查询实现步骤
查询实现步骤:
(1)拨通语音查询热线号码.
(2)按语音提示:键入用户查询号码(ID)并确认; 键人用户密码并确认;键入查询事项号;键人查询参数 (如需要的话).
(3)等待收听.
(4)重复(2),(3)或挂机.
2功能模块
从功能来看,该系统分为3个功能模块.
2.1语音卡接口功能模块
主要分为2个部分:从语音卡接受用户查询输入以 及通过语音卡输出查询结果(语音形式),所涉及的主 要是硬件的接口编程问题.
2.2身份验证模块
用户要真正进入功能查询流程,必须先通过系统 身份验证,这是为保障用户信息的安全性而设置的.为 了给误输入的用户一个最为准确的提示,身份验证采 用逐层深入验证的方法.
全部通过身份验证才算真正成功完成,可以进入 用户功能流程(系统功能结构见图1): (1)金额查询模块.该模块根据用户的查询请求完 成用户金额的数据库查询,再以语音(话音)的形式将 查询结果
现给用户.
(2)时间查询模块.该功能模块查询用户的缴存时 间.
自动化应用20107期17
系统解决方案
语音接口模块f
l用户身份验证模块l
金额查询模块Il时间查询模块密码修改模块 \I//数据库查澍接r_I模块
图1语音查询系统功能结构图
(3)密码修改模块.该功能模块完成修改用户密码 的功能.
2.3系统设置与管理模块
该功能模块负责完成系统级的配置和管理功能, 主要针对数据库方面的管理.
3事件处理过程
当系统接到查询呼叫后,置状态为ST_WELCOME,
播放提示WELCOME—VOX+INPUTNO—VOX+ ENDLGLVOX,提示输人单位帐号.
事件处理过程详见表1.
表1流程处理表
接收完毕(getdlg—hdlr)提示完毕(play—hdlr)
当前状态:ST_WELCOME当前状态STWELCOME 操作:保存行号和单位帐号操作
1-将语音缓冲数据读人dxinfo;1接收~,-GetDigit0 2一判断数据是备有效.若(用户中断),rJ!IJSETHOOKON.跳.2状态=slrrNPL?O 3一复述输人R?删】MV0x+()+Rf妇l】MA0c_VO)椰1一v(? 当前状态:ST_INPUTNO当自状忿:STINPUTNO 操作排作:
1-将语音缓冲数据读入dxinfo;1接收数~}GetDigit0 2-判断数据:若为'#',则:(重新输人)2.状~ST1NPUTACC 2-1一保持原状态
2_2_接收数据Ggit0
若为',则:(继续)
2_3书积兀'A01_Vox+日虹VOx
当前状态ST_INPUTACC当前状态:ST_INPUTACC 操作:保存个人帐号和密码操作:
l一将语音缓冲数据读人dxinfo;l一接收数据GetDigit0 2一判断数据是否有效.若省(用户中断),则SETHOOKON.跳出.纠走态=STCHOOSE
3-~REPERACC_VOX+(*)+REPWD_VOX")~TJPS2VOX
当前状态:STCHOOSE当前状态:STCHOOSE 操作:操竹?:
1一将语音缓冲数据读/kdxinfo;1.接tr;~,GetDigit0 2一判断数据:若为'#',则:(重新输人)2-状态=STPERFORM 2-1一保持原状态
2_2-接收数据GetDit0
若为',则:(继续)
2.3胡O0sE-V?(+QR?慢vox
当前状态:ST_PERFORM
操作:
1将语音缓冲数据读人dxinfo;
2判断='1',则查询金额并播放;
3判断='2',则修改密码
4判断='3'.则查询缴存时间
5否则,
5-1状态=ST_CHOOSE
5播放a{00sE_v()x+QRHv()x 18;www.auto—apply.comi自动化应用
4程序维护
4.1程序内部处理流程
面向用户的大部分操作都是在2个函 在程序内部,
数内发生的:gitdg—hdlr()~I]play—hdlr0.前者发生在用户 输入完毕(具体的中断terminal条件I~tpt结构决定)之 后,因此适合于在此进行程序的数据接收工作,以及对 数据的处理,并播放play语音提示,系统播放完毕之后 (同样,中断条件由tpt结构决定)则会调用后者;因此, 后者是发生在语音播放完毕之后,在这个函数里所要 进行的操作一般是进行自定义状态的切换和通过调 用getdigit0接收用户输入并在接收完毕之后系统调用 前者,从而形成一个完整的环状事件流.
4.2中断条件
一
般而言,中断条件分为2种情况:语音播放中断 (例如,用户要求在按键时原来正在播放的语音应该停
止);接受中断.接受中断比较复杂,涉及到的情况比较 多,如最长function时间,最长静默时间,最长接受字符 长度(个数),特殊字符等等,具体的控制在tpt结构(可 以定义tpt数组,从而组合多个terminal条件). 4.3自定义状态
gitdg—hdlr0和play—hdlr0不停地被调用,由于程序必 须区别当前接受到的字符的意义,作用如何,所以必须 自定义流程状态,通过状态的处理和切换来保证程序 实际处理的逻辑性.至于如何自定义流程处理的状态, 则必须根据不同的实际应用来设计.
5维护建议
系统错误一般可分为2类:程序逻辑错误;程序本 身运行出错.
对于第…种错误,重点应该检查以下几个部分: 自定义状态是否合乎实际应用逻辑(程序通盘设计一
,语句为 级);状态切换是否合适(主要在play—hdlrO里dxinfo[channum].state=ST_XXXXX);对状态的处理是 否恰当(主要在getdg,hdlrO里,可检查switch语句). 对于第二种错误,最可能发生在对数据库查询或 其它涉及到数据库的操作中,需第一时间检查的有2个 地方:SQL句柄的分配(初始化)和释放.
程序对于每一个语音通道的启动都将启动一个进 程来负责,因此,要重视如何避免进程间资源共享冲突. 6展望
该系统利用了电信公共网络资源,是融合通信 的一个例子.而融合的语音和数据网络将是一个开 放的分组传输网络,在这个意义上的应用前景是十 分广泛的.