我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。
我需要将整体通话质量评为优秀、良好、一般或差。
是否有使用 WebRTC 统计数据给出总体评分的公式?如果不是,我应该给予哪些 WebRTC 统计数据更多的权重?
我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。
我需要将整体通话质量评为优秀、良好、一般或差。
是否有使用 WebRTC 统计数据给出总体评分的公式?如果不是,我应该给予哪些 WebRTC 统计数据更多的权重?
我们最终使用 MOS(平均意见分数)算法来计算语音通话质量指标。
这是我们使用的公式 -
取平均延迟,添加抖动,但对延迟的影响加倍,然后为协议延迟添加 10 EffectiveLatency = (AverageLatency + Jitter * 2 + 10)
实现一个基本曲线 - 在 160 毫秒的延迟(往返)处减去 4 的 R 值。如果 EffectiveLatency < 160 然后 R = 93.2 - (EffectiveLatency / 40) 否则 R = 93.2 - (EffectiveLatency - 120) / 10
现在,让我们每丢包百分比减去 2.5 个 R 值 R = R - (PacketLoss * 2.5)
将 R 转换为 MOS 值。(这是已知公式)MOS = 1 + (0.035) * R + (.000007) * R * (R-60) * (100-R)
我们从https://www.pingman.com/kb/article/how-is-mos-calculated-in-pingplotter-pro-50.html找到了公式