我需要做一个机器学习任务,其中几个英语单词在录音中发音。我的任务是将多个录音作为输入,并对每个录音中的单词发音进行分类。 录音是单独的.wav文件,并一起存储在 .tgz 文件中。在我的代码中,我想提供 .tgz 文件作为输入,并将所有单独的.wav文件存储到数据数组中。 这是我到目前为止尝试过的:
data = np.array([])
tar = tarfile.open("wav.tgz", "r:gz")
for member in tar.getmembers():
f = tar.extractfile(member)
if f is not None:
data = np.asarray(f.read())
tar.close()
但是,在打印数据时,这会将所有信息作为字节返回,存储在数组中,如下所示:
b'RIFF$}x00x00WAVEfmt x10x00x00x00x01x00x01x00x80>x00x00x00}x00x00x02x00x10x00datax00}x00x00xcdxffxcexffxcbxffxcaxffxcbxffxc8xffxccxffxcexffxd0xffxd4xffxd1xffxccxffxc9xffxddxffxe5xffxd7xffxd3xffxd4xffxddxffxd9xffxcaxffxd9xffxe4xffxeaxffxf4xffxedxffxebxffxecxffxf1xffxf2xffxe5xffxecxffxf3xffxe9xffxeaxffxe5xffxe1xffxe4xffxe0xffxe7xffxefxffxefxffxf4xffxf4xffxf6xffxf4xffxe8xffxde
这持续了一段时间,因为它是一个相当大的文件。 有人可以帮助我从.tgz文件中单独提取这些文件的最佳方法是什么?另外,我不确定提取文件后处理文件的最佳方法是什么,也非常欢迎有关该部分的更多建议!
尝试使用 scipy.io.wavfile
import scipy
all_data = []
with tarfile.open("wav.tgz", "r:gz") as tar:
for member in tar.getmembers():
f = tar.extractfile(member)
if f is not None:
rate, data = scipy.io.wavfile.read(f)
all_data.append(data)