音频开发应该知道的VOIP通话技术基础

可爱的图.png

VOIP即Voice over Internet Protocol,用中文简单描述就是将模拟信号(Voice)数字化,再进行前处理,编码,以数据封包(Data Packet)的形式在IP网络(IP Network)上做实时传递。

VOIP区别于传统电话的最大变化就是不再独占信道,采用数据包发送至IP网络。它的优点是成本低、信道利用率高,缺点也很明显,就是网络状况的好坏直接影响通话的质量。VOIP的通话的首要目标是对抗网络状况实现语音的流畅、可理解、实时性,在很多子模块设计也都是以这个为目标的。在VOIP框架下,声音从一端到达另一端一般是要经过:采集,前处理,编码,网络传输,解码,播放几个模块的。


示意图.png

为了达到流畅、可理解、实时性, VOIP的每个环节一般这么做的:

采集/播放模块:由于一般的人声都是中低频为主,高频的谐波不多。大部分采集模块都选用性价比最高的16KHz采样率,早期的采集模块的采样率则是更低的窄带8KHz。16KHz采样率不仅能保存绝大部分的人声,也降低了后面模块如前处理和编码器的计算量,同时还大大减少了编码的输出码率(相对于48Khz采样率)。
前处理:一般的音频前处理主要有:回声消除,噪声抑制,自动增益控制等。任何的前处理都是希望保留或放大我们想要的声音,消除或抑制不想要的声音。所以处理一定是对本体声音造成影响的。在一般的VOIP框架下,前处理算法不仅可以扔掉高频信息来保证计算量,同时在算法的偏向性上也更偏向于去除掉不想要保留的声音如噪音,回声等。最大限度保证可理解即可。
编解码器:一般的VOIP系统除了会使用国际电信联盟的711、722、G.723等编码器(如:IP电话等),更多的即时通讯软件则会使用针对网络传输设计的Opus 等编码器,Opus在人声场景下,会使用口腔发音模型建模silk语音编码器,可以实现高压缩比,大大提升低带宽下表现。
网络传输:在对抗网络传输的不稳定,包括:随机丢包,拥塞,抖动等,常见的对抗技术和策略有:FEC(Forward Error Correction)前向纠错技术,PLC(Packet loss concealment)丢包隐藏技术,ARQ(Automatic Repeat Request)自动重传机制,JitterBuffer 抖动缓存区策略,带宽与冗余包分配策略等等。一般VOIP在设计这些策略和方案的时候会最大限度的保留流畅性和实时性的同时,利用尽量少的带宽来恢复更多的数据,满足可理解性,同时也能兼顾低带宽纯音频场景以及正常带宽下的音视频混合场景。

这些环节的设计,可以让人声场景下节约计算量的同时又比较高效的被压缩最大限度的利益网络带宽,来达到最高的性价比的语音通话。
QttAudio是基于VOIP的音频回音消除软件,支持各大平台,是众多物联网厂家实时通信模块的优质选择。

你可能感兴趣的:(音频开发应该知道的VOIP通话技术基础)