SIP服务器的硬件
其实说起来服务器系统的硬件构成与我们平常所接触的电脑有众多的相似之处,主要的硬件构成仍然包含如下几个主要部分:中央处理器、内存、芯片组、I/O总线、I/O设备、电源、机箱和相关软件。这也成了我们选购一台服务器时所主要关注的指标。
整个服务器系统就像一个人,处理器就是服务器的大脑,而各种总线就像是分布于全身肌肉中的神经,芯片组就像是骨架,而I/O设备就像是通过神经系统支配的人的手、眼睛、耳朵和嘴;而电源系统就像是血液循环系统,它将能量输送到身体的所有地方。
对于一台服务器来讲,服务器的性能设计目标是如何平衡各部分的性能,使整个系统的性能达到最优。如果一台服务器有每秒处理1000个服务请求的能力,但网卡只能接受200个请求,而硬盘只能负担150个,而各种总线的负载能力仅能承担100个请求的话,那这台服务器得处理能力只能是100个请求/秒,有超过80%的处理器计算能力浪费了。
所以设计一个好服务器的最终目的就是通过平衡各方面的性能,使得各部分配合得当,并能够充分发挥能力。我们可以从这几个方面来衡量服务器是否达到了其设计目的;R:Reliability——可靠性;A:Availability——可用性;S:Scalability——可扩展性;U:Usability——易用性;M:Manageability——可管理性,即服务器的RASUM衡量标准。
由于服务器在网络中提供服务,那么这个服务的质量对承担多种应用的网络计算环境是非常重要的,承担这个服务的计算机硬件必须有能力保障服务质量。这个服务首先要有一定的容量,能响应单位时间内合理数量的服务器请求,同时这个服务对单个服务请求的响应时间要尽量快,还有这个服务要在要求的时间范围内一直存在。
如果一个WEB服务器只能在1分钟里处理1个主页请求,1个以外的其他请求必须排队等待,而这一个请求必须要3分钟才能处理完,同时这个WEB服务器在1个小时以前可以访问到,但一个小时以后却连接不上了,这种WEB服务器在现在的Internet计算环境里是无法想象的。
现在的WEB服务器必须能够同时处理上千个访问,同时每个访问的响应时间要短,而且这个WEB服务器不能停机,否则这个WEB服务器就会造成访问用户的流失。
为达到上面的要求,作为服务器硬件必须具备如下的特点:性能,使服务器能够在单位时间内处理相当数量的服务器请求并保证每个服务的响应时间;可靠性,使得服务器能够不停机;可扩展性,使服务器能够随着用户数量的增加不断提升性能。因此我们说不能把一台普通的PC作为服务器来使用,因为,PC远远达不到上面的要求。这样我们在服务器的概念上又加上一点就是服务器必须具有承担服务并保障服务质量的能力。这也是区别低价服务器和PC的差异的主要方面。
在信息系统中,服务器主要应用于数据库和Web服务,而PC主要应用于桌面计算和网络终端,设计根本出发点的差异决定了服务器应该具备比PC更可靠的持续运行能力、更强大的存储能力和网络通信能力、更快捷的故障恢复功能和更广阔的扩展空间,同时,对数据相当敏感的应用还要求服务器提供数据备份功能。而PC机在设计上则更加重视人机接口的易用性、图像和3D处理能力及其他多媒体性能。
1、开源的sip服务器端,比较好用的是Asterisk,标准C程序实现,代码清晰。
2、sip的client相对比较多,主要有exosip,pjsip和opal。exosip简单易用,在PC上用比较方便。但是涉及的相关资源太多,用了osip,srtp,ms2等众多的开源库,ms2下面还用到了ffmpeg,别的不说,光编译就是噩梦。opal功能最强,虽然也用到了ffmpeg ,但是自己封装的非常好,采用插件方式,调用灵活。opal采用class方式提供封装,接口非常友好。感觉唯一不爽的地方,就是低层使用了ptlib,虽然多平台下都很好用,但放在嵌入式下感觉稍庞大了一些。pjsip精巧,方便移植,嵌入式下应该是首选。不过视频频支持方面扩展起来比opal麻烦。个人感觉,对于windows开发者来说,pjsip最大的好处就是代码调试方便。整个工程一次编译通过,另外两个库还要找很多相关的资源
。
3、其他的一些协议栈也调试过,比如reSipphone,好象是这个名字,还有Yate,不过从快速开发角度看,都不太合适。现在搞sip开发的,一开始就是先找好协议栈。linphone,ekiga什么的,但庞大。对于刚开始做的,最好是一个精简的demo。后来找到pjsip下面的几个例子,慢慢地了解了sip的工作流程,当然少不了抓包工具和tcpdump。
不过,其实,sip没有想象中的那么麻烦。现在回头看,刚开始做项目,使用协议栈绝对不是好想法。如果换个方向,先熟悉SIP基本协议,然后自己改造一个,或完全写一个,可能效果更好。
序言
随着人工智能命题的提出,近年来涌现出一大批基于人工智能的呼叫中心业务服务商和集成商,仅智能外呼这一模块儿就将近百家公司在推广和运营。可以说整个基于人工智能技术的市场开始蓬勃的发展起来了。
简单介绍一下什么叫做智能语音交互平台。其实大实话就是在呼叫中心基础上,集成 ASR、 TTS、的呼叫服务平台。
那么如何我们自己去搭建智能语音系统呢?
我们先列出搭建智能外呼系统的搭建需要那些技术和服务:
个人认为:
[if !supportLists]· [endif] 首先最重要的是交换机:
[if !supportLists]1 [endif]PBX也就是交换机,商用设备原厂包括像华为、Avaya、思科、东汇等这些生产硬件交换机,
[if !supportLists]2 [endif]还有就是目前FreeSitch、asterrisk、OpenPBX这些软件交换机。
[if !supportLists]· [endif] 其次是AI技术: 及包含语音识别、语义理解、语音合成这三种技术是核心组成部分。语音识别相当于人的“耳朵”,接进电话后,对人的话语进行处理转义成系统能够识别的数据交由系统处理去识别。在进一步的话,可以转义为文字。语义理解相当于人的"大脑",根据话语识别人的意图。语音合成,相当于人的”嘴巴“,识别人的意图之后,依照特定的回答方式,去回复和引导对话。
[if !supportLists]· [endif] 再者是前端服务平台:即用户登录、配置呼叫流程,建立呼叫任务、统计呼叫数据、导出呼叫报表的网站,这个是终端用户唯一可以看到并且操作的界面。
[if !supportLists]· [endif] 最后是外呼线路:其中包括三大运营商以及其他小型的集成线路供应商,主要目的是外呼电话或者是接入电话。
也有人可能有疑问:”智能语音交互系统最重要的不是人工智能么,和交换机有啥关系?”为什么说最重要的是交换机呢,原因是不管我们是外呼还是接入电话、都需要前端服务平台把外呼请求发送给交换机,通过外呼线路而拨出去。换句话说交换机是控制整体的外呼情况。硬件的交换机,比如说像华为的交换机,价格在大约几万到几百万不等的价格。对于想要建立自己的智能语音交互系统来说,价格对于一些小型公司来说承受不起,而FreeSitch这种软交换则大大方便了小型公司建立自己的智能语音交互系统。
什么是FreeSwitch?
FreeSitch是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供语音和聊天的产品驱动。FreeSitch 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。支持多种通讯技术标准,包括 SIP, H323, IAX2 以及 GoogleTalk ,同时也可以方便的与其他开源的PBX系统进行对接。而且具有很强的伸缩性。旨在为音频、视频、文字或任何其他形式的媒体,提供路由和互连 通信协议 。
FreeSwitch 的典型功能
[if !supportLists]· [endif]在线计费、预付费功能。
[if !supportLists]· [endif]电话路由服务器。
[if !supportLists]· [endif]语音转码服务器。
[if !supportLists]· [endif]支持资源优先权和QoS的服务器。
[if !supportLists]· [endif]多点会议服务器。
[if !supportLists]· [endif]IVR、语音通知服务器。
[if !supportLists]· [endif]VoiceMail服务器。
[if !supportLists]· [endif]PBX应用和软交换。
[if !supportLists]· [endif]应用层网关。
[if !supportLists]· [endif]防火墙/NAT穿越应用。
[if !supportLists]· [endif]私有服务器。
[if !supportLists]· [endif]SIP网间互联网关。
[if !supportLists]· [endif]SBC及安全网关。
FreeSwitch最典型的功能是作为一个服务器,并用电话客户端软件连接到它。虽然FreeSwitch支持众多的通信协议,但其最主要的协议还是SIP,通过SIP中继发起会话协议。
使用FreeSwitch这种软交换的好处在于,你只需要一台服务器就可以随时搭建自己的外呼中心,而且FreeSwitch支持跨平台运行。能够原生运行Windows、Linux、BSD等诸多32/64位平台。
FreeSwitch内部使用线程模型来处理并发请求,每个连接都在单独的线程中进行处理,不同的线程间通过Mutex互斥访问共享资源,并通过消息和异步事件等方式进行通信。FreeSwitch本身是比较稳定的,它是比较优秀的开源软件。另一方面来讲,FreeSwitch又是比较激进的,它的开发分支里会有大量的新特性加入,因此在测试不全面的情况下,很容易出现不稳定的情况。而在用于生产环境的情况下,系统的稳定性是系统能否正常被使用的关键。之前我们在做项目的过程中,就遇到一些FreeSwitch不稳定的情况,导致外呼情况不理想。举一个例子:我们在进行测试外呼的时候,语音通话断断续续,虽然前端服务平台可以很好的接受到数据的传输,但是,真正在与人工进行沟通的时候,会出现各种各样的沟通障碍,为了解决这一个问题,我们花费了几个月的时间,去研究FreeSwitch的结构特性。终于把这个问题解决掉。我们的项目才得以继续推动,最终得以真正落地部署实施。
也有人可能有疑问:”FreeSwitch软交换虽然重要,但是既然是智能语音交互系统人工智能不重要吗?”,重要,当然重要!容我慢慢道来~
AI 技术
1 通信原理
先简单解释一下正常打电话这个流程
流程:A→PSTN→B
解释:PSTN是Public
Switched Telephone Network,意思为公共交换电话网络,也就是我们的运营商的网络电话,
那我们平时如何给呼叫中心比如打电话是如何打的?:个人A打电话给呼叫中心16 打电话,拨通后听到录音,您好,拨打人工台,请按0键,按键之后,出现盲音,真正接通之后,客服接通了电话。
流程:A→PSTN→PBX→IVR→客服
解释:PBX也叫交换机、相当于整个呼叫中心的出入口
IVR也叫互动/交互式语音应答,语音导航,也就是相当于咨询业务请按键,这一环节,根据业务去分流到客服。
智能语音交互平台(智能机器人)落实到具体具体业务场景是如何实现的:
如:”个人A要在某一个大型酒店预订位子“,
A拨通后先听到了声音,“您好,我是机器人小岳,需要我帮您订位子是吗?
个人A说,“我不要和机器人说话,找个真人来”。
然后听到录音,“为您转接很贵的真人客服,排队中,请稍后”。
几分钟后接通,真人客服接了电话。
流程:A→PSTN→PBX→IVR(TTS→ASR→NLP→TTS)→ACD→客服
解释:在IVR部分:不再需要提示按键,而是直接问来电方需要办理什么业务,然后识别语音、理解意图后,根据用户的需求,回答后转入对应的业务队列排队。
上边是接通的流程,呼出的流程与之相反,就不在赘述了。
2 现在市场上的AI技术的运用
目前市场上的不管是ASR、TTS、NLP都被阿里百度科大讯飞等巨头公司所占据,这些技术在国内基本已经成为定局。像ASR这类引擎市场上大部分都是用的阿里云和讯飞云的,要不就是百度云。阿里云和讯飞云的识别率高一些,可以达到97%左右、百度的差一些,识别率在80%左右,我们当初在做项目的时候选择ASR做过测试,事实证明阿里云识别率更高同时也可以识别方言。因此,我们在做项目的时候,当仁不让的选择了阿里云的
TTS我们选择的是讯飞的,选择的理由很简单,毕竟科大讯飞是人工智能领域巨头级的公司,质量当然有的保证。
3 AI 能力对接
在具体落地中,这个领域的常规参与者通常具备呼叫中心能力或者AI能力其中一种,而主要的对接点也就在于AI能力与呼叫中心设备去对接,而ASR/TTS与呼叫中心设备对接的常规协议主要是mrcp/sip。
媒体资源控制协议(Media Resource Control
Protocol, MRCP)是一种通讯协议,用于语音服务器向客户端提供各种语音服务(如语音识别和语音合成)。有两个版本的MRCP协议,版本2使用SIP作为控制协议,版本1使用RTSP。
实际对接的时候,会遇到不少技术问题,当我们ASR/TTS引擎做私有云部署,为了避免了内外网穿透时防火墙的诸多设置和语音流的时延。这在我们当时对接的时候也花费了好大一番功夫。
前端服务平台:
其中最重要的就是配置呼叫流程这一块儿了,
这一块儿很容易被忽视,但是这反而是可以出成绩的地方。一般来说一套最佳话术模板,可以以一敌万。心理学基础必须要有,一句话怎么说能让接电话的人最大概率的顺着自己的思路走,达成目的,从而形成特定细分领域机器人话术模板,得到最佳的外呼效果(接通率、通话时长、电销意愿、催收意愿)或者是接通效果(满意度)
其余的基本就是web端的东西了,具体功能点呢,即用户登录、配置呼叫流程,建立呼叫任务、统计呼叫数据、导出呼叫报表,这些功能点基本实现就可以,因为站在产品角度,产品最重要的价值就是可以呼通或者接通用户的电话,并且能够准确的识别用户的意图,并且准确的回答用户。这就是智能语音交互系统的最终目标,也一直是我们的最终目标。
外呼线路厂商:
一般如果是购买系统的话,是给提供线路的,只需交一些线路费用。如果是自己做项目的话,网上、淘宝上一大堆,费用可以谈,也给提供线路对接的接口。
结语
虽然现在市场上做智能语音交互系统的比较多,但一般只限于各个行业的电话销售,真正意义上的智能语音交互还是很少的。原因很简单,虽然原理不是很难但是真正落地实施的时候,遇到的困难非常的多,几乎是一步一个坑。好在现在已经真正的落地实施了,方方面面的效果都还是很不错的。一年多的辛苦没有白费。哈哈~
写这篇文章尝试给大家简单介绍一下智能语音交互系统,然才疏学浅,疏漏和不当之处在所难免,权当给大家抛砖引玉。
诸多细节限于主题和篇幅的要求不做详细记述,如有问题,欢迎随时交流。
MicroSip首先注册到SIP服务器,与SIP服务器之间的整个通信数据包如下
从上图可以看到,MicroSip直接发送注册信息包到SIP服务器,SIP服务器回复一个200OK,整个注册流程结束,下面拨打电话流程
sip电话是通过流量来传输音视频数据的,要在手机上填写sip的号码和密码,服务器地址,这样就可以注册到SIP服务器上,可以通过网络拨打注册到该服务器的所有号码。
会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。
SIP与负责语音质量的资源预留协议(RSVP)互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。
扩展资料:
SIP通过以下逻辑功能来完成通信:
1、用户定位功能:确定参与通信的终端用户位置。
2、用户通信能力协商功能:确定参与通信的媒体终端类型和具体参数。
3、用户是否参与交互功能:确定某个终端是否加入某个特定会话中。
4、建立呼叫和控制呼叫功能:包括向被叫“振铃”、确定主叫和被叫的呼叫参数、呼叫重定向、呼叫转移、终止呼叫等。
——网络电话
——SIP
在你的服务器端(asterisk)建立分机。可以在sipconf中手动添加。然后再在你的客户端(x-lite)填写帐户密码、和服务器地址。注册。但是首先要保证网络可以互通。开通5060端口
架设VOIP,就可实现内部免费电话,快速提供网线增加电话分机数量,充分满足不同地域的用户的语音沟通需要,在3G和WIFI网络的支持下,手机免费网络电话不再是梦。
如何快速架设VOIP服务器呢?
建立VoIP服务器的前提条件
一台计算机,作为服务器
服务器通常需要拥有固定的公网IP地址
架设人员需要了解网络建站的知识
VOIP服务器的选择:
目前有四大协议:MGCP,h323,SIP,IAX2这四种常用的协议,选择协议是其中很重要的一环。
其次是寻找落地资源,寻找落地资源的难度更大一些。
这四种协议中,H323,SIP现在占据主流地位,iax2协议是其中最新的一种。
目前相关的网站有:Freeswitch,OPENh323,ASterisk等。IAX2网络设置最简单,能轻松穿透防火墙。
泥娃VOIP服务器内置的是支持IAX2的VOIP服务器,支持多达30000部内线电话,采用SKYPE为落地方案。
公司服务器上的网站外网能访问到,需要有公网IP地址并进行端口映射操作,外网才能访问到网站。
0条评论