KevinGeng's picture
change nat2avaMOS
feb689b
raw
history blame
No virus
1.63 kB
import numpy as np
import matplotlib.pyplot as plt
# Natural MOS to AVA MOS
def linear_function(x):
m = (4 - 1) / (1.5 - 1)
b = 1 - m * 1
return m * x + b
def quadratic_function(x):
return -0.0816 * (x - 5) ** 2 + 5
# Natural MOS to AVA MOS
def nat2avaMOS(x):
if x <= 1.5:
return linear_function(x)
elif x >1.5 and x <= 5:
return quadratic_function(x)
# Word error rate to Intellibility Score (X is percentage)
def WER2INTELI(x):
if x <= 10:
return 100
elif x <= 100:
slope = (30 - 100) / (100 - 10)
intercept = 100 - slope * 10
return slope * x + intercept
else:
return 100 * np.exp(-0.01 * (x - 100))
# # 生成 x 值
# x = np.linspace(0, 200, 400) # 从0到200生成400个点
# # 计算对应的 y 值
# y = [WER2INT(xi) for xi in x]
# # 绘制函数图像
# plt.plot(x, y)
# plt.xlabel('x')
# plt.ylabel('f(x)')
# plt.title('Custom Function')
# plt.grid(True)
# plt.show()
# # 生成 x 值的范围
# x1 = np.linspace(1, 1.5, 100)
# x2 = np.linspace(1.5, 5, 100)
# # 计算对应的 y 值
# y1 = linear_function(x1)
# y2 = quadratic_function(x2)
# # 绘制线性部分
# plt.plot(x1, y1, label='Linear Function (1 <= x <= 1.5)')
# # 绘制二次部分
# plt.plot(x2, y2, label='Quadratic Function (1.5 <= x <= 5)')
# # 添加标签和标题
# plt.xlabel('Natural Mean Opinion Score')
# plt.ylabel('AVA Mean Opinion Score')
# plt.title('nat2avaMOS')
# # 添加图例
# plt.legend()
# # 显示图形
# plt.grid(True)
# # 显示图像
# plt.savefig("./local/nat2avaMOS.png")
# plt.savefig("./local/WER2INT.png")