是否可以在MySQL中计算MOS,并且有人可以使用以下公式(参见下文并在perl脚本here中找到)提供一个工作示例,时间设置为30分钟?
对于运动数据,每5分钟插入一次,并且colums为:
<column> <exampledata>
id 42
timestamp 2016-01-01 00:00:05
packets 1000
lost_perc 3
lost 30
delay_avg 35,102
id 43
timestamp 2016-01-01 00:00:10
packets 2000
lost_perc 10
lost 200
delay_avg 74,67
抖动
Sum all delay_avg records and divide by number of delay_avg records-1
有效延迟
取平均延迟,添加抖动,但对延迟的影响加倍,然后为协议延迟增加10。
$effective_latency = ( $delay_avg + $jitter * 2 + 10 );
R值
实施基本曲线
if ($effective_latency < 160) {
$r_value = 93.2 - ($effective_latency / 40);
}
else {
$r_value = 93.2 - ($effective_latency - 120) / 10;
}
每个packet_loss百分比扣除2.5 r_value
$r_value = $r_value - ($lost_perc * 2.5);
# Convert the r_value into an MOS value.
$MOS = 1 +
(0.035) *
$r_value +
(0.000007) *
$r_value *
($r_value - 60) *
(100 - $r_value);
谢谢!
答案 0 :(得分:0)
MOS是一个无法衡量的主观尺度,但某些音频编解码器有已知的MOS值。
答案 1 :(得分:0)
我不认为您的抖动计算是正确的。 抖动应该表示数据包到达时间的变化。也许你可以计算它:最长的间隔减去最小的间隔。 您为抖动指定的公式只返回平均数据包延迟。
然后你应该能够使用以下因素编写一些公式: (以尽可能小的间隔计算):
没有任何确切的公式(因为MOS通常是通过人体实验测试发现的),但基于这些,您可以得到一些与实际语音质量高度相关的数字。