0

I am having some trouble to visualize mel-spectrogram for WAV files contained inside folders and sub folders for deep learning using librosa..

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from glob import glob
import librosa as lr
import librosa.display
import IPython.display as ipd

pathAudio = 'Sounds'
files = librosa.util.find_files(pathAudio, ext=['WAV'])
files = np.array(files, dtype=float)
sr = 22050

for y in files:


    ipd.Audio(files, rate=22050)
    scale, sr = lr.load(files)
    filter_banks = lr.filters.mel(n_fft=2048, sr=22050, n_mels=10)
    filter_banks.shape
    plt.figure(figsize=(25, 10))
    librosa.display.specshow(filter_banks,
                             sr=sr,
                             x_axis="linear")
    plt.colorbar(format="%+2.f")
    plt.show()
    mel_spectrogram = lr.feature.melspectrogram(scale, sr=sr, n_fft=2048, hop_length=512, n_mels=10)

    mel_spectrogram.shape

    log_mel_spectrogram = lr.power_to_db(mel_spectrogram)
    log_mel_spectrogram.shape

    plt.figure(figsize=(25, 10))
    librosa.display.specshow(log_mel_spectrogram,
                             x_axis="time",
                             y_axis="mel",
                             sr=sr)
    plt.colorbar(format="%+2.f")
    plt.show()

Here,I am getting an error message:

files = np.array(files,dtype=float)
ValueError: could not convert string to float

I tried visualizing spectrogram for a single WAV file and didn't get any errors..

import librosa
import librosa.display
import IPython.display as ipd
import matplotlib.pyplot as plt

scale_file = "audio/scale.wav"

ipd.Audio(scale_file)

# load audio files with librosa
scale, sr = librosa.load(scale_file)

filter_banks = librosa.filters.mel(n_fft=2048, sr=22050, n_mels=10)

filter_banks.shape

plt.figure(figsize=(25, 10))
librosa.display.specshow(filter_banks, 
                         sr=sr, 
                         x_axis="linear")
plt.colorbar(format="%+2.f")
plt.show()

mel_spectrogram = librosa.feature.melspectrogram(scale, sr=sr, n_fft=2048, hop_length=512, n_mels=10)

mel_spectrogram.shape

log_mel_spectrogram = librosa.power_to_db(mel_spectrogram)

log_mel_spectrogram.shape

plt.figure(figsize=(25, 10))
librosa.display.specshow(log_mel_spectrogram, 
                         x_axis="time",
                         y_axis="mel", 
                         sr=sr)
plt.colorbar(format="%+2.f")
plt.show()

but when I tried making mel-spectrograms for large number of wavefiles inside folders and sub folders..i got error!! It would be a huge help if anyone could find a way to fix this issue...

Swejal
  • 1
  • Please provide a [mcve], as well as the entire error output. Have you done any debugging? I would recommend reading https://ericlippert.com/2014/03/05/how-to-debug-small-programs/. – AMC Oct 30 '20 at 23:13

1 Answers1

0

To start, replace

files = np.array(files, dtype=float)
[...]
ipd.Audio(files, rate=22050)
scale, sr = lr.load(files)

with

files = np.asarray(files)
[...]
ipd.Audio(y, rate=22050)
scale, sr = lr.load(y)

There may be more issued after that.

This other question may also help.

Hendrik
  • 5,085
  • 24
  • 56