训练的模型FRCRN/checkpoint/output
下的评估结果如下:
{"total_loss": 214.77833557128906, "avg_sisnr": 19.650760650634766, "avg_loss": 107.38919067382812}
我用一段含有噪声音频的测试,发现模型根本没有去噪功能,仅仅幅度变大了,而且我用下面这段代码再评估模型,avg_sisnr竟然是负数。
import os
import tempfile
from modelscope.metainfo import Trainers
from modelscope.msdatasets import MsDataset
from modelscope.trainers import build_trainer
from modelscope.utils.audio.audio_utils import to_segment
tmp_dir = tempfile.TemporaryDirectory().name
if not os.path.exists(tmp_dir):
os.makedirs(tmp_dir)
hf_ds = MsDataset.load(
'ICASSP_2021_DNS_Challenge', split='test').to_hf_dataset()
mapped_ds = hf_ds.map(
to_segment,
remove_columns=['duration'],
# num_proc=5, # Comment this line to avoid error in Jupyter notebook
batched=True,
batch_size=36)
dataset = MsDataset.from_hf_dataset(mapped_ds)
kwargs = dict(
model='damo/speech_frcrn_ans_cirm_16k',
model_revision='beta',
train_dataset=None,
eval_dataset=dataset,
val_iters_per_epoch=125,
work_dir=tmp_dir)
trainer = build_trainer(
Trainers.speech_frcrn_ans_cirm_16k, default_args=kwargs)
eval_res = trainer.evaluate()
print(eval_res['avg_sisnr'])
数据量不少,超参数没变,出来的模型不至于会那么差吧。
可以给您一些建议来帮助您解决问题:
检查数据预处理:确保您的测试数据集与训练数据集具有相似的预处理方式。例如,如果您在训练过程中对音频进行了归一化处理,那么在测试过程中也需要进行相同的处理。
检查模型参数:确保您在训练过程中使用了与测试时相同的超参数。不同的超参数可能导致模型性能的差异。
检查评估指标:avg_sisnr
的值为负数可能是由于计算错误或者数据问题导致的。您可以尝试使用其他评估指标(如 avg_pesq
)来评估模型的性能。
检查模型输出:确保模型的输出是有效的。您可以检查模型输出的音频文件是否包含噪声,以及幅度是否发生了变化。
检查训练日志:查看训练日志以获取更多关于模型性能的信息。这可以帮助您找到可能的问题所在。
首先,SISNR是一个常见的音质评估指标,负数可能是信号比噪声还低的结果,这意味着模型并没有产生很好的去噪效果。以下是几个可能的原因:
训练集的声音质量不高,可能导致模型不能很好地区分原始音频和噪声。
缺乏足够的训练数据,使得模型不能学习有效的特征。
有可能训练过程中出现了过拟合现象。
模型的参数可能不合适,如卷积层的过滤器数量、大小等。
检查训练过程:确保你的训练数据是正确的,模型参数设置得当,并且有足够的训练时间。如果你不确定,你可以尝试按照原始论文的设置重新训练模型,看是否能得到更好的结果。
调整模型架构:你可能会需要调整模型的一些参数,如卷积层的数量、滤波器的大小等等。这可能需要一些试验和错误,但是可以帮助改进模型的表现。
使用不同的评价指标:除了SISNR之外,还有其他的评价指标可用于评估音频去噪模型,如PSNR、SSIM等。尝试这些不同的评价指标,看看哪种最适合你的任务。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。