语音和数据通信(共7篇)
语音和数据通信 篇1
现代战争要求通信速率高、信息传输能力强、组网灵活、易于安装和维护、通信可靠性优良、安全性好等特点。激光通信技术的出现,有效地弥补了有线通信网络不灵活,无线电通信的安全性能较差,容易受干扰的缺点[1]。大气激光通信以光信号作为载波并以大气作为传输介质,能够完成点到点或点到多点的信息传输,在IP数据网、电话网的入网应急设备中可大规模普及应用。随着高速大容量信息传输需求的不断扩展以及通信相关技术的进步,大气激光通信技术已成为未来通信技术发展应用的重要领域[1]。
利用激光代替光纤实现计算机之间信息实时高速传递,主要进行了3方面工作: ( 1) 搭建激光通信平台,建立激光链路。( 2) 将以太网传输的电信号和大气中传输的光信号进行相互转换,主要实现了两台计算机通过激光进行视频通话。( 3) 设计了传输速率测试软件,实时监控传输速率。
1方案论证与设计
1. 1方案论证
设计了针对网络信号的大气激光通信的链路系统。该系统采用光电介质转换芯片将网络中传输的电信号转换为光信号以便于在大气中传输,即将原始电信号调制到激光上,通过大气传输实现大气激光通信。 通过速率测试软件能对网络速率进行实时监测。在网络通信中,网络信号传输过程中,传输速率是不固定的,因此有必要设计自适应速率匹配。使用光电转化芯片可完成网络中的电信号与光信号的转换,并具有10 /100 Mbit·s- 1速率自适应机制。在光电调制方面, 一般情况下由于网络速率基本在100 Mbit·s- 1以下, 因此可采用光强度调制,这完全能够满足设计要求。 另外要考虑的是,在光传输与接收方面大气中对光性质的影响。在大气中,雾霾、液滴、烟尘等是影响激光传输的主要因素[2]。考虑一般情况,大气对激光的损耗约为3 ~ 10 d B /km,设计所采用的激光发射与接收设备为1 × 9光收发一体模块,其发射功率范围在1 ~ 1. 7 m W,接收光信号灵敏度为- 31. 0 d Bm,完全满足设计要求。
在软件设计中,采用C#中的Performance Counter控件能够对网络数据进行实时监控,因此能够满足设计要求。对于网速测量,通过普通软件( 如Fei Q、 Net Meeting等) 传递大文件的方法来测试网络速度受硬盘读写速度限制。因此,在网速测试中,采用生成随机数的方式放入内存中,通过重复发送随机数来达到最大网速测试的目的。
1. 2总体设计方案
设计大气激光通信系统的主要目的是实现两台计算机的无线互联和高速传输。系统的组成部分为信源、信道和信宿,其中信源和信宿包括相互通信的计算机、光发射设备、光接收设备及其外部设备如声音、视频等输入设备; 光发射设备包括信号接口电路、电光调制电路、半导体激光器、光发射装置以及对准装置; 光接收设备包括光接收装置、光电探测器、光电解调电路以及与发射设备同样的对准装置[3]。图1和图2为基于以太网的空间光通信系统的基本框图。
光发射设备的主要功能是将电脉冲信号变成合适的光脉冲信号以便在大气中传输,激光二极管( LD) 是关键器件。LD把电信号转换为光信号的调制方式用两种: 直接调制和外调制。在大多数情况下,为降低系统的成本及设计复杂度,在低速率情况下通常采用直接调制方式,即注入调制电流直接实现光的强度调制。
从数据终端设备PC机上连接的网线接入RJ45接口的TP模块。其中RJ45接口和网卡之间的是非屏蔽双绞线( Unshielded Twisted Pairs,UTPs) ,其内部由两对互相交叉的双绞线来传输信号。在100 Mbit·s- 1的以太网传输中,双绞线的信号电平是三电平重叠调制变换( Modulated Lapped Transform - 3,MLT3) 码,这是一种三电平多极性码,其信号的编码形式是4B5B码。 为将从网络适配器接收的多电平信号转换成适合光电转换设备处理的单极性电平信号,并隔离彼此之间的电磁干扰和直流分量,必须用隔离变压器进行耦合。 反之,将光电转换设备产生的单极性电平信号转换成网络适配器能处理的多电平信号,也是同样情况。当RJ45接口接收来自双绞线的10 /100 M数据时,在隔离变压器滤波之后将数据输送到光电介质转换芯片, 经过译码和电平转换后,形成光信号并传输至光收发一体化模块,通过自聚焦透镜形成激光束发射出去[4]。 当接收端光收发一体化模块接收到光信号时,光电介质转换芯片将光信号转换成电信号,并将生成的电信号进行数据译码和电平转换,将电信号传输到RJ45接口,并传回目的计算机。
通信系统中设置有光发射和光接收装置,且每台计算机均可向对方发射经过调制的光信号,同时也能接收来自对方的光信号,如此实现全双工通信[5]。从计算机A向计算机B发送以太网数据的流程如下:
( 1) 计算机A通过网络适配器,将要需要的原始数据传输到信号接口处理电路中,对信号进行滤波,且耦合到以太网介质转换电路中。
( 2) 信号经以太网介质转换电路进行适当的时钟恢复、解扰等处理,并将在以太网中传输的MLT - 3电平转换成适合在大气传输的单极性NRZ电平,再传输到光发射设备电路。
( 3) 光发射设备电路的功能是向光源提供驱动电流, 同时将电信号调制到光波上,实现信号的电/光转换。
信号调制成光信号的形式,在空气中传播。计算机B系统的光接收装置就可以接收来自计算机A的光信号,经过处理还原出原来的信息。计算机B接收来自计算机A的数据,流程如下:
( 1) 光收发模块接收来自计算机A的光信号,将光信号进行光电解调,转换成为电信号。
( 2) 变换后的电信号在光接收设备电路和以太网介质转换设备电路中进行信号放大、时钟提取以及数据判决等处理恢复,恢复后的数据传输至计算机B。
通过收发过程,完成数据的传输。同理,从计算机B向计算机A发送数据的过程也如此。
2原理分析与硬件设计
2. 1原理分析
在自由空间光通信中,信息要通过大气信道进行传播,以光波作为载波,把所要发送的信息加载到光波上进行传播。在大气环境下背景光的干扰较大,系统需要的光源功率需要匹配调制速率。针对移动应用平台间实时语音通信的需求,以语音信号为特例,给出直接调制原理框图。语音信号经过直接调制的方法调制成可以在大气上传输的光信号,调制变换如图3所示。
移动应用平台间需要大量传输IP数据包。IP数据包是网络传输的信封,其说明了数据发送的源地址和目的地址,以及数据内容和其传输状态。一个完整的IP数据包由首部和数据两部分组成。首部前20 Byte属于固定长度,存在于所有IP数据包; 后面是可选字段,其长度可变,首部后是数据包携带的数据, IP数据格式如图4所示[6]。
对于光电转换芯片,设计采用ICPLUS公司开发的IP113ALF芯片。IP113A LF芯片是48脚LQFP封装,该芯片广泛应用于快速以太网光纤收发器设计,是一种技术成熟的高集成度产品,可实现10 /100BASE - TX与100BASE - FX之间的转换
光收发一体模块中使用激光驱动芯片MAX3738, MAX3738采用自动功率控制( APC ) 工作模式,当MAX3738正常工作时,数据从IN - 端和IN + 端输入, 经输入缓冲电路和数据通道处理后,控制差分对调制器输出以实现调制,调制后的信号从OUT - 端和OUT + 端输出,去驱动外接激光管; 当输出功率变化时,反馈信号从MD端输入,消光比控制电路通过调节调制电流和偏置电流变化,来自动维持平均输出功率和光幅度功率的稳定。
对光载无线信号的解调也有两种方法: 强度调制直接检测( IM/DD) 和相干检测。强度调制直接检测就是对强度调制的光载无线信号直接进行包络检测, 即强度调制信号直接通过光电探测器即可恢复出原信号。
2. 2硬件设计
以太网收发电路由RJ接口、耦合变压器、以太网收发器以及收发器与调制驱动电路接收解调电路之间的接口组成,其中以太网收发芯片是核心单元。芯片内部结构框图和系统框图如图5所示,以太网光收发芯片系统框图如图6所示[7 - 8]。
3软件设计与流程
根据以上方案,软件设计部分主要实现网速实时测量,以及最大通信速率测量。网速测量操作流程如图7所示,最大通信速率测量如图8所示。
在网络速率监视中,由客户端直接生成随机数,向指定端口持续发送数据,在显示界面记录实时传输速率。由于内存的读取速率远高于网络速率,从而保证网络最大传输速率测量的准确性。
4系统测试与分析
测试软件: Netmeeting,进行实时视频传输; 基于. NET的网速测试软件,分为客户端与服务器。测试过程: 计算机以太网口与光电转换设备用网线连接,由于发射的是不可见光,先使用红光光源在光学对准设备上从发送端瞄准接收端,对准无误后红光光源换回原信号光源; 使用同样方法反向接入链路,确保链路通畅。测试结果如图9 ~ 图12所示。
从测试结果可看出,当光链路建立成功,两台计算机可通过激光进行无线视频,传输正常; 当光路被遮挡,传输终端,两台计算机所显示的内容就无法同步, 传输中断; 当光链路重新建立,两台计算机又可重新建立连接。传输由于网卡和芯片的限制,100 Mbit·s- 1带宽的极限速度是12. 5 MB·s- 1,设计链路达到的最高速度已接近网卡极限。由于在服务器端设置有缓存区,所以在发送数据时,部分数据留在缓存区中未被发送,导致服务器端的速率略低于客户端。
5结束语
提出了一种基于以太网和无线激光传输的通信链路系统,解决了较短距离移动平台间的无线激光通信。 研究结果表明,该设计能够双向、实时、大容量高速传输音频视频等数据。研究的局限性在于通信距离较短以及光学对准问题,进一步的研究方向为较长距离下通过激光直接通信方案的实现。
摘要:针对移动应用平台间进行较短距离的直接通信,设计了一种基于以太网和无线激光传输的通信链路系统。该系统使用直接调制的方式将以太网发出的电信号调制到光波上,将携带信息的载波激光束聚焦、对准发送至接收设备;接收设备将采集到的信号进行解调,由光信号还原出发送方输出的电信号,经以太网传输至接收端,实现信号的双向传递;该系统可实时、大容量、高速地传输语音、数据、视频和图像等信号,且通信质量稳定可靠,保密性和安全性能优良。测试结果表明,该系统能较好地在大气间进行实时高速地数据通信,满足移动应用平台间的保密需要。
关键词:以太网,无线激光通信,IP数据传输,直接调制
综合通信语音平台设计 篇2
1平台功能
纵观国内各种语音通信平台, 基本上都是基于单一制式环境下的语音通信, 而该系统平台除了具备基本的语音通信功能外, 还有如下特有功能:
1.1呼叫流程定制。系统提供对有线和无线两种呼叫接入方式的支持, 同时提供多种不同类型的呼叫排队及分配算法;系统提供图形化的呼叫流程定制功能, 可以方便地定制有线、无线呼叫处理流程。
1.2多制式通信系统的接入和互通。系统能够支持IP专网、公众电话网的接入, 同时提供与350M集群、800M数字集群、350M无线常规通信系统的接口。此外, 还可以提供一些特殊通信体制系统的接口, 如军用短波电台;能够支持800M数字集群、350M模拟集群、350M常规通信系统之间的互联互通, 以及上述系统与IP专网、公众电话网之间的互通。
1.3指挥调度。在各种不同制式的通信系统互联互通的基础上, 支持不同网络的通信终端之间的直接呼叫功能, 为统一的调度指挥提供支撑平台。
2系统体系结构
综合通信平台系统是一个以PBX为核心, 基于网络的分布式应用系统, 如图1所示。
从物理上连接上说, 系统中所有的音频连接均通过PBX来汇接实现, 系统中所有硬件设备均接入本地网络, 并通过网络通信实现数据交换和控制管理。
作为无线接入终端存在的800M数字电台、350M模拟电台、短波电台以及手机接口设备提供DB9 (RS422和RS232) 的串口控制, 因此整个系统使用串口联网服务器Nport设备, 实现串口通信到网络通信之间的转换。最终, Nport设备将各种无线终端设备接入了系统网络。
3系统硬件说明
综合通信平台可以支持有线和无线两种类型的呼叫, 此两类呼叫分别通过两种途径呼入系统, 有线呼叫通过H20-20程控交换机呼入系统, 无线呼叫则通过无线接入设备进入系统。
3.1 H20-20交换平台。H20-20程控交换机是整个平台系统功能实现的核心, 其不仅提供了有线呼入的途径和呼叫控制的有效手段, 同时也是实现有线、无线互联互通的基础。
3.2无线接入控制设备。无线设备包括800M数字接入设备和350M模拟接入设备, 每种设备提供一组接口, 包含, 一个RJ45接口, 用于音频输入、输出。一个DB9 (RS422) 接口, 用于呼叫控制, 通过Nport设备转换成网络接口。接入其他定制设备, 也需要提供这样的接口。
4系统软件设计
整个软件系统由多个功能模块构成, 各个模块之间相互独立, 分别执行特定的任务。根据系统内部功能侧重的不同, 整个软件系统主要可分为下面几个模块:
4.1 CTI服务模块.CTI服务模块负责实现所有语音资源的接续、挂断等控制, 以及相关资源状态信息的监控。该模块基本上对应HIL链路的管理, 负责处理同交换机通信的一切具体工作, 并同时建立同服务调度模块的连接, 交互相关消息。它完成以下主要功能:
4.1.1同时提供对Opea LAN HIL的支持及链路冗余, 建立并管理与交换机的TCP/IP会话。4.1.2将相关信息由内部信息格式封装为Open LAN HIL格式的数据报, 并发送到H20-20交换机。4.1.3从H20-20交换机接收数据信息, 并将其由Open LAN HIL协议格式解析为内部信息格式。
4.2呼叫调度管理服务模块。呼叫调度管理服务 (CDMS) 模块是整个系统的核心模块, 负责所有系统功能的逻辑实现。主要完成以下功能:
4.2.1建立同CTI服务模块的通信, 提供数字录音、IVR等系统的接口, 处理各类相关消息。4.2.2建立同无线接入服务模块的通信, 处理无线数字设备、无线模拟设备、手机接口设备以及短波电台等设备的相关消息。4.2.3建立同系统监控软件的通信、同呼叫记录代理服务的通信, 处理相关消息。4.2.4建立同座席客户端软件 (A-gent OCX) 的通信, 处理相关消息。
4.3无线接入服务模块。无线接入服务 (TCU) 模块主要由800M数字接入服务、350M模拟接入服务、手机接口服务以及VOX设备状态服务等几类子模块构成, 分别负责同相关设备进行消息交互和消息处理。其主要完成以下功能:建立同CDMS服务模块之间的通信, 处理相关消息;建立同800M数字、350M模拟接入设备、手机接口、VOX设备之间的通信, 控制相关设备。
5系统稳定性设计
5.1错误处理。考虑到系统稳定性和可靠性方面的要求, 系统中对于各软件模块运行中出现的错误和失败处理都要遵循以下的规定:
5.1.1能够产生错误和失败的每个动作 (函数调用) 都要被检查。5.1.2如果动作失败, 这次失败应该由其上层的调用者进行处理, 而异常则交由C++默认的结构化异常处理程序来向上抛出。
5.2自检机制。基于系统数据一致性方面的考虑, 系统的各个关键模块中建立数据自检机制, 以保证系统内部各个模块之间, 以及系统内部和外部之间数据信息的一致性, 从而加强系统的稳定性和可靠性。自检机制的建立主要遵循以下规定:
5.2.1建立独立的工作线程检查数据的一致性, 数据一致性的自检需要定时、循环进行。5.2.2数据自检的核心基准信息必须唯一, 并且可以方便地从系统或者模块外部获取。5.2.3以外部数据状态为主自动进行更新, 以保持内、外部数据状态的统一。
5.3工作线程监控和管理。系统在实际运行过程中包括多个甚至大量的工作线程来分别处理不同的任务, 处于系统稳定和可靠性方面的考虑, 系统需要建立管理线程或者采用其他的手段来对各个工作线程进行监控和管理。在系统各个模块设计时可以考虑采用以下方式来加强对工作线程的控制。
6系统冗余设计
系统的冗余将由各个关键软件模块的冗余来实现或者使用系统冷备冗余实现, 这样不仅降低了系统的冗余难度, 而且同样可以提高系统的安全可靠性。
一般情况下, 网络中LAN故障发生的几率远高于主机系统, 因此为了增强系统运行的可靠性, 在CTI模块设计时支持对HILLink冗余是提高系统的安全性首选。
6.1 Open LAN HIL冗余。CTI子系统为双网卡配置, 分别同两个LAN区段相连。CTI模块被配置通过一个LAN区段的INServer同交换机建立链路。一旦CTI模块检测到当前链路失败, 就自动切换启用另一个网络区段同交换机重新建立会话。
6.2系统冷备冗余。系统可以提供整个平台的冷备冗余功能, 当前的平台由于某个功能模块出现故障而不能够正常工作时, 备份系统将接管整个系统的呼叫处理工作。由于系统平台的冗余采用冷备方式, 因此在主、备系统切换时会产生呼叫损失。
7结论
综合通信语音平台采用了开放性模块化的设计思想, 在核心语音交换设备的基础上, 能够外接多种制式的通信设备终端, 并且能够把所接入的设备无缝的融合在一起, 为社会应急处置提供方便快捷的语音指挥调度。
该系统的推出, 填补了国内多制式综合通信的空白, 带动了国内其通信他厂商在该领域的发展, 并且在国内政府、公安应急指挥等方面得到了充分的应用, 进而发展到了海外市场, 目前厄瓜多尔已经在整个国家的每个大中城市均建设了综合通信平台, 能够更方便的调度各应急处置单位, 极大的提高了城市的应急处置能力。
参考文献
[1]周韧研, 商斌.串口通信开发入门与编程实践[M].北京:电子工业出版社, 2009, 4.
[2] (美) 史蒂文斯 (W.Richard Stevens) 著.范建华译.TCP/IP详解 (卷1:协议) [M].北京:机械工业出版社, 2007, 8.
[3] (澳) 麦斯阿塞克著.马素霞等译.需求分析与系统设计[M].北京:机械工业出版社, 2007, 9.
语音和数据通信 篇3
Lab VIEW具有强大的信号采集功能和网络通信功能, 这些功能使得Lab VIEW的用户可以很容易编写出具有强大网络通讯能力的Lab VIEW应用软件, 实现远程虚拟仪器。为了将人的语音或某个地点现场的声音信号远传, 可以依托Lab VIEW这些功能, 将联网计算机声卡上采集的语音信号, 进行远程语音数据的点对点传输。应用环境的网络拓扑图, 如图1所示。
1 利用Data Socket技术传输语音
Lab VIEW实现网络通信有3大类方法: (1) 使用网络通信协议编程实现网络通信, 可以使用的通信协议类型包括TCP/IP协议、UDP、串口通信协议等; (2) 使用基于TCP/IP的数据传输协议DSTP的Data Socket技术实现网络通信; (3) 使用共享变量实现网络通信。由于网络语音通信要求实时性强。本文采用第二种方法即Data Socket技术实现网络语音通信。
Data Socket是NI公司提供的一种实时数据传输技术, 可用于一个计算机内或网络中多个应用程序之间的数据交换, 是专门面向测量和自动化工程的网络实时高速数据交换的编程技术。Data Socket克服了传统TCP/IP传输协议需要较为复杂的底层编程、传输速率较慢 (特别是对动态数据) 等缺点, 大大简化了实时数据传输问题, 它提供了一种易用、高效、可编程的软件接口, 能够很方便地实现网络上的多台计算机之间的实时数据交换[1]。
Data Socket包括了Data Socket Server Manager、Data Socket Server和Data Socket函数库这几个工具软件, 以及DSTP (Data Socket transfer protocol, Data Socket传输协议) 、URL (uniform resource locator, 通用资源定位符) 和文件格式等技术规范[2]。在Lab VIEW中, 用户可以很方便地使用这些工具来实现远程数据采集。
语音传输程序用到以下两个Data Socket VI:
(1) 读取Data Socket函数 (Read Data Socket.vi) :该节点用于从打开的URL连接中读取数据。
(2) 写入Data Socket函数 (Wr i te Data Socket.vi) :该节点用于向打开的URL连接中写入数据。这里的数据可以是单个或数组形式的字符串、逻辑 (布尔) 量和数值量等多种类型。
2 语音采集
利用声卡采集语音信号实现语音信号双声道模拟输入。将麦克风 (话筒) 插在声卡的话筒输入端口, 并将其插入声卡上的标记为“Mic In”的插孔中。通过该端口可以采集人的语音信号。
语音采集程序用到以下三个声音处理相关VI:
(1) 配置声音输入函数 (S o u n d Input Configure.vi) :利用该VI配置声卡, 并开始进行语音采集。采样率设置为44.1k Hz。通道数为2 (即立体声双声道输入) , 每采样比特数 (即采样位数为16位, 采样模式为连续采样, 缓存大小设置为每通道10000个样本。
(2) 读取声音输入函数 (S o u n d Input Read.vi) :利用该VI从缓存中读取数据。程序中, 为了连续采集语音信号, 将“读取声音输入VI”放在了一个While循环中, 用于从缓存中连续读取语音数据, 设置每次从每个通道中读取样本数为4410个。
(3) 声音输入清零函数 (Sound Input Clear.vi) :利用该VI停止采样, 并进行清除缓存和清除占用的内存等操作。
3 语音播放
利用声卡输出语音信号实现语音信号双声道模拟输出。将扬声器 (喇叭) 插在扬声器输出端口, 并将其插入声卡上的标记为“Speaker”或“SPK”的插孔中。通过该端口可以外接音箱的音频线插头, 从而播放通过网络传输过来的语音信号。
语音播放程序用到以下四个声音处理相关VI:
(1) 配置声音输出函数 (Sound Output Con gure.vi) :利用该VI配置声卡, 并开始声音输出。采样率设置为44.1k Hz。通道数为2 (即立体声双声道输入) , 每采样比特数 (即采样位数为16位, 采样模式为连续采样, 缓存大小设置为每通道10000个样本。
(2) 调用读取声音输入函数 (Sound Input Write.vi) :该VI用于向缓存中写入信号, 本项目用来向缓存中写入由网络传输过来的语音信号。程序中, 在其外边添加一个While循环, 实现连续写入语音数据。
(3) 设置声音输出音量函数 (Sound Output Set Volume.vi) :该VI使用时串接在“设置声音输出音量VI”上, 用于控制输出音量大小。
(4) 声音输出清零VI (Sound Output Clear.vi) :该VI用于停止输出并执行相应的清除操作。
4 程序实现
程序采用C/S (Client/Server) 模式, 即客户/服务器模式, 包括一个服务器VI和一个客户机VI。这种模型设计人员要做两方面的开发, 一是客户端采集程序和数据远程发布的程序的设计, 另一个是客户端数据的接收程序的设计。
程序的URL输入端口设置数据连接网络地址, 可以使用psp、opc、ftp、http和file等通信协议传输数据, 本程序根据写入数据的类型及网络配置使用dstp协议。dstp协议是Lab VIEW专门为测试数据的安全快速的传输而设置[3,4]。
(1) 服务器端V I采集语音信号, 并利用写入Data Socket节点将数据发布到URL“dstp://127.0.0.1/Test Wave”指定的位置中。服务器VI的程序框图如图2所示。
(2) 客户端VI, 将传输过来的语音信号通过声卡播放出来。客户机VI利用读取Data Socket节点将数据从URL“dstp://127.0.0.1/Test Wave”指定的位置读出, 并还原为原来的语音数据送到声卡中。客户端VI的程序框图如图3所示。
本程序的URL输入端口地址配置为:dstp://127.0.0.1/Test Wave, 即只使用一台电脑模拟网络传输。另外, 需要注意的是, 在利用上述两个VI进行Data Socket通信之前, 必须首先运行Data Socket Server[5]。
5 结束语
Data Socket面向测量和网上实时高速数据交换, 可用于一个计算机内或者网络中多个应用程序之间的数据交换。使用Data Socket技术, 可以更加方便地编写出Lab VIEW的远程数据采集应用程序。所以本例利用Data Socket技术开发网络语音通信模块既能实现开发快速, 又能实现软件模块的高效可靠。
参考文献
[1]齐跃, 李珩.热电偶温度计远程校准系统设计[J].计量与测试技术, 2012, 39 (2) :14-15
[2]何萌, 吕国义.利用Lab VIEW实现温度传感器远程校准[C].第十三届中国湿度与水分学术交流会、第十一届中国气湿敏传感技术学术交流会、2010年国防科技工业热工流量技术交流会论文集.2010:73-75
[3]阮奇桢.我和Lab VIEW一个NI工程师的十年编程经验[M].北京:北京航空航天出版社, 2012
[4]李江全, 任玲, 廖洁安等.Lab VIEW虚拟仪器从入门到测控应用130例[M].北京:电子工业出版社, 2013
即时通信语音还原设计与实现 篇4
对网络语音数据进行还原,首先要能够准确识别不同即时通信软件的语音数据包。Toshiya Okabe等人提出利用数据包交互到达时间、流持续时间、包大小等统计信息来识别VoIP网络流量的方法[1,2],指出该方法具有稳定、统计持续时间长的优点。但监测时间较短的情况下得出的统计信息不稳定,从而影响识别准确率,监测时间过长又会浪费大量时间建立识别特征信息库,影响实时流控制作用。文章[3]提出的通用即时通信多媒体数据检测技术局限在只能识别基于SIP协议的网络流量。VoIP流量识别工具Oreka[4]作为一个完整的系统,能够从网卡或声卡中直接捕获语音数据包,并且对支持的编解码格式进行语音数据还原。但扩展性较差。
1即时通信语音传输机制及识别特征分析
1.1即时通信语音传输机制分析
由于各种即时通信软件都采用私有协议,不能互通,也没有统一的体系结构,对不同即时通信语音流量的监测分析非常困难。对其中主流软件(MSN、QQ等)分析后发现,虽然即时通信软件语音通话采用的协议各不相同,但是它们在通信方式和协议结构上具有相同或相似的地方,用户在互相通信时一般会包含以下数据包的传递:用户之间会话建立前连接控制包的传递;包含语音信息的语音数据包的传递。比如,使用SIP[5]信令或者自己约定的私有协议协商RTP端口号和音频数据的压缩编码格式,音频数据都是用RTP[6]协议或者UDP协议来传输。表1是不同即时通信软件的语音聊天通信机制。
例如,利用腾讯QQ进行语音聊天时,连接建立过程采用SIP协议在通信双方进行端口号、语音编码格式等内容的协商,语音数据用UDP数据包传输,如图1所示。QQ呼叫方用INVITE sip命令发起连接建立请求,被呼叫方返回200 OK命令确认连接建立成功。而使用MSN进行语音聊天,连接过程则采用MSN私有协议进行协商,语音数据包采用RTP协议传输,如图2所示。分析RTP的payload type字段可以得到语音编码类型信息,payload部分为语音数据。
1.2即时通信语音识别特征分析
1.2.1 QQ
QQ的语音聊天通过服务器建立连接,并获得对方的IP地址和通信端口。QQ利用SIP协议的明文消息在语音会话开始前协商双方通信使用的端口号、传输数据的编码方式,在会话结束时关闭通话连接,如图3。
通过对大量QQ语音聊天流量Trace的分析,得到QQ语音聊天的会话连接控制数据包和语音数据包特征为:
(1)数据包载荷的第20个字节处出现“INVITE sip”字段,随后有“o=QQuser”字段,说明此数据流过程是由腾迅QQ建立的,“m=audio”字段,表明后续的聊天会话流中传输了语音数据。
(2)首字节为0X 03的UDP 数据包。在SIP命令完成连接、编码方式等信息交换之后,具有此载荷特征的数据包连续出现、长度相近,判断其为实际的语音内容数据包。
1.2.2 MSN
MSN采用TCP协议对控制命令进行传输,所有的控制命令都是在客户端与服务器之间传输的。即使是两个客户端之间的通信内容,也由服务器进行转发。MSN采用RTP协议传输语音数据包,因此MSN的语音聊天会话具有RTP流的所有特征,如表2:
所以,对MSN语音的识别实际上就是针对RTP流量进行的识别,将MSN语音与其他使用RTP传输的语音进行区别。具体的识别特征为:
(1) 数据包载荷的第3位出现“UUN”字段,表示MSN语音会话开始建立;
(2)判断数据包的载荷首字节是否是0x 80,且Payload type位置(载荷第二字节的低7位)数值为114的,认为是MSN语音聊天数据包。
1.2.3 Yahoo Messenger
Yahoo Messenger的语音会话连接建立过程采用SIP协议约定通信双方的RTP端口号、编码方式,用RTP协议传输语音数据包 。具体识别特征为:
(1) 数据包载荷的第20个字节出现“INVITE sip”字段,随后出现“User Agent: Yahoo Voice”字段,说明此SIP数据流是由Yahoo Messenger建立的,“m=audio”字段,表明后续的聊天会话流中传输了语音数据。
(2)RTP数据包长104,payload type=98,数据包开头以0x80 0x62或者0x80 0x 64开始;RTP数据包长84,payload type=97,数据包开头以0x80 0x61开始。
2即时通信语音还原系统设计
在上述分析即时通信软件语音处理机制的基础上,设计实现了一套可动态更新的通用即时通信语音还原系统,如图4。它的上层即时通信软件协议解析模块可动态增减,整体框架无需任何改动即可处理未来新的即时通信软件应用,因此有很高的可扩展性;能够处理不同的协议结构,独立于具体的即时通信协议,具有很好的通用性;它又可作为一个功能相对完善和独立的处理模块,和上层即时通信软件解析模块之间的耦合度很低,很容易集成到其它的应用系统中。
该系统分为两个部分:使用净荷深度检测(DPI-Deep Packet Inspection),特征关键字匹配和会话关联技术来精确识别语音数据包;根据协议特点提取数据包中的语音有效载荷,然后使用相应的编解码库还原语音。
(1)净荷深度检侧:通过特征关键字匹配(例如:invite、ACK等命令)建立对请求报文和应答报文的识别规则,识别语音会话中的连接控制数据包;
(2)会话关联技术:对已确定的与连接控制会话相关的数据包中的特征关键字进行分析,提取出后续语音会话流的判断信息,对语音会话过程中的数据包进行识别,实现对基于协议的语音流量的完整识别;
(3)语音有效载荷提取:根据承载语音数据所采用的UDP协议或者RTP协议,逐层去掉协议头部信息,准确提取出语音的payload type和payload值. payload type为即时通信软件采用的语音编解码格式。payload为语音数据,按照语音数据包顺序将提取出来的payload存储为待解码的连续二进制文件。
(4)语音还原:可动态更新式的语音编解码库,可以动态添加新的编解码类型,具有很好的灵活性和可扩展性。
2.1语音会话识别算法
基于DPI的即时通信语音会话识别算法如图5,其具体处理流程如下:
(1) 初始化Hash表。该Hash用于存储会话标识。该标识用即时通信软件用户 ID和登陆IP地址两元素来表示。Hash表中所有的元素初始化为0。Hash表为键值对,在进行二元数据查找是效率较高。
(2) 接收分组。
(3) 根据即时通信软件会话净荷特征进行DPI检测,以判断该分组是否为相应的即时通信软件会话中的连接控制数据包,再判断该数据包是否为即时通信软件的请求会话包,如是,则获取即时通信软件用户ID号,转4;如匹配失败,丢弃分组,转2。
(4) 判断该会话是否已经存在于哈希表中,如果是,则丢弃分组,转2;如果不是,转5。
(5) 保存该会话标识。Key为即时通信软件用户登录IP地址,element为该即时通信软件的用户ID
(6) 转2。
2.2会话关联识别、还原算法
即时通信语音识别和会话关联算法流程如图6。
(1) 接收分组。该接收过程同会话识别过程是同一过程,只是同一分组复制后用于不同地方。
(2) 根据即时通信软件语音数据包的特征进行特征匹配。如匹配成功,则转3;否则,丢弃分组,转1。
(3) 将语音数据包同语音会话识别结果进行关联识别。将识别出来的即时通信软件语音数据包同已有的即时通信软件会话进行关联检测,如果会话存在,则该即时通信软件语音数据包可以被确定为存在的可能性将大大提高。用该语音数据包中获取的即时通信软件登录IP作为Key,到即时通信软件会话哈希表中查询,如果能够查询到一个对应的用户ID,那么证明该语音数据包存在,转4;如果查询不到结果,则该会话不存在,转1。
(4) 保存和更新语音会话信息。将数据包地源IP、目的IP、源端口、目的端口、语音编码类型等信息保存起来,并且将语音数据包的语音有效载荷提取出来,按照会话归类,按顺序排列,存储为二进制文件,为后面的还原做好准备。
2.3即时通信语音还原
主流即时通信软件的语音会话内容在网络中传输时,基本上采用单连接完成,其还原过程将到达的语音数据包按照不同的连接分别进行缓存,去掉协议头,提取出语音编码信息并对Payload按照顺序进行组包、拼接。然后分析编解码协议,调用相应的编解码库最终完成语音还原。由于很多即时通信软件采用私有协议,语音编码方式不公开,导致目前语音还原的范围仍然具有局限性,但是本文在分析了主流即时通信软件语音会话的流程、特点后,针对语音内容还原提出了一套切实可行的通用流程。
即时通信软件的语音会话在建立连接过程中,使用私有协议或者公开协议在通信双方约定编解码方式,发送方对语音数据包进行编码、压缩,然后递交给传输层、网络层完成从发方的发送。在接收方逐层过滤协议栈头部信息,直到提
取出有效语音载荷,然后对前面分析出的语音编码方式使用对应的解码库,进行语音数据还原。以Yahoo Messenger为例。在会话关联识别、还原算法中分析出Yahoo Messenger的语音RTP包payload type值为114,在语音会话建立过程中,用SIP协议Invite命令中a= rtpmap:98 ILBC/ 8000约定通话双方采用iLBC[7]编解码格式对语音数据包进行压缩、编码、解压、解码,如图7。
iLBC 是为专为提供稳健的 IP 语音通信而开发的语音 codec,采用 iLBC 算法可以获得一个具有丢包响应控制的语音编码系统。iLBC 编解码的出现,解决了在包交换的IP 网络中,传输语音所遇到的网络丢包严重影响通话质量等实际问题,实现了语音质量的飞跃。iLBC 对每一个数据包的处理都能够独立于其它数据包来进行,是数据包通信的理想选择。即使 IP 丢包和/或延迟现象的恶化,这种 codec 的语音质量下降情况也不会太差。
在即时通信语音会话关联识别、还原算法的最后,我们得到了Yahoo Messenger语音数据包的二进制有效载荷,按照iLBC 的标准,调用iLBC解码器,将Yahoo Messenger 的语音流还原成了可播放的.wav文件。
3实验及结果分析
在局域网内的一个冲突域环境下,对实现的即时通信语音聊天流量识别原型系统进行详细实验,实验环境拓扑图如图8所示。测试环境中包括:服务器一台作为即时通信语音数据分析机、台式PC机3台作为语音通信测试机、10M HUB一台以及网线若干。PC机10.21.2.78 、10.21.2.75和10.21.2.48之间利用即时通信软件进行语音通话(如:QQ、MSN、Yahoo Messenger、AIM等)。服务器10.21.2.76的网卡设置为混杂模式,可以捕获到冲突域内PC间语音通信的所有数据包。识别还原系统对数据包进行语音数据的识别和有效载荷的提取。然后针对Yahoo Messenger,将提取出来的有效语音载荷进行语音还原得到可以播放的声音文件。
试验过程中,每次捕获的网络数据包长度在100K-5M之间,每种即时通信软件测试5次,共计20次。总体而言,识别和提取的准确率都较高。
根据Yahoo Messenger采用的语音codec为iLBC编解码格式,我们把经过识别还原系统提取出来的语音二进制文件还原成为可以播放的.wav声音文件。比较原始声音文件波形图和还原声音文件波形图,如图9,可以看出二者相差不大,还原结果较好。
4结束语
即时通信软件所提供的语音会话功能近年来已经成为发展的大势所趋,种类繁多,更新频繁。传统的网络流量识别方法虽然能够对不同的数据流进行区分,但是仍然是二进制数据无法直观的显示数据所表达的内容。在这种背景下,找到具备通用性、准确性、直观性和可扩展性的识别方法是具有重要意义的。本文提出的可扩展性即时通信语音还原系统,在准确识别现有主流即时通信语音的基础上,对已知编码类型的语音包进行还原,直观的显示出语音数据包所携带的信息,为网络信息监测提供了直观、便利的方法。由于即时通信软件协议的不公开以及版本升级较快,经过分析数据包特征,准确得到即时通信软件语音编码格式,是以后将要进一步进行的工作。
参考文献
[1]Gaogang XIE,Guangxing ZHANG,Jianhua YANG,et al.The Survey on Traffic of Metro Area Network with Measurement On-line.Proceedings of the20th International Teletraffic Congress,Ottawa,Canada,June,2007,17~21
[2]Toshiya Okabe,Tsutomu Kitamura,Takayuki Shizuno.Statistical Traffic Identification Method Based on Flow-Level Behavior for Fair VoIP service.VoIP Management and Security,2006.1stIEEE Workshop on,3April2006.
[3]周舜,刘杰,程学旗.通用的即时通讯多媒体数据检测技术.计算机应用研究,2007,26(7).
[4]The open source,cross-platform audio stream recording and retrieval system[EB/OL].(2007-01-26)[2007-09-11].http://oreka.sourceforge.net.
[5]ROSENBERG J,SCHULZRINNE H.SIP:Session Initiation Protocol.RFC3261,2002-06
[6]SCHULZRINNE H,CASNER S,Frederick R.RTP:A Transport Protocol for Real-Time Applications.RFC1889,1996-01
语音和数据通信 篇5
关键词:通信系统,语音交换技术,应用
1 现有语音交换技术研究
1.1 远端模块技术分析
一个RSM模块它的物理结构主要由下面几个部分构成:
1) 主要控制部分。它的主要组成部分是模块处理机, 它负责控制交换网的接线任务, 主管前台和后台的数据传输。完成和SP子单元的信息交互, 主要负责有关设备的切换。
2) 中间传输部分。主要指的是数字交换机和数字传送设施两者的接口设备, 有合格的E1接口。
3) 模拟中间传输设备。它的主要用途是完成中继线和交换网络的接口。
4) 用户部分。指的是用户子单元和数字用户设备。
一个RSM模块可以容纳5120个用户线, 在实际运用当中, 根据用户的数量来确定每条线的话务量。假如RSM连接中继线, 那么它能够连接的用户数量就要减少。如果用户的数量过大, 一个RSM不够使用, 就要运用多个模块共同工作形式, 一般由二个到四个RSM构成, 多个模块构成容量也会随之增加到二倍或者四倍, 最多可以容纳20000个用户, 这些模块中间用通信链路相连, 完成直接通信。
1.2 Vo IP网关技术分析
利用专用网络连接, 运用网络的带宽资源给每个网络地址建立一个语音通信体系, 这种形式的通信可以有效节约通话费用。运用VOIP网关是网络电话最直接的方法, 它的应用原理就是利用因特网实现网络通话的一个业务形式, 也就是在各种交换网上利用网络通信协议完成一般电话通信, 在网络传输语音的过程中, VOIP一般是利用几种程序完成语音的传送业务, 先将语音发出者的语音转变为模数, 然后进行压缩, 利用网络传输系统运送到收听一端, 再利用口封包解压还原, 最后转变为语音信号输出。
VOIP网关在语音传输中的主要作用是完成语音和数据的相互转换, 运用这种网关, 能够把语音快速转变为各种数据, 到了终端, 也可以将数据还原为语音, 把原来在电路基础上的语音体系转变为依附网络的分组包, 从而完成语音的转换工作, 这种网关的应用, 不但可以节约原有投资, 也可以使未来的投资减少。
1.3 软交换技术分析
时间进入20世纪90年代, 产生了一种新的交换—网络交换, 也就是有效运用网络当中的路由功能, 把以前的交换设施分为几个部分, 主要分为呼叫控制和媒体处理二个部分, 它们之间的数据传输一般采用网络协议, 呼叫控制是在硬件上运行的一种软件, 媒体处理把多种数据转变为媒体流, 也就是软交换技术。
1.4 三种技术对比
从上面分析的三种技术能够得到, 从最初的模块技术到VOIP网关技术, 一直到最后的软交换技术, 技术形式和功能呈逐步递增, 不管是网络的接入形式, 还是将来的通信发展, 最后一种技术都具备较强的优势, 明显高于前两种技术。
从电路交换和分组交换两方面来研究, 模块技术是传承于以前的交换技术, 它主要应用电路交换技术, 所以无论是带宽方面还是增值业务方面, 都没有太大的优势, 后两种技术均采用了分组交换技术, 但两者进行比较, 软交换技术更具优势, 它的接入方式更加灵活多样, 有利于增值业务的拓展。
2 实际应用研究
2.1 远端模块的应用研究
先来分析电力方面应用的哈里斯数字程控交换机, 它主要应用远端模块, 较远端用户和局端用户能力一样, 最多能够拥有256---1024线, 但远端模块和交换机的接口归属于内部接口, 这种接口的规格都是生产厂家自行规定的, 所以两种设备 (远端设施和交换机) 一定要使用一个生产厂家生产的产品, 不然可能由于接口不同而无法使用, 这种情况给用户造成了一定的困难, 不能选择设备的生产厂家, 只能听任单一生产单位的调度。按照现在网络接入情况, 远端模块技术已经达到了一定的标准, 趋向于成熟, 将逐步运用光纤技术, 这种新型技术能够有效连接较为偏远的山区电力供应方面, 所以, 不易大范围地应用模块技术, 这种技术将逐步被先进的技术手段所取代。
2.2 Vo IP网关应用研究
VOIP网关技术也有一定的缺点, 它要对原有交换机通过插入VOIP卡来升级使用, 可是不同的生产厂家所出产的板卡不能混合使用, 并且, 如果需要多方面的使用, 就要对网关进行严格的管理, 这种情况给管理也带来了一定的难度, 即使这样, 这种网关的运用仍然具有较为广阔的前景, 运用以此技术支持的电话体系, 也能够很大地节约各个单位的通信费用, 能够充分应用网络。
2.3 软交换应用研究
软交换技术具有巨大的发展潜力, 将来一定能够取代前两种技术, 运用软交换技术, 现有电力系统不但能够完成各种各样的通信业务, 还能够应用此技术召开多媒体会议、一号通等, 软交换技术所具有的功能不但能够应用于下一代网络终端, 还能够使电力部门建设不同区域的广域网, 使系统内办公更加现代化, 有效提高信息化建设, 更加发挥其巨大的作用, 在以后各种技术的发展过程中, 将随着第三方业务接口技术的普遍应用, 根据电力系统的实际情况, 创造出更多高效、先进的技术。
软交换技术在现在的应用当中, 它的使用成本是目前最高的, 并且在电信方面的运用当中也出现了不少的问题, 比如QOS保证等, 但软交换技术作为一种新型技术, 无疑具有鲜活的生命力, 在未来的科学发展中, 它的应用范围将会越来越广泛, 所以, 在电力系统内首先建设软交换试验点, 能够为以后的网络通信打好基础。
参考文献
[1]郭韶峰.一种基于地区级的电力软交换通信组网方案[J].硅谷.2010 (01)
[2]赵婷.软交换技术在电力通信系统中的应用展望[J].湖北电力.2009 (05)
基于移动网络的语音集群通信系统 篇6
对于满足专有行业或企业的语音集群通信业务[2],通常还需要考虑以下需求:1)群组通话是集群通信的主要业务模式,具有群组信道共享,避免通信互扰等服务要求;2)对于室外作业多采用移动网络,而非连接到有线网络共享的AP热点,网络质量受限。3)VPDN专网服务支持或其他网络安全要求;4)在语音业务基础上,提供文本通信、文件传输等定制功能;5)对语音、文本、共享文件等关键信息的私有存储或全业务存储。因此,在设计开发基于移动网络的语音集群通信系统时,应充分考虑行业应用特点,预留必要的业务应用接口。
1 基本传输框架
语音集群通信系统基于标准的客户端-服务器通信模型设计。客户端与服务器之间的数据传输采用TCP/UDP两种协议,分别适用不同的网络环境。当移动网络质量较好时,可以根据设置使音频数据通过TCP通道传输,保证通话语音的完整性和可靠性;当网络条件较差时,使用UDP通道传输可以避免TCP传输多次握手导致的网络拥塞,实现低延时传输,保证系统的可用性。语音通信过程中的控制信令和通信信令则是基于TCP协议可靠传输[3]。
1.1 构建安全通道
安全套接层(Secure Socket Layer,SSL)是Netscape公司研发的用于在IP网络上实现数据安全传输的专有协议,通过数据加密技术确保数据在网络传输过程中不会被截取及窃听。SSL及其后续发展的传输层安全(Transport Layer Security,TLS)提供了传输层的数据完整性保护,包括身份认证、协商加密算法、交换加密密钥等[4]。OpenSSL是互联网上适用性最广泛的SSL密码库之一,提供了多种编程语言的库支持。本系统引入OpenSSL 1.0.2方法库,将TCP Socket替换为SSL Socket,对传输层协议进行链路安全保护[5]。
SSL Socket的建立流程是:
1)客户端请求建立SSL Socket连接,并向服务器发送SSL版本、加密参数等必要信息。服务器返回自身的SSL版本、加密参数、安全证书等必要信息。客户端向服务器提供认证证书。
2)客户端验证服务器证书后,生成pre-master secret,并用公钥加密后发送给服务器。服务器对证书进行认证,通过后用私钥解密pre-master secret,并生成master secret。
3)通信双方通过master secret生成会话密钥,完成SSL Socket的创建,之后的通信数据将通过会话密钥加密传输。在本系统中,会话密钥采用TLSv1 AES256-SHA加密。
由于UDP是面向无连接的传输协议,为保证数据传输安全,在发送函数sendto()之前加入encrypt(),这里可采用与TLSv1 AES256-SHA强度相当的加密算法进行数据加密。接收侧在recvfrom()之后加入decrypt(),进行数据解密。
1.2 数据传输格式
本系统的数据报文格式如图1所示。客户端与服务器之间遵循此格式发送交互信息,其中报文头Ptrfix包含1个字节的类型信息,区别信令数据或语音数据,提供长度信息进行组包校验。载荷部分Data为实际交互数据,采用TLSv1 AES256-SHA或其他算法加密。由于UDP协议仅用于发送语音数据,其数据传输格式为图1的Payload部分,最大长度为UDP分片的理论最大长度65507B[6]。
2 应用流程
2.1 用户接入
本系统的接入流程如图2所示,主要包括:
1)建立连接:客户端向服务器请求建立用于控制信令和TCP数据通信的SSL Socket长连接。
2)版本确认:客户端与服务器相互发送版本信息,包括软件版本、操作系统版本、其他备注信息等,双方根据版本判断系统访问的兼容性。
3)用户登录:客户端向服务器发送登录认证信息,包括登录账户、登录密码,或是用于登录认证的证书信息。
4)密钥交换:该步骤为可选项,由于SSL Socket完成了TCP连接的密钥交换,如系统支持UDP传输,则需要服务器发送UDP加密的密钥信息给客户端。
5)群组信息:服务器向请求登录的客户端发送群组的状态信息,包括群组ID、名称、描述、拓扑关系,以及群组中用户的在线状况和当前状态。
6)用户信息:服务器向其他客户端发送新登录用户的状态信息,通知该用户已上线。
7)心跳信息:客户端完成基本登录流程,通过发送周期性的心跳报文,维持长连接状态。根据实际网络状况可调整心跳报文的发送周期,如部署地域的网络状态较好,可采用3至5秒的发送间隔。
2.2 信息响应
作为集群通信系统,信息响应的基本单位是群组。每个群组的数据处理和信息状态相对于其他群组保持独立,即群组之间的数据和资源是隔离的,这里通过建立用户信息的HashMap结构hmUsers和群组信息的HashMap结构hmGroups进行数据调用和处理。调用用户或群组对象时,需通过ReadWriteLock进行资源锁定,保护线程安全[7]。考虑到多线程存在资源切换和锁定的开销,在设计上主要对不同类型或分组的任务建立线程,如图3所示。其中:
1)接收线程主要响应网卡资源,监听服务端口,接收由客户端发送的业务数据或信令信息,如果是心跳消息,则直接返回响应;否则,将通过hmUsers和hmGourps查找所属群组,并将数据推送到指定群组的消息缓冲区中。
2)处理线程主要响应和实现具体业务。每个群组对象在实例化过程中都会创建本群组的处理线程和数据缓冲区,通过提取缓冲区中的数据并解析,线程将信令或其他业务数据交给业务响应函数处理,语音数据交给数据响应函数处理,并将处理后的数据发送给指定客户端。在处理线程中,可分模块响应语音业务以外的请求,对预留接口进行功能实现。
3)存储线程主要响应数据I/O操作。本系统对独占性的I/O操作采用单线程序列化处理,即所有群组的语音数据通过统一的缓冲序列顺序解码、混音和写入文件,降低线程切换的开销。为提高I/O读写效率,语音数据不会立即写入文件,而是积累时长2秒(可根据实际情况配置)的数据包后批量写入。
3 语音处理
3.1 音频编解码器选型
目前,国内4G LTE网络建设日趋完善,基于移动网络的语音通信技术已摆脱GSM时期小于16kbps的窄带传输限制。在音频编解码技术选型上,更多考虑的是适应16kbps到64kbps区间的高品质音频编解码算法。
本系统主要对Opus、Speex、AMR-WB和G.722.1四种编解码方案进行比较。Opus是在Skype的SILK编解码器和Xiph.Org的CELT编解码器基础上发展的开源编解码方案,已形成RFC 6716标准,具有灵活的带宽适应性。Speex是基于CELP发展的音频编解码方案,但根据Speex官网提示,Opus的性能已在各方面优于Speex。AMR-WB(G.722.2)被广泛应用在WCDMA的话音业务上,其VBR特性可以较好的适应网络带宽变化。G.722.1提供了优于G.722的24kbps和32kbps音频编码压缩。
根据Opus-Codec给出的音频编码质量统计对比(图4),以及两份Google组织的主观评测报告[9,10],在同等比特率条件下,Opus编码能够达到或超过AMR-WB、G.722.1的编码质量。且考虑到国内各地区移动网络的传输质量差异较大,支持6kbps到510kbps比特率和VBR技术的Opus编解码器可为不同网络环境提供更稳定的语音通话效果。
3.2 Opus编解码实例
Opus是基于C语言编写的音频编解码器,Windows平台可直接加载Opus源代码进行函数调用,Android平台还需要对源代码进行NDK编译,生成供Java语言调用的so库。
使用Opus进行语音编码的代码片段如下:
3.3 混音流程
多路语音的数据混音是语音集群通信的核心功能。通过混音算法和调平参数,同一群组内的多路通话语音将根据逐帧数据的时间戳进行合帧处理,形成一路语音数据,送入声卡缓冲区进行放音。不论语音数据是以8位、16位或浮点形式存储,在多路混音时仅做逻辑叠加运算将会导致数据越界,必须先通过调平参数进行数据调整,之后根据叠加系数按比例缩减,保证合帧后的语音数据不会越界[11,12]。
混音操作的代码片段如下:
4 实验与分析
本系统分别在10M专线、联通4G、移动4G、电信4G等网络条件下进行测试,测试结果如表1所示。
在不同网络环境下,语音数据传输的平均延时在可接受范围,UDP丢包率小于2.2%,网络抖动小于20ms。通过主观测试,语音通话连贯,无连续丢帧,可懂性良好。因此,语音集群通信系统在传输延迟、网络抖动等方面可以较好满足语音集群和实时通信要求。在编码处理方面,优于国际电联G.711语音编码的90kbps带宽占用。
5 结束语
本文主要根据移动网络环境下的语音集群通信需求,给出一套可行的系统解决方案,并对其中底层链路、应用构建、核心编码处理等关键环节进行详细阐述。在实际应用过程中,不同领域的业务单位可能对系统的数据存储、用户负载、网络安全有更高的业务需求,可以通过合理配置磁盘阵列、负载均衡、安全网关、代理服务器等硬件设备或软件服务来实现。
参考文献
[1]2015年中国移动语音社交应用行业研究报告[R].上海:i Re-search,2015:19-23
[2]王芳.数字集群通信系统的构成及功能[J].电信网技术,2005(2):9-12.
[3]Chauncey D,Kuliner M.Secure wireless communications sys-tem and related method:WO,US7987363[P].2011.
[4]曾强.网络安全协议SSL原理及应用[D].天津:天津大学,2005.
[5]秦贞虎.基于Open SSL开发的聊天工具的设计与实现[D].成都:电子科技大学,2013.
[6]李一鸣,任勇毛,李俊.基于UDP的传输协议性能比较与分析[J].计算机应用研究,2010,27(10):3906-3910.
[7]赵兴.基于Vo IP技术的无线语音通信系统设计[D].长沙:湖南大学,2011.
[8]opus-codec.Quality vs Bitrate[EB/OL].http://www.opus-codec.org/comparison/.
[9]opus-codec.Google listening tests[EB/OL].http://www.opus-codec.org/comparison/Google Test1.pdf.
[10]opus-codec.Google listening tests[EB/OL].http://www.opus-codec.org/comparison/Google Test2.pdf.
[11]张微.VOIP电话会议系统中混音模块关键技术的研究与实现[D].上海:华东师范大学,2007.
基于RTP协议的实时语音通信 篇7
RTP报文由两部分组成:报头和有效载荷。RTP报头格式如表1所示,其中:
V:RTP协议的版本号,占2位,当前协议版本号为2。
P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。
CC:CSRC计数器,占4位,指示CSRC标识符的个数。
M:标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
PT:有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等。
序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。
同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。
时戳(Timestamp):占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
这里的同步信源是指产生媒体流的信源,它通过RTP报头中的一个32位数字SSRC标识符来标识,而不依赖于网络地址,接收者将根据SSRC标识符来区分不同的信源,进行RTP报文的分组。特约信源是指当混合器接收到一个或多个同步信源的RTP报文后,经过混合处理产生一个新的组合RTP报文,并把混合器作为组合RTP报文的SSRC,而将原来所有的SSRC都作为CSRC传送给接收者,使接收者知道组成组合报文的各个SSRC。
在发送端,上层应用程序以分组形式将编码后的媒体数据传给RTP通信模块,作为RTP报文的有效载荷,RTP通信模块将根据上层应用提供的参数在有效载荷前添加RTP报头,形成RTP报文,通过Socket接口选择UDP协议发送出去。在接收端,RTP通信模块通过Socket接口接收到RTP报文后,将RTP报头分离出来作相应处理,再将RTP报文的有效载荷作为数据分组传递给上层应用。
2. G.726语音编码解码算法
G.726作为一个语音压缩的国际标准,主要应用于公用电话交换网PSTN和无线市话接入等音频流的压缩编码和解码,并支持ISDN会议、会议电话等其他低数据传输速率下的应用。
G.726是ITU-T定义的一种音频编码算法,主要基于以16-40kbps比特率运行的。但由于其只是G.711速率的一半,所以可将网络的可利用空间增加了一倍。G.726是ITU前身CCITT于1990年在G.721和G.723标准的基础上提出的关于把64kbps非线性PCM信号转换为40kbps、32kbps、24kbps、16kbps的ADPCM信号的标准。G.726标准算法简单,语音质量高,多次转换后语音质量有保证,能够在低比特率上达到网络等级的话音质量,从而在语音存储和语音传输领域得到广泛应用。
3. 语音通信的实现过程
语音通信过程是全双工的,可以实现一对一和一对多的通信,通信的整个流程如图二所示,利用windows的低级音频API函数族Wave In,Wave Out实现麦克风的数据采集和数据播放;在发送端音频数据采集完成后需要用到G.726语音编码算法进行编码,以提高传输过程中带宽的利用率;根据RTP协议把音频数据封装成RTP包,通过网络传输到接收端。在接收端对收到数据进行RTP包解封装并对音频数据解码,最后得到可以播放的音频数据。
3.1 音频数据的采集和播放
使用低级音频函数实现音频采集与播放,有几个重要的数据结构:波形数据格式WAVEFORMAT,波形数据缓冲区格式WAVEHDR。用到的主要函数有:打开波形输入设备函数wave In Open(),打开波形输出设备函数wave Out Open()。
在录音和放音时,分配内存缓冲区的同时相应分配WAVEHDR数据块结构,然后将缓冲区的指针赋给对应的数据块结构的成员变量lp Data,这样当一个缓冲区填满后,也就是一个音频数据块填满了,通过消息机制就可以在消息函数中进行处理和播放,播放完后又可通过消息函数把缓冲区再送给音频设备输入驱动程序,继续进行采集并播放。所有任务完成后,关闭相应的设备。
使用低层的声音函数对声音进行采集、回放时,声音是存放在一个内存数据块中,当采集缓冲区中数据满时将得到MM_WIM_DATA消息,以及回放缓冲区中数据为空时将得到MM_WOM_DONE消息,用户可以采用相应的消息映射函数来处理相应的过程。
录音开始后,每当有采样数据填满数据块后,设备驱动程序就会发消息MM_WIM_DATA给用户窗口,相应的消息回调函数On Mm Wim Data()对声音数据进行处理,包括播放、存储或者网络发送,每当一个音频数据块播放完毕,设备驱动程序又会发出消息MM_WOM_DONE,相应的消息回调函数OnMm Wom Done()记录音频数据并经必要准备后重新发送给输入设备,以准备接收后续的采样数据。这样,最初为输入设备准备的音频数据块就在消息的控制下,在输入、输出设备间循环使用,无需人为控制实现了实时采集、处理和播放。当结束通话时要关闭音频输入设备,这时音频设备驱动程序会发送MM_WIM_CLOSE消息,可在相应的消息函数On Mm WimClose()中清除赋给输入、输出设备的音频数据块。声音的播放过程与录音过程非常相似,在此不再赘述。
3.2 G.726对音频数据的编码和解码
G.726算法在前面已经介绍过了,在程序中直接调用了g726lib.lib中的函数对数据进行编码和解码。把编译好的g726lib.lib库放在程序的目录下并在工程属性中指定正确的文件路径。
在通信过程中在发送方需要对数据进行编码后发送:
3.3 用RTP协议传输数据
本程序通过RTP协议来传输数据,建立在UDP协议之上。用了开源版的JRTPLib库,其中包含jrtplib-3.8.2和jthread-1.2.1。在vs2008下分别编译这两个函数库,把编译好*.lib文件放到工程目录下,并在工程属性中指定正确的文件路径。
通信双方建立连接之前需要先初始化发送端和接收端的参数,如下代码所示:
在初始化通信参数后添加对方的IP地址后就可以进行通信了,因为语音通信过程是全双工的,可以实现一对一和一对多的通信,所以在添加对方的IP地址时可以通过如下函数添加多个:
m_sess Data.rtp Send.Add Destination(*rtp Addr);
数据的发送:
m_sess Data.rtp Send.Send Packet();
数据的接收:数据的接收是通过虚函数On RTPPacket()来实现的。
virtual void On RTPPacket(RTPPacket*pack,const RTP-Time&receivetime,const RTPAddress*senderaddress);
以上就是通过开源JRTPLib库实现建立连接、数据封装、数据发送和数据接收的过程。
4. 结束语
本文介绍了利用RTP协议进行实时语音通信,其中G.726编码解码算法可以在低数据传输速率下提高通话质量,利用Windows API进行语音数据的采集和播放,可以直接控制声音实时的采集与回放,不需要把声音形成相应的文件,而是把采集到的声音放到内存中,形成一种类似流的存储单元,从而保证了通话的流畅性。
RTP协议虽然目前已经应用于多媒体数据实时传输中,还有一些关键技术有待解决,如:主动自适应调整带宽,实时恢复丢失的报文,多点投递等等。随着对RTP研究的深入,它将在多媒体网络通信中应用越来越广泛。
参考文献
[1]严俊,潘建平.Microsoft Windows环境下RTP协议的实现及其适应性应用的研究[J].数据通信,1999,(2):24-26.
[2]钟玉琢,李树青,林福宗,等.多媒体计算机技术[M].北京:清华大学出版社,南宁:广西科学技术出版社,1993.139~142.
[3]欣力,李莉,陈维,等.M icrosoft W in32程序员参考大全(二)[M].北京:清华大学出版社,1994.383~396.
[4]李博轩.Visuanl C++6.0多媒体开发指南[M].北京:清华大学出版社,2000(2):71~75.