跳转到主要内容

MOS(平均意见得分)模型,用于评估音频质量。

项目描述

AECMOS, DNSMOS, PLCMOS

  • 我们发布了用于评估由回声、噪声、数据包丢失和其他原因引起的音频退化的AECMOS、DNSMOS和PLCMOS模型,这些模型是我们开发的。

先决条件

  • Python 3.7 及以上版本
  • librosa 0.9.1
  • numpy 1.21.5
  • onnxruntime 1.10.0
  • pandas
  • tqdm

用法

from speechmos import aecmos, dnsmos, plcmos

aecmos.run(sample, sr, talk_type, **kwargs)

dnsmos.run(sample, sr, **kwargs)

plcmos.run(sample, sr, **kwargs)
  • sample 可以是以下之一

    • 对于 AECMOS:形式为 {'lpb': lpb, 'mic': mic, 'enh': enh} 的字典,对应回环、麦克风和增强音频,类型为 np.ndarray 或由 librosa 支持的音频文件路径。
    • 对于 DNSMOS 和 PLCMOS:np.ndarray 或由 librosa 支持的音频文件路径。

    所有音频应为单声道(单声道)音频。
    或者,sample 可以是上述类型项的列表。

  • sr 表示采样率。采样率应为 16000 或 48000。AECMOS 在 48kHz 下可用,所有其他模型在 16kHz 下可用。所有音频都应提供正确的采样率。

对于 AECMOS

  • talk_type 指定场景:已知时为 'st'(远端单讲)、'nst'(近端单讲)或 'dt'(双讲)。如果未知,则 talk_type 可以为 None,在这种情况下,可以使用无场景的 16kHz 模型。与基于场景的模型相比,性能大约低 2%。

对于 DNSMOS

  • model_type 控制使用哪个 DNSMOS 模型:'dnsmos''dnsmos_personalized'。默认为 'dnsmos'

其他参数

  • return_df 控制在评估样本列表时是否返回包含样本信息和 MOS 评分的 pandas 数据框。默认为 return_df = True。如果设置为 False,则返回字典列表。
  • verbose 控制是否在屏幕上打印更多详细信息。默认为 verbose = False

用法示例

使用 sample 作为 NumPy 数组的字典的 AECMOS 用法示例,且 talk_type 未知。

import librosa
from speechmos import aecmos

lpb, _ = librosa.load("d:/data/example/lpb.wav", sr=16000)
mic, _ = librosa.load("d:/data/example/mic.wav", sr=16000)
enh, _ = librosa.load("d:/data/example/enh.wav", sr=16000)

sample = {'lpb': lpb, 'mic': mic, 'enh': enh}

aecmos.run(sample, sr= 16000, verbose= True)

输出

Model version aecmos_scenarioless_16kHz.
The model sampling rate is 16000.
{'echo_mos': 4.9999470710754395, 'deg_mos': 3.4854962825775146, 'talk_type': None, 'model_name': 'aecmos_scenarioless_16kHz'}

使用 sample 作为指向音频文件路径的字典列表的 AECMOS 用法示例。

from speechmos import aecmos
aecmos.run(sample_list, sr=48000, 'dt', verbose = True)

输出

Using model aecmos_48kHz to evaluate 3 samples.
Model sampling rate is 48000.
0it [00:00, ?it/s]
1it [00:00,  8.59it/s]
3it [00:00, 25.77it/s]
{'lpb_path': 'D:/data/example/lpb.wav', 'mic_path': 'D:/data/example/mic.wav', 'enh_path': 'D:/data/example/enh.wav', 'echo_mos': 3.2400383949279785, 'deg_mos': 3.4087774753570557, 'talk_type': 'dt', 'model_name': 'aecmos_48kHz'}
{'lpb_path': 'D:/data/example/lpb.wav', 'mic_path': 'D:/data/example/mic.wav', 'enh_path': 'D:/data/example/enh.wav', 'echo_mos': 3.2400383949279785, 'deg_mos': 3.4087774753570557, 'talk_type': 'dt', 'model_name': 'aecmos_48kHz'}
{'lpb_path': 'D:/data/example/lpb.wav', 'mic_path': 'D:/data/example/mic.wav', 'enh_path': 'D:/data/example/enh.wav', 'echo_mos': 3.2400383949279785, 'deg_mos': 3.4087774753570557, 'talk_type': 'dt', 'model_name': 'aecmos_48kHz'}
       echo_mos   deg_mos
count  3.000000  3.000000
mean   3.240038  3.408777
std    0.000000  0.000000
min    3.240038  3.408777
25%    3.240038  3.408777
50%    3.240038  3.408777
75%    3.240038  3.408777
max    3.240038  3.408777

使用 NumPy 数组的 DNSMOS 用法示例

import librosa
from speechmos import dnsmos

audio, _ = librosa.load("D:/data/example/enh.wav", sr=16000)
dnsmos.run(audio, sr=16000)

输出

{'filename': 'D:/data/example/enh.wav',
 'ovrl_mos': 2.2067626609880104,
 'sig_mos': 3.290418848414798,
 'bak_mos': 2.141338429075571,
 'p808_mos': 3.0722866}

使用音频文件路径的 PLCMOS 用法示例

import librosa
from speechmos import plcmos

plcmos.run("D:/data/example/enh.wav", sr=16000)

输出

{'filename': 'D:/data/example/enh.wav',
 'plcmos': 2.5210512320200604,
 'model': 'plcmos_v2'}

引用

C. K. A. Reddy, V. Gopal 和 R. Cutler, "Dnsmos P.835: A Non-Intrusive Perceptual Objective Speech Quality Metric to Evaluate Noise Suppressors," ICASSP 2022 - 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Singapore, Singapore, 2022, pp. 886-890, doi: 10.1109/ICASSP43922.2022.9746108。

L. Diener, M. Purin, S. Sootla, A. Saabas, R. Aichner, and R. Cutler, "PLCMOS--a data-driven non-intrusive metric for the evaluation of packet loss concealment algorithms." arXiv preprint arXiv:2305.15127 (2023).

M. Purin, S. Sootla, M. Sponza, A. Saabas and R. Cutler, "AECMOS: A Speech Quality Assessment Metric for Echo Impairment," ICASSP 2022 - 2022 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Singapore, Singapore, 2022, pp. 901-905, doi: 10.1109/ICASSP43922.2022.9747836.

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源代码发行版

speechmos-0.0.1.1.tar.gz (9.4 MB 查看哈希值)

上传时间 源代码

构建发行版

speechmos-0.0.1.1-py3-none-any.whl (9.4 MB 查看散列值)

上传于 Python 3

支持者