为神经网络输入重塑 python 中的音频文件数组
Reshaping an Audio file array in python for Neural Network input
我目前不熟悉使用自己的数据集构建神经网络。我想训练一个用于音频分类的卷积神经网络,但我正在为数组重塑而苦苦挣扎。
我首先在我的 phone 上录制了音频,然后使用 Librosa 包加载它以获得可用于我的神经网络的频谱图输出图像数组。
sample = 2
filename = df.File[sample]
y, sr = librosa.load('/content/drive/MyDrive/AI Data Set/SoundRecord-2021-03-30-15-46-36.wav',sr=44100)
ps = librosa.feature.melspectrogram(y=y, sr=sr)
ps.shape. #Output (128,193)
然后我想将它重塑为 (128,128),所以我尝试了以下操作:
x = ps.reshape((128,128))
但它给我一条错误消息:ValueError:无法将大小为 24704 的数组重塑为形状 (128,128)
此外,我还有很多这样的音频文件,我必须对其进行整形,然后创建一个组合数组,然后将该数组整形为 (128,128,1) 3D 数组。
请帮帮我!!!
你的音频太长了。从 librosa 文档中,您从 melspectrogram 方法获得的输出如下:
S - np.ndarray [shape=(n_mels, t)]
t
是时间段数,它取决于输入 .wav 文件的长度。您可以截断输入 (ps = ps[:,:128]
) 或更好(在您的情况下)将 melspectrogram 分成两个重叠的
melspecs = np.array([ps[:,:128], ps[:,-128:]])[..., np.newaxis]
在这种情况下,melspec 的形状为 (2, 128, 128, 1),因此可以作为大小为 2 的批次提供给您的网络。
为了推断出最终的分类,您可以按照自己喜欢的方式对输出进行投票。
我目前不熟悉使用自己的数据集构建神经网络。我想训练一个用于音频分类的卷积神经网络,但我正在为数组重塑而苦苦挣扎。
我首先在我的 phone 上录制了音频,然后使用 Librosa 包加载它以获得可用于我的神经网络的频谱图输出图像数组。
sample = 2
filename = df.File[sample]
y, sr = librosa.load('/content/drive/MyDrive/AI Data Set/SoundRecord-2021-03-30-15-46-36.wav',sr=44100)
ps = librosa.feature.melspectrogram(y=y, sr=sr)
ps.shape. #Output (128,193)
然后我想将它重塑为 (128,128),所以我尝试了以下操作:
x = ps.reshape((128,128))
但它给我一条错误消息:ValueError:无法将大小为 24704 的数组重塑为形状 (128,128)
此外,我还有很多这样的音频文件,我必须对其进行整形,然后创建一个组合数组,然后将该数组整形为 (128,128,1) 3D 数组。
请帮帮我!!!
你的音频太长了。从 librosa 文档中,您从 melspectrogram 方法获得的输出如下:
S - np.ndarray [shape=(n_mels, t)]
t
是时间段数,它取决于输入 .wav 文件的长度。您可以截断输入 (ps = ps[:,:128]
) 或更好(在您的情况下)将 melspectrogram 分成两个重叠的
melspecs = np.array([ps[:,:128], ps[:,-128:]])[..., np.newaxis]
在这种情况下,melspec 的形状为 (2, 128, 128, 1),因此可以作为大小为 2 的批次提供给您的网络。 为了推断出最终的分类,您可以按照自己喜欢的方式对输出进行投票。