original in en Luca Bariani
en to zh Sheng Bao 鲍盛
我于1977年出生于意大利Ferrara. 2002年我在Ferrara毕业,并得到了一个电气工程学位.我是Ferrara Linux用户组和GNU Bayonne 小组的成员.我开发IVR和Sms电话服务.在GNU Bayonne项目中, 我撰写 文档和文章.我在一些开源会议上谈论Bayonne并维护意大利文网站bayonne.it.
Bayonne 是GNU计划中的IVR与电话服务器,也就是说它是一个自由和开源的软件.
IVR的意思是交互式语音响应.一个IVR系统(依赖于合适的硬件)将计算机世界和电话网连接在一起
并用他们接收到的指令(按键产生的音调信号,或者,有时,真实的声音指令)使他们相互作用.
IVR系统允许在没有人类操作员的情况下建立和管理完全自动的电话服务.
今天,每个人至少通过电话使用过IVR系统一次.(也许没有意识到).事实上,它们被每个电话公司(不论移动与否)用来作为他们 自己的电话或服务中心.只要想一想你多少次通过听自动和录制的声音从菜单中选择服务,或者准备转到人工服务 IVR服务器可以以多种方式交互本地和远处的资源,还有访问文件系统,数据库,网络等等. 所以IVR系统能被简单的集成到现存的系统中去,或者作为分布式系统的一部分.
借助IVR系统,很多电话服务都能够产生并被使用.下面是一些例子:
IVR系统工作在电话线上,借助于非常简单的语音系统的集成,通过语音对用户进行输入和输出的交互.这些语音系统包括TTS (文字语音转换:将书面的文字转换为语音的音频合成器)和 ASR (异步语音识别:将人的话语转换为书面文字的语音分析器). 前者使IVR系统能够从书面文字而不是预先录制的声音得到语音输出,后者使IVR系统能够识别输入声音带来的语音指令.
有了TTS和ASR系统我们能够提供更多的电话IVR服务:
总体上说,一个IVR能够提供电话网所提供的全部功能和普通的网站提供的每一条信息.很多的服务和可能都可以被 IVR系统实现.但是IVR提供的更多:电话网和信道是双向的,所以IVR系统能够直接呼叫用户.(普通网站却没有这种功能)
很长一段时间IVR系统是被垄断的,运营商没有自由软件的解决方案.他们都研发出针对自己硬件的 IVR服务器.针对这种情况,Bayonne是来自开源世界和GNU运动的回答.
Bayonne的主要和官方网站是www.gnu.org/software/bayonne ,那里你可以找到源代码和文档(安装和管理手册,很多范例和指南) 在bayonne.sourceforge.org有额外的资源和最新的开发截图. Bayonne有公开的(只读的)源代码CVS访问途径:1.2版本(生产应用的稳定版本)在savannah.org,而其1.3/2.0版本 (开发和试验版本)可以在sourceforge.org找到.
Bayonne的主要目的和特点是提供一个虚拟的IVR平台,其独立于使用者的硬件.事实上,Bayonne可以和很多IVR电路板 系列(还不是全部)工作,而不必依赖于它们.对每一个IVR电路板系列和/或制造商,Bayonne提供了一组模块化的驱动,这 个驱动定义了一个通用指令集和一个虚拟环境,用于普通应用并不依赖硬件.有了这个虚拟环境,我们可以开发出我们的 IVR环境而不必考虑所用的硬件,也就是说更改IVR电路板或者移植一个IVR服务到另一个有不同电路板的系统上无需修改代码
目前的Bayonne支持很多电路板,也有很多不同类型的,从2到120条电话线(模拟的或者数字的).更进一步,Bayonne能够 同时使用更多同一系列的电路板(在新的版本中我们甚至可以同时使用不同系列的电路板),所以数百计不同的电话线可以同时被 处理.遗憾的是,Bayonne目前不支持常见的串口或USB调制解调器(模拟,ISDN或GSM).
为了试验Bayonne,我们不需要任何昂贵的IVR电路板.我们只需要一个声卡,因为Bayonne提供了一个驱动,可以用台式机 的键盘,麦克风和喇叭模拟一个IVR电路版和相关的输入输出口.Bayonne可以在你的台式机上工作.
为了创建IVR服务,Bayonne有其自身的脚本语言,叫做CcScript(1.2版本的外部组件,被集成进了开发中的1.3/2.0版的 主软件包中).这个语言非常简单,具有完全的计算特性和主程序结构:条件块,循环,条件和非条件的跳转,子任务...CcScript 的主要特点在于具有“时间界定的”指令:在一个指令执行前,语言就知道其最大的执行时间.对于涉及外部系统,诸如文件系统, 数据库和网络连接的任务,有一个超时参数.如果执行超时了,操作就失败.从服务器的角度来看这是非常重要的,因为它允许Bayonne 可以提供决定性的和可靠的服务
Bayonne的计算能力是完全不受CcScrpt的计算能力的限制的.事实上,Bayonne能够毫无困难的和更高级的语言,比如Perl和Python 交流.这种直接的集成使得Bayonne继承了那些语言的全部库函数和模组:每一个计算操作,常用和不常用的算法,数据操作,连接数据库 或外部服务器(网页,Email,LDAP,文件共享)....所以Bayonne能够计算出所需的每个任务.
即使没有Perl和Python,Bayonne能够直接的连接到MySQL和Postgres数据库以及包括在CcScript中的SQL请求.用同样的方法, Bayonne可以访问文件系统并通过网络连接到远程资源上.更多的是,Bayonne可以直接和语音合成器TTS,如Flite,Theta(只能用英语)和 Festival(多语言的).Bayonne目前无法连接到语音识别系统上,不过这个功能已处于开发状态.
对大部分的IVR服务,Bayonne不需要外部的TTS系统,因为其自身已经具有了多语言语音模组(英语,法语,意大利语,俄语),它们 可以说出数字(原型和基数词),日期和时间(这个模组和声音是完全用户自定义的).这些语音模组包括真人录制好的声音,在Bayonne框架中 他们可以直接被用来实现大部分IVR电话服务
Bayonne能够以多种方式来处理来自电话连接和系统自身的输入:同步管理,在这种方式中Bayonne等待一个熟知的输入(比如等待 用户按下一个键),异步管理,这种方式下,当一个熟知的事件发生的时候,Bayonne收到一个提示(例如按键,或者超时),而非明显的 等待它.这两种输入管理方式允许Bayonne快速的重新相应用户和系统事件而不浪费时间.
因为目前的Bayonne是被开发出来在同时管理很多电话线的,所以是特化了多线程管理的命令和指令.每一个线程都可以通过信令和其他 线程交互.这就允许了线程同步和线程之间的数据交换,更多的,使用不同电话线的两个线程之间的交互.
这些特征都允许Bayonne适用于很广泛的情况.它可以被作为只有很少电话线的小型IVR服务,也可以被作为操作数百条电话线的服务中心. 借助Bayonne,我们可以简单拥有“快速和简单”的服务,或者是涉及外部系统的复杂服务.所以Bayonne是能够提供每种IVR服务的IVR服务器.