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")