我已经能够使用RTCPeerConnection.getStats()API获得WebRTC音频呼叫的各种统计数据(抖动,RTT,数据包丢失等)。
我需要将整体通话质量评为优秀,良好,公平或……
我们最终使用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