Как конвертировать .wav файл в изображение для нейронной сети? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь выполнить классификацию звука с помощью нейронной сети и хочу преобразовать 4-секундный аудиофайл в формат .wav для преобразования в изображение.

Я бы предпочел использовать библиотеку Librosa. Также я хотел бы знать, как читать это изображение и предоставлять его в качестве входных данных для любой модели CNN.

Я нашел здесь похожий пост, но они не решают мою проблему.

Это это то, что я пробовал до сих пор:

y, sr = librosa.load('36902-3-2-0.wav')
S = librosa.feature.melspectrogram(y, sr, n_mels=128, fmax=8000)
librosa.display.specshow(librosa.power_to_db(S, ref=np.max), fmax=8000)
plt.savefig('mel.png')

Я получаю это изображение:

enter image description here

And when I try to read the image using matplotlib.pyplot or cv2, all I get is an array filled with 255 value:

array([[[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       [[255, 255, 255],
        [255, 255, 255],
        [255, 255, 255],
        ...,
        [255, 255, 255],
        [255, 255, 255],
        [255, 255, 255]],

       ...,

Ссылка на аудиофайл: https://drive.google.com/file/d/1BBgOxKy2-JMOHa90DCeFVLgoA7pEblVg/view?usp=sharing

1 Ответ

1 голос
/ 06 августа 2020

Это совершенно нормально - вы смотрите на белую рамку по бокам, а (255,255,255) белый.

Попробуйте посмотреть координаты 200,200:

print(array[200:210, 200:210])

array([[[ 96,  87, 235],
        [ 96,  87, 235],
        [ 96,  87, 235],
        [ 95,  90, 237],
        [ 95,  90, 237],
        ...
        ...

Или посмотрите на среднее:

print(array.mean())

161.20984439300412
...