Составьте спектрограммы для всех файлов .wav в папке, используя python (в блокноте jupyter) - PullRequest
0 голосов
/ 24 октября 2019

У меня есть следующий код, который создает спектрограмму для конкретного файла, довольно просто. я хочу узнать, есть ли возможность составить спектрограмму для всех файлов в папке без необходимости копировать, вставлять строки кода спектрограммы и менять имя аудиофайла в каждом (я знаю о глобусе, но яне могу применить это здесь).

#import the pyplot and wavfile modules 
import matplotlib.pyplot as plt
from scipy.io import wavfile 

# Read the wav file (mono)
samplingFrequency, signalData = wavfile.read('sounds/wams20_hat1.wav')

# Plot the signal read from wav file
plt.figure(figsize=(5,5))

plt.title('Spectrogram')
plt.specgram(signalData,Fs=samplingFrequency)
plt.xlabel('Time')
plt.ylabel('Frequency')
plt.show()

внутри папки звучит / у меня есть 100 .wav файлов, поэтому я пытаюсь найти «экологический» способ для достижения 100 спектограмм этого. WAV-файлы с минимально возможным количеством строк кода. надеюсь, это звучит ясно для вас

1 Ответ

0 голосов
/ 03 ноября 2019

Создайте функцию, которая берет путь к аудио для загрузки и возвращает рисунок matplotlib. Затем вызовите это в цикле для каждого файла в каталоге (который вы можете получить, используя glob.glob или os.listdir).

Функция, вероятно, должна явно создать рисунок и ось matplotlib, используя fig, ax = plt.subplots(1, figsize=(10,10)). Затем визуализируйте спектрограмму в нем. Использование librosa.load для получения звука и librosa.display.specshow(ax=ax) немного лучше, чем прямое использование scipy / matplotlib. веб-страница librosa

...