音频带宽预测与动态参数调整优化报告
-
优化背景与目的
基于18年8月份对
listensin
项目开发,还存在弱网络环境下动态参数调整不合理或不匹配的情况,导致点对点音频质量下降明显造成沟通不畅等问题,近期在依照友商产品体验的基础上进行全方位优化和改善。经过多轮反复试验,最终在原来优化的基础上增加了音频带宽估计和探测模块,实时探测网络状态以此来增加动态参数调整的精准性和稳定性。
-
优化内容与思路
目前的优化内容主要分两大块,第一块是根据视频带宽估计算法研发适合音频带宽估计算法,并以音频RTCP上报参数为输入,合理且准确的探测实时网络状态。第二块是在**项目原来动态参数调整优化的基础上,重新依据音频带宽预测算法的结果进行校准和加强,更进一步的提升参数调整的精准性和稳定性。具体的算法流程如下图所示:
-
测试结果汇总
- 测试环境:
- oppo A53m,vivo YS1A
- 5U ,360随身wifi(所有测试不支持穿透)
2) 测试版本:
- 组件demo(*_*优化版)
3) 测试日期:
20180927-20190103
4) 测试数据:
整个优化结果测试分三部分内容,第一部分是针对随机丢包型网络环境的模拟测试;第二部分是针对带宽受限网络环境的模拟测试;第三部分是公司内外环境实测。下面给出所有测试数据的可视化结果:
-
随机丢包网络
以下是随机丢包时音频质量客观打MOS分优化前后的对比数据及结果:
优化前:
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
优化后:
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
对于丢包
10%
情况的补测:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
对比结果:
对于丢包型网络优化前后
MOS
差别并不大,但是增加了带宽预测大幅度提升了动态参数调整的稳定性。对于
10%
丢包时,原来是做
1
倍
FEC
,补测时候优化了
FEC
倍数,大部分情况是固定在
2
倍,通过客观打分可知,
2
倍
FEC
效果明显比
1
倍要好。
下面给出随机丢包时音频带宽预测与动态参数调整的对应图:
- loss_0
当丢包为0时,整个网络状态正常,FEC = 0,码率稳定在32Kbps,打包时长为20ms,语音流程及舒服。
- loss_10
当丢包为10%时,整个网络判断为随机丢包型,FEC 从0升到1倍,码率从32Kbps下降到28Kbps或者24Kbps,由于丢包率实时不稳,导致FEC和码率出现波动,但大部分时间FEC维持在1倍,打包时长为20ms,语音偶有抖动。
经过进一步优化,当丢包在
10%
时,
FEC
大部分时间是在
2
倍,码率维持在
24Kbps
,偶尔出现
28Kbps
。
- loss_20
当丢包为20%时,整个网络判断为随机丢包型,FEC 从1升到2倍,码率从28Kbps下降到24Kbps或者20Kbps,在此丢包环境中FEC长期维持在2倍,打包时长为20ms,语音质量良好。
- loss_30
当丢包为30%时,整个网络判断为随机丢包型,FEC 从2升到3倍,码率从24Kbps下降到20Kbps或者16Kbps,大部分时间是码率是在16Kbps,在此丢包环境中FEC长期维持在3倍,打包时长为20ms,语音质量偶有断续。
-
带宽受限网络
以下是带宽受限时音频质量客观打MOS分优化前后的对比数据及结果:
优化前:
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
优化后:
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
对比结果:
对于带宽受限型网络,从客观打MOS分来看,质量提升明显,且能做到稳定精确,对于不同的网络受限能采取相对应的策略,整个动态参数调整合理且有效。
下面给出带宽受限时音频带宽预测与动态参数调整的对应图:
- 20Kbps_Network_limited
当带宽受限20Kbps时,整个网络判断为带宽受限型,动态参数的调整主要集中在码率,FEC始终保持为0倍。码率从正常网络的32Kbps下降到8Kbps,最终稳定在8Kbps,只有在网络状态完全正常,所有的判断都重新开始的时候才有细微波动,这是算法重新收敛的过程属于合理现象。整个过程语音清晰但声音质量只能是8Kbps码率的标准,不是很饱满。
- 30Kbps_Network_limited
当带宽受限30Kbps时,整个网络判断为带宽受限型,FEC为0倍,码率从8Kbps升到12Kbps,最终稳定在12Kbps。整个过程语音清晰但声音质量比8Kbps码率好,但声音还不不饱满。
- 40Kbps_Network_limited
当带宽受限40Kbps时,整个网络判断为带宽受限型,FEC为0倍,码率从12Kbps升到16Kbps,最终稳定在16Kbps。整个过程语音清晰声音饱满,失真小。
- 50Kbps_Network_limited
由于带宽受限在50Kbps的时候,由于opus编码目前在demo中的最大码率为32Kbps,再刚开始带宽受限时码率还是维持在32Kbps,但是随着检测的深入,经过优化大部分情况是可以检测到带宽受限的,只要带宽受限标志位置为1,后面的动态参数就会被锁定,近期多次测试结果来看,锁定为24Kbps和20Kbps的可能性最大,所以这样优加强了参数调整的稳定性,使得语音质量良好,且清晰流畅,当比起不受限时语音还是存在失真。
- 实际网络
在实际网络测试时,选择公司内部的
listensin
WIFI,主叫和被叫都连接统一WIFI,当不支持穿透。一端在走廊和洗手间门口走动时,此端会短时间内判断为带宽受限,按带宽受限的策略去调整动态参数,却能长时间锁定一档码率,符合算法设计初衷,保证了通话顺畅,提升了语音质量的稳定性。当到工作位置时,带宽估计算法会探测到已解除带宽受限,经过长时间的跟踪最终确定网络确实正常后,开始全面提升码率,提升语音质量,且进入新一轮判断。
-
优化结论
1. 经过多轮测试,动态参数的调整比原来更加精确和稳定,基本达到算法设计要求。
2. 增加了音频带宽估计和探测算法后,对不同网络状态的判断更加准确,增加了动态参数调整的稳定性。
3. 通过优化前后音频质量客观打分可知,优化后参数调整更加稳定,尤其对于带宽受限型网络,MOS分提升明显。
附件
:demo:
整理后数据:
**项目音频动态参数优化说明:
优化前测试报告: