赞
踩
在语音降噪和盲源分离、语音合成等任务中,最后都会用语音质量评估指标来说明自己的算法效果,今天来详细梳理一下都有哪些方法。
音频质量评价当前主要分三种评价标准:
举一个例子,前面走过来一个美女,三个人就开始评价了。
A:她是我们班的,是班花,经过了四十多人投票选出来的,肯定是美女。
这就是主观评价,但是评价的主体还是太少。
B:我有她的个人资料,包括身高体重三维,从数据上看,是个美女。
这就是基于指标的评价,但是数据太生硬。
C:我有一套人工智能美女评价系统,模型是来自人类最顶尖、最苛刻的美女评价标准,已经评价了数百万的美女标准,并且给出了打分,这套模型与人类主观评价有99.7%的相似度。
这就是基于客观模型,同时兼具了主观和客性。
主观评价主要参照国家标准《YDT2309-2011音频质量主观测试方法》,国家标准主要也是参考国际标准 中的主观评价:ITU-R BS.1116-1997。国际标准中比较常用的有:ITU-T P800(电话传输系统语音质量主观评价)、ITU-T P830(电话宽带和宽带数字语音编解码器主观评价方法)、ITU-T P805 (对话质量主观评价)。
标准中的测试规则主要定义几点:
等级 | 分数 | 听感 |
---|---|---|
优 | 4.0~5.0 | 很好,听得清楚;延迟小,交流流畅 |
良 | 3.5~4.0 | 稍差,听得清楚;延迟小,交流欠流畅,有点杂音 |
中 | 3.0~3.5 | 还可以,听不太清;有一定延迟,可以交流 |
差 | 1.5~3.0 | 勉强,听不太清;延迟较大,交流需要重复多遍 |
劣 | 0~1.5 | 极差,听不懂;延迟大,交流不通畅 |
如果平均主观评价值MOS是4或者更高,被认为是比较好的语音质量,而若平均MOS低于3.6,则表示大部分接听者不能满意这个语音质量。
MOS测试一般要求:
除了绝对等级评分,其它常用的语音质量主观评价有失真等级评分(Degradation Category Rating, DCR)和相对等级评分(Comparative Category Rating, CCR),这两种方式不仅需要提供失真语音信号还需要原始语音信号,通过比较失真信号和原始信号获得评价结果(类似于ABX Test),比较适合于评估背景噪音对语音质量的影响,或者不同算法之间的直接较量。附语音合成论文中计算MOS的小脚本,其不仅强调MOS值,并且要求95%的置信区间内的分数:
# -*- coding: utf-8 -*- # @Time : 2019/4/30 13:56 # @Author : MengnanChen # @FileName: caculate_MOS.py # @Software: PyCharm import math import numpy as np import pandas as pd from scipy.linalg import solve from scipy.stats import t def calc_mos(data_path: str): ''' 计算MOS,数据格式:MxN,M个句子,N个试听人,data_path为MOS得分文件,内容都是数字,为每个试听的得分 :param data_path: :return: ''' data = pd.read_csv(data_path) mu = np.mean(data.values) var_uw = (data.std(axis=1) ** 2).mean() var_su = (data.std(axis=0) ** 2).mean() mos_data = np.asarray([x for x in data.values.flatten() if not math.isnan(x)]) var_swu = mos_data.std() ** 2 x = np.asarray([[0, 1, 1], [1, 0, 1], [1, 1, 1]]) y = np.asarray([var_uw, var_su, var_swu]) [var_s, var_w, var_u] = solve(x, y) M = min(data.count(axis=0)) N = min(data.count(axis=1)) var_mu = var_s / M + var_w / N + var_u / (M * N) df = min(M, N) - 1 # 可以不减1 t_interval = t.ppf(0.975, df, loc=0, scale=1) # t分布的97.5%置信区间临界值 interval = t_interval * np.sqrt(var_mu) print('{} 的MOS95%的置信区间为:{} +—{} '.format(data_path, round(float(mu), 3), round(interval, 3))) if __name__ == '__main__': data_path = '' calc_mos(data_path)
常见的音频测试的项目可以粗略的分类为:动态范围,频率响应、灵敏度,谐波失真,互调失真,信噪比,最大输入输出电平等。在目前应用广泛的音频标准中都是分别从不同的角度考察了音频常见产品的性能,现将分类如下:
PSEQ工具是用来计算语音样本的MOS-LQO (Mean Opinion Score – Listening Quality Objective)值,PESQ把在信号传输通过设备时提取的输出信号与参照信号进行比较计算出差异值。一般情况下,输出信号和参照信号的差异性越大,计算出的MOS参数值就越低。
PESQ在国际电信联盟的标注化代号为ITU-T P.862。总的想法是:
详细的直接参考这里。
其他评价方法:
CSIG: Mean opinion score (MOS) predictor of signal distortion
CBAK: MOS predictor of background-noise intrusiveness
COVL: MOS predictor of overall signal quality
PESQ: Perceptual evaluation of speech quality
SSNR: Segmental SNR
实际在论文中使用时:
说明:为对比本文提出算法的效果,使用了几种其他降噪算法做对比,所使用的都是对应方法的(官方)开源代码实现的。黑体的数字表示同一种评价指标下,不同方法的得分最高的一个。得分越高,语音质量越高。
在使用时,可直接在github上下载pesq的开源程序,在pycharm上安装直接使用。
github上的链接为:
https://github.com/ludlows/python-pesq
PESQ百度百科
http://www.emakerzone.com/test_comment_info/460/1
PESQ语音质量测试
很完善的参考,推荐看这个
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。