为神经网络输入重塑 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 的批次提供给您的网络。 为了推断出最终的分类,您可以按照自己喜欢的方式对输出进行投票。