我在文件夹中有50个.wav文件,我需要遍历数据集并加载所有50个文件。对于每个音频文件,我只需将音频数据(不是sample_rate,只是数据)附加到名为'zero'的Python列表中。
你可以帮帮我吗?谢谢。
如果你真的只想要音频数据。
import wave, os, glob
zero = []
path = '/path/to/directory'
for filename in glob.glob(os.path.join(path, '*.wav')):
w = wave.open(filename, 'r')
d = w.readframes(w.getnframes())
zero.append(d)
w.close()
我意识到这是Microsoft的数据科学专业计划的课程作业,还没有看到任何好的答案。所以这是你给我们的场景:
data
而不是sample_rate
返回的scipy.io.wavfile
您已经有一个名为zero
的空列表我假设:
zero = []
这是解决方案(更改path
以匹配您的目录):
import os
import glob
path = "Datasets/recordings/"
files = os.listdir(path)
for filename in glob.glob(os.path.join(path, '*.wav')):
samplerate, data = wavfile.read(filename)
zero.append(data)
您不想做的是简单地遍历该目录中的所有文件。大多数操作系统创建文件(git是一个例子,Mac OS上的.DS_Store是另一个例子),所以你只想读取仅带有*.wav
扩展名的文件。
然后你用一个简单的.append()
来附加它们。
len(zero)
应返回50,因为在该指定目录中有50个.wav
文件。
祝好运!