Я только начинал с кода для предварительной обработки некоторых аудиоданных, чтобы в последнее время кормить ими нейронную сеть. Прежде чем более подробно объяснять мою настоящую проблему, упомяните, что я взял ссылку о том, как делать проект, из этот сайт. Также использовался некоторый код, взятый из этого сообщения и читайте дополнительную информацию в signal.spectogram doc и этот пост.
На данный момент со всеми упомянутыми ранее источниками мне удалось получить аудиофайл wav в виде массива numpy и постройте его амплитуду и спектрограмму. Это запись моего произнесения слова «команда» на испанском языке.
Странный факт здесь заключается в том, что я поискал в Интернете и обнаружил, что спектр человеческого голоса колеблется от 80 до 8 кГц, поэтому, чтобы убедиться, я сравнил этот вывод с тем, что Возвращена спектрограмма Audacity. Как вы можете видеть, это кажется более согласованным с найденной информацией, поскольку диапазон частот - это тот, который должен быть для людей.
Итак, это подводит меня к последнему вопросу: я делаю что-то не так в процессе чтения аудио или генерации спектрограммы, или, может быть, у меня проблемы с сюжетом?
Кстати, я новичок как в Python, так и в обработке сигналов, поэтому заранее спасибо за ваше терпение.
Вот код, который я использую на самом деле:
def espectrograma(wav): sample_rate, samples = wavfile.read(wav) frequencies, times, spectrogram = signal.spectrogram(samples, sample_rate, nperseg=320, noverlap=16, scaling='density') #dBS = 10 * np.log10(spectrogram) # convert to dB plt.subplot(2,1,1) plt.plot(samples[0:3100]) plt.subplot(2,1,2) plt.pcolormesh(times, frequencies, spectrogram) plt.imshow(spectrogram,aspect='auto',origin='lower',cmap='rainbow') plt.ylim(0,30) plt.ylabel('Frecuencia [kHz]') plt.xlabel('Fragmento[20ms]') plt.colorbar() plt.show()