图2. 语音丢包
2.相关技术概述
图3. WebRTC引擎
通过带通滤波器,将输入的语音信号分离成窄带和宽带部分。
对窄带部分使用更多码率进行压缩,减少失真。如果还有带宽资源,会先花少量码率对高频进行高效率的参数编码,恢复出质量可接受的高频。进一步,如果还有更多带宽资源,对高频做更为精细编码,恢复出高质量的高频。
上述编码的码流,将使用不同优先级传输保障策略,发给接收端。特别地,网络非常差情况下,只发送窄带部分的码流。
如果接收端至少收到低频部分,可恢复出窄带语音,基础质量可以保障。根据收到不同编码精度的高频,输出不同质量水平的宽带语音。
图4. 嵌入式编码基本架构
图5. 带外FEC示意图
请求重传模块记录并缓存所有重传数据包的重传成功所消耗的时间,并将重传延时ArqDelay告知JitterBuffer模块,提高了数据的缓冲等待时长的高可控性。
接收端通过ARQ请求,在数据缓冲队列的数据帧被播放之前,当还未重传成功的数据帧在已经达到播放时间时,接收端通过ACK通知取消请求重传,减少无用请求。
3.联合信源信道编码架构
如果网络抗性完全来自于带外,带宽成本激增。
重传等操作,带来了包的组合、解析等迭代操作,增加时延。
首先,提升信源侧方法的能力上界。相对于标准带内FEC,新的信源侧FEC,需要更强的单独抗性;比如,支持40%丢包率。
其二,灵活调用带外和带内抗性。以期在抗性稳定性和带宽消耗上有一个更为灵活的折衷。相关的控制参数,依赖于测试平台提供的经验数据,进行迭代升级。
第三,前向兼容性问题,要保证新旧两种协议无互通问题。
图6. 联合信源信道编码基本框架
系统可以分解为发送端、网络侧、接收端。
发送端将新方案的码流发往上行媒体代理。其中,cFEC提供了信源侧抗性,带外和流控,根据实际的网络状态,下发具体配置,确保最小带宽和延时成本下的QoE保障。
上行媒体代理处,将新方案对应的协议,转换成标准协议。
下行媒体代理处,将标准协议转换成新方案的协议,并发给接收端。
接收端接收新方案的协议,具备了联合信源信道的能力;以更少的带宽和延时,获得稳定可靠的网络抗性能力。此外,接收端也集成cPLC丢包补偿模块处理突发丢包状态。实时策略,由带外和流控模块控制。在网络有损的情况下,带外FEC或者ARQ重传,最大程度保障数据包可以完整发送到接收端。如果仍然有丢包发生,首先基于cFEC的带内抗性进行质量保障;如果有更多连续数据包丢失,则启动cPLC进行丢包补偿。
图7. cFEC技术与OPUS原生FEC的抗性能力对比
40%丢包率下,OPUS与cFEC原生技术效果对比(上为女生,下为男生)
图8. cPLC技术与OPUS原生PLC的能力对比
4.实验结果
5.结论