我正在尝试使用马斯瓦尔包的马斯瓦尔函数来评估我的音频源分离模型。我正在评估的模型是训练来预测声音的,结果与实际的声音相似,但是评估指标如SDR是负的。
下面是我生成指标的功能:
def estimate_and_evaluate(track):
#track.audio is stereo therefore we predict each channel separately
vocals_predicted_channel_1, acompaniment_predicted_channel_1, _ = model_5.predict(np.squeeze(track.audio[:, 0]))
vocals_predicted_channel_2, acompaniment_predicted_channel_2, _ = model_5.predict(np.squeeze(track.audio[:, 1]) )
vocals = np.squeeze(np.array([vocals_predicted_channel_1.wav_file, vocals_predicted_channel_2.wav_file])).T
accompaniment = np.squeeze(np.array([acompaniment_predicted_channel_1.wav_file, acompaniment_predicted_channel_2.wav_file])).T
estimates = {
'vocals': vocals,
'accompaniment': accompaniment
}
scores = museval.eval_mus_track(track, estimates)
print(scores)我得到的度量值是:
vocals ==> SDR: -3.776 SIR: 4.621 ISR: -0.005 SAR: -30.538
accompaniment ==> SDR: -0.590 SIR: 1.704 ISR: -0.006 SAR: -16.613 上面的结果是没有意义的,因为首先,伴奏预测是纯粹的噪声,因为这个模型是为声音训练的,但是它得到了较高的特别提款率。第二个原因是预测的声音有一个非常相似的图形与实际的,但仍然得到一个负的SDR值!在下面的图表中,最上面的是实际的声音,最下面的是预测的声源:
第一频道:


第二频道:


我试图改变预测的声音,如提到的这里,但结果变得更糟。
知道是什么导致了这个问题吗?
这是指向实际声道、立体声numpy数组和这 1到预测的立体声numpy数组的链接。您可以通过使用np.load加载和操作它们,谢谢您的时间
发布于 2022-04-13 18:11:21
信号失真比实际上是比率的对数。参见本文的等式(12):SigPro11.pdf
因此,SDR为0表示信号等于失真。小于0的SDR值意味着失真大于信号。如果声音听起来不像有更多的失真比信号,原因往往是样本对齐问题。
当你看方程(12),你可以看到,计算在很大程度上取决于保持准确的样本对齐预测的地面真相音频。如果样本不对齐,很难从波形图中分辨出来,甚至很难侦听。但是,一个放大的图,你可以看到每一个样本,可以帮助你确保地面真相和预测样本是准确的排列。如果单样本移动,特别提款权的计算就不会反映实际的特别提款权。
https://stackoverflow.com/questions/71861816
复制相似问题