Home > 电话会议新闻动态 > 技术文档 > IP电话语音还原技术的研究与实现

IP电话语音还原技术的研究与实现

2014/05/22 好会通

目前,随着语音压缩技术的成熟,网络带宽的不断扩展,以及市场的需求,IP电话技术已被从实验室中推向了成熟的商用领域。然而,要想把此种技术推向商用,就不得不重视安全问题。IP电话的监控和管理是VOIP(Voice over IP)安全领域中 非常重要的部分,其中的一项关键技术就是IP电话会议电话语音还原技术。IP电话语音还原技术是对IP电话语音捕获系统捕捉的语音数据包进行处理,最终还原双方语音通话过程的技术。

VOIP系统音频数据传输过程如图1所示。在通过呼叫控制信令(如H.323、SIP)建立起两个终端之间的媒体流通道后,便开始了两个终端之间的语音传递过程。整个过程始于对模拟音频的模数转换,经过抽样、量化、编码生成的原始PCM数据,再经过音频编码器的压缩编码生成待传送的音频数据,通过RTP、UDP、IP协议的层层封装生成包含有音频抽样信息的IP报文发送到接收终端。接收端接收到含有音频数据的IP报文取出RTP净荷中的音频数据,送入相应的解码器解码,然后通过音频设备进行数模转换,回放出原始的声音。

VOIP系统音频传输过程

我们所要研究的内容就是如何通过处理和解析RTP协议数据包,按照正确的顺序取出RTP净荷,如何对RTP净荷进行解码生成.wav文件,以及如何把两路.wav文件合成为一个包含两路会话内容的.wav文件。

1 RTP数据的处理

RTP数据指的是由IP电话语音捕获器捕捉并记录下来的语音会话当中传送的RTP数据报文的集合,如文件、数据库记录等。以一次通话过程为例,IP电话语音捕捉器将分别生成两个独立的记录有双方通话内容的RTP数据集,记为forward-RTP和reverseRTP,这就是一次处理过程中待处理的数据源。 RTP数据的处理总体上分为两个部分:排序处理和补包处理。

1.1 排序处理
由于网络传输存在一定的不可靠性,在数据传输的过程中有可能会导致数据包到达顺序的局部混乱,通过排序将很好地解决这个问题。 从RTP协议来看,可以用于进行排序的域有两个,即序列号和时间戳。在没有出现乱序的情况下,序列号和时间戳都应该是递增的,而序列号的递增量应该为1。但是序列号是一个16bit的域, 在长时间的通话过程中有可能存在溢出的情况,这将导致排序结果不正确。通过实验观察,在实际通话过程中这种情况确实存在。如图2所示为采用 Ethereal网络数据分析软件抓到的RTP数据包,其中就存在序列号溢出。因此,我们采用时间戳域作为索引对数据包进行排序。待排序的数据特征是数据基本有序,通过综合考虑各种排序算法的时间复杂度和程序实现的复杂度,我们采用直接插入排序法,比较顺序为从后向前。

1.2补包处理

网络传输的不可靠性还会导致数据包的丢失,可以用填补丢失数据包的方法解决。然而,前一种情况属于非正常缺失,出现的概率很小。VOIP系统实现中,常常在检测出通话静音期后,采用停发语音包的方法以减少语音数据传输所占用的带宽。 补包处理主要是为了解决这种更为普遍的正常缺失情况。如果不进行补包处理,通话过程中静音期 的停顿在恢复出语音后将无法体现,势必严重影响语音还原的效果,还会导致两路音频进行合路后声音的严重不同步。

补包算法是基于RTP协议中的标记域和时间戳域实现的。根据RFC 1889对于RTP协议的描述可以得出以下结论。标记域可以用来判断是否存在静音期,如果标记域置为1,则说明此分组与前一分组之间存在静音期。时间戳记录净荷中的第一个抽样产生的时间。典型的语音编码模式的频率为8000Hz,从一个分组到另一个分组的时间戳值的增量取决于分组中抽样的数量。例如,如果一个分组包括10个语音抽样和一个值为1的时间戳,那么下一个分组的时间戳则为11。考虑到抽样以8000Hz的速率发生(每0.125ms),那么时间戳中10的差别就代表了时间上1.25ms的差别。 如果在静音期,没有发送任何分组,那么下一个 RTP分组可能包含一个明显比前一个RTP分组大得多的时间戳。

补包算法的具体描述如下: 因为不同的编码方式,有不同的传输速率,所以在无静音期情况下,相邻的两个RTP数据包的 时间戳的差值和第一个包的净荷的大小之间的关 系因编码方式的不同而有所不同。 以AT表示相邻两个包的时间戳的差值:V表示对应于某种编码方式的传输速率(单位kbit/s); Ⅳ表示相邻的两个R I’P包的第一个RTP包的净荷 的大小(单位Byte);l厂表示这种编码方式对应的抽样频率(单位Hz);C表示分组持续的时间(单位S)那么如果在没有静音期的情况下,△ 、 、Ⅳ、厂和 C应该满足如下的关系:

除此以外,还需要进行一种特殊的补包处理,即补充通话头,以使两路通话同步。要实现两路会 话的同步合成,必须要找到一个正确的同步点。通常情况下,两路通话各自的第一个RTP分组到达IP电话捕捉器的时间是不一样的。例如回铃音期间,一方已经向另一方发送了回铃音的RTP分组, 而另一方还没有开始讲话,就相当于处于静音期。 因此,可以根据两路通话各自的第一个RTP分组 到达时间差值和公式(1)计算出需要在缺少静音数据的话路头补充多大的静音RTP分组。

2音频解码和处理

音频解码过程采用于RTP头中负载类型相一致的解码器对RTP净荷数据进行解码,生成l6位的原始PCM数据,然后写入.wav文件中,最终生成能够采用音频播放器进行播放的.wav音频文件。 通过前面的处理过程,一次通话的两路会话都记录在各自的.way文件中,而且保证其内容是同步对齐的。合路处理采用把两路.wav文件中的数据部分按抽样量化值按比例叠加的方法。下面,通过证明两个模拟波形叠加后进行模数转换(抽样、量化和编码)生成的数字音频与分别模数转换后再叠加生成的数字音频两者引入的误差相当,论证其方法的合理性。

3 解决方案

基于前面的理论分析,我们提出一套IP电话语音还原的方案,并采用C++编程实现了全部的功能及算法。方案流程图如图所示。

VOIP解决方案

然而,在实际的运行环境中,IP电话终端发送的RTP语音分组并不是完全遵照协议的规定。例如,在同一次通话过程中同步源域应该全局唯一的,但是有时会出现同步源发生变化的情况,因此,时间戳也会跟着发生跳变。考虑到现今网络状况 较好,数据包乱序的情况不常出现,即使出现,也只是局部的个别数据包在小范围内出现乱序,不会对语音还原的效果产生很大影响,而且排序的处理量还是比较客观的,因此,实际应用中我们抛弃了对RTP数据的排序处理,实际证明,没有对语音还原的效果产生影响。

4 总结

VoIP安全技术是通信领域和安全领域的新潮流,本文讨论的IP电话语音还原技术是VoIP监控管理系统中的关键技术。基于本文讨论的技术编写的软件经过了长时间的测试,支持G.711 率, G.71 1A率,G.723.1,G.729等4种编解码方式,语音还原效果较好。

IP电话, VoIP

如没特殊注明,文章均为好会通科技原创,转载请注明来自 http://www.meeteasy.com.cn/archives/3193.htm.


copyright 2004-2013     粤ICP备12061155号-1

Sitemap|XML|RSS|隐私政策|EN|