1

我希望有人可以帮助我解决我遇到的问题。我正在尝试加载多个(即 3 个)音频文件并使用 Python 的 Librosa 库绘制它们。我无法在这里发现错误。

def main():
pathAudio = "~/Project Data/Practice/Train Music/"
files = librosa.util.find_files(pathAudio, ext=['ogg']) 
files = np.asarray(files)
for y in files: 
    y = librosa.load(y, sr = 16000,mono = True)        
    librosa.display.waveplot(y)

以上产生错误:

ParameterError: data must be of type numpy.ndarray

有人指出这可能是导致问题的 y 类型,但我在这里找不到任何明显的错误。

欢迎任何建议,因为事实证明这对我来说是一个巨大的时间浪费。

4

1 回答 1

2

我试图打印数据,这是load函数的输出:

(array([ 1.4347234e-04,  3.3454646e-04,  2.9680674e-04, ...,
        4.7093499e-06, -1.5776950e-05,  0.0000000e+00], dtype=float32), 16000)

这是一个tuple。您将需要使用data = data[0]来获取波形数据数组。

一个快速的解决方法是:

pathAudio = "~/Project Data/Practice/Train Music/"
files = librosa.util.find_files(pathAudio, ext=['ogg']) 
files = np.asarray(files)
for y in files: 
    data = librosa.load(y, sr = 16000,mono = True)   
    data = data[0]     
    librosa.display.waveplot(data)

这就是我得到的:

在此处输入图像描述

于 2018-03-09T16:50:34.690 回答