Как я могу создать спектрограмму из файлов WAV в Python для проблемы классификации аудио

Кажется, что это редкий случай, но вот что со мной произошло:

Мы использовали @Inject вместо @Autowired, который является стандартом javaee, поддерживаемым Spring. В каждом месте он работал нормально, а бобы вводили правильно, а не в одно место. Инъекция компонента выглядит одинаково

@Inject
Calculator myCalculator

Наконец, мы обнаружили, что ошибка заключалась в том, что мы (фактически, функция автозавершения Eclipse) импортировали com.opensymphony.xwork2.Inject вместо javax.inject.Inject!

Итак, чтобы суммировать, убедитесь, что ваши аннотации (@Autowired, @Inject, @Service, ...) имеют правильные пакеты!

2
задан Sheldon 23 March 2019 в 10:50
поделиться

2 ответа

Вы можете использовать функции matplotlib.pyplot.xlim и matplotlib.pyplot.ylim для установки пределов обеих ваших осей.

[EDITED] В приведенном ниже примере я загружаю wav-файл длиной 3 секунды для песни Cantina Band, загруженной с этого веб-сайта :

import matplotlib.pyplot as plt
from scipy.io import wavfile

samplingFrequency, signalData = wavfile.read('C:/Users/Sheldon/Desktop/WAVEEXAMPLE/CantinaBand3.wav')


plt.title('Spectrogram')    
Pxx, freqs, bins, im = plt.specgram(signalData,Fs=samplingFrequency,NFFT=512)
plt.xlabel('Time')
plt.ylabel('Frequency')
plt.xlim(left=0,right=17)

plt.savefig('C:/Users/Sheldon/Desktop/WAVEEXAMPLE/fig11.png')

Этот скрипт выдает следующее изображение:

enter image description here

Если бы я не указал plt.xlim(left=0, right=17), выходной показатель был бы в диапазоне от 0 до 3 секунд :

enter image description here

0
ответ дан Sheldon 23 March 2019 в 10:50
поделиться

Вы также можете использовать Python's Librosa . Вот полный код в соответствии с вашими требованиями:

import librosa
import matplotlib.pyplot as plt

sig, fs = librosa.load(filename, sr=44100) #you can specify sample rate as well 
save_path = filename[:-4]+'.png'
plt.figure(figsize=(6.40,4.80), dpi=1000) #this makes the image resolution as 640x480
plt.axis('off') # no axis
plt.axes([0., 0., 1., 1.], frameon=False, xticks=[], yticks=[])
S = librosa.feature.melspectrogram(y=y, sr=44100, n_fft=4096, hop_length=2205, n_mels=512) #you can update it as per your requirement
librosa.display.specshow(librosa.power_to_db(S, ref=np.max),  cmap='jet')
plt.xlim(left=0,right=17)
plt.savefig(save_path, dpi=100, bbox_inches=None, pad_inches=0)
plt.close()
0
ответ дан Abhiram Satputé 23 March 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: