спектрограмма файла .m4a - PullRequest
       37

спектрограмма файла .m4a

1 голос
/ 11 апреля 2019

Чтобы решить мою основную проблему , я записал несколько .m4a аудиофайлов ( семпл ).Сначала я хочу получить спектрограмму, подобную этой:

<img src="https://i.stack.imgur.com/2R9HN.png" width="650" />

Сгенерировано Audacity.

С здесь Я могу импортировать файл:

from pydub import AudioSegment
seg = AudioSegment.from_file("voice.m4a")
print("Information:")
print("Channels:", seg.channels)
print("Bits per sample:", seg.sample_width * 8)
print("Sampling frequency:", seg.frame_rate)
print("Length:", seg.duration_seconds, "seconds")

и мне известны следующие функции построения спектрограммы:

  • scipy.signal.спектрограмма
  • matplotlib.pyplot.specgram

, для которых существует множество примеров здесь .Но я не знаю шагов между ними.Я был бы признателен, если бы вы могли помочь мне узнать, как мне получить вышеуказанный сюжетЭто не обязательно должен быть PyBud.Любая другая библиотека (или даже другой язык, если это свободное программное обеспечение!) Тоже подойдет.Спасибо за вашу поддержку заранее.

PS Следующим шагом будет анализ окружающего шума в режиме реального времени, такой как здесь .Поэтому любая помощь в этом направлении также будет высоко оценена.

1 Ответ

2 голосов
/ 11 апреля 2019

Вот пример прямо из документации (см. Стр. 10):

# Example for plotting a spectrogram using this function
import audiosegment
import matplotlib.pyplot as plt
#...
seg = audiosegment.from_file("voice.m4a")
freqs, times, amplitudes = seg.spectrogram(window_length_s=0.03, overlap=0.5)
amplitudes = 10 * np.log10(amplitudes + 1e-9)
# Plot
plt.pcolormesh(times, freqs, amplitudes)
plt.xlabel("Time in Seconds")
plt.ylabel("Frequency in Hz")
plt.show()
  • Вам необходимо установить [Библиотека AudioSegment] (например, pip install AudioSegment)
  • Библиотека FFmpeg также должна быть установлена.В Windows можно использовать Chocolatey: choco install ffmpeg
...