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
可以是上述类型项的列表。 - 对于 AECMOS:形式为
-
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 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | f65040b408a5114b808fba8abcbd22aa09dc77e60bea0c2d2b060efebca53dec |
|
MD5 | a9e5ccad5faf0df8aff2e753368c75e9 |
|
BLAKE2b-256 | 1e03b9f7fb53094b7919feb7a37d0dbc445f20276cff0743f518cd8d2726074a |
speechmos-0.0.1.1-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 31c4c9d3234f6ee10102edff74333014c50006a3f389daf7ecacae34e68ebbf7 |
|
MD5 | 8e2e17753b417b1e60a6e51abc50c9d4 |
|
BLAKE2b-256 | 300e08369f3574447acfe78a7678f9a5e2b9c6629888be25a5e2407d616a6c02 |