【发布时间】:2019-07-18 15:19:30
【问题描述】:
我正在训练一个名为 DeWave (https://github.com/chaodengusc/DeWave) 的 Python 音频源分离模型包。它在单通道 .wav 文件上进行了训练。训练模型后,我对 .wav 样本进行了推理(以分离单声道音频测试文件中的两个扬声器源)。这工作正常,除了如果我剪切 .wav 文件,在这种情况下,我会从 librosa 收到一个错误,指出音频缓冲区并非到处都是有限的。
我尝试对不同的音频文件进行推断,并且只有在我使用外部软件剪切 .wav 文件时才会出现错误(我尝试使用 sox 和 Zamzar 进行剪切)。我成功推断的音频文件具有所有不同的长度,并且不是给定长度的倍数,所以我不认为这是一个长度问题。我想知道文件切割是否会擦除缓冲区,但我一般不熟悉缓冲区,所以任何关于如何解决这个问题的见解都将不胜感激。
使用 librosa 编写的主要代码是来自https://github.com/chaodengusc/DeWave/blob/master/DeWave/infer.py 的这些行
## restore the original audio
len1 = len(out_audio1) // 3
len2 = len(out_audio2) // 3
source1 = out_audio1[len1:2*len1]
source2 = out_audio2[len2:2*len2]
librosa.output.write_wav(input_file[0:-4]+"_source1.wav", source1, SAMPLING_RATE)
librosa.output.write_wav(input_file[0:-4]+"_source2.wav", source2, SAMPLING_RATE)
return [(source1, SAMPLING_RATE), (source2, SAMPLING_RATE)]
预期的输出将是两个长度相同的独立 .wav 文件,每个文件中都有一个扬声器,而另一个扬声器正在讲话时静音。但是,我收到此错误:
Traceback (most recent call last):
File "/home/<me>/anaconda3/bin/dewave-infer", line 11, in <module>
sys.exit(infer())
File "/home/<me>/anaconda3/lib/python3.6/site-packages/DeWave/cmdinfer.py", line 12, in infer
blind_source_separation(args.input_file, args.model_dir)
File "/home/<me>/anaconda3/lib/python3.6/site-packages/DeWave/infer.py", line 207, in blind_source_separation
librosa.output.write_wav(input_file[0:-4]+"_source1.wav", source1, SAMPLING_RATE)
File "<decorator-gen-6>", line 2, in write_wav
File "/home/<me>/anaconda3/lib/python3.6/site-packages/librosa/util/decorators.py", line 58, in __wrapper
return func(*args, **kwargs)
File "/home/<me>/anaconda3/lib/python3.6/site-packages/librosa/output.py", line 239, in write_wav
util.valid_audio(y, mono=False)
File "/home/<me>/anaconda3/lib/python3.6/site-packages/librosa/util/utils.py", line 171, in valid_audio
raise ParameterError('Audio buffer is not finite everywhere')
librosa.util.exceptions.ParameterError: Audio buffer is not finite everywhere
【问题讨论】:
-
也许模型要求文件有一定的最小长度?还是需要一定长度的倍数?这个问题可能更适合作为问题提交到 DeWave 存储库中,因为解决它可能需要深入了解该特定软件。
-
感谢您的评论 - 我对问题进行了一些编辑。不幸的是,我无法打开一个问题,因为回购是一个分叉,我不相信问题的根源在于模型本身。但是,我一直在与创作者联系 - 如果我听到任何消息,我会更新。
-
请注意,WAV 文件可以使用多种数据格式。 16 位整数、32 位浮点数等。可能想检查损坏的 VS 工作输入文件中的数据类型