Построение спектрограммы на Python — примеры и код для анализа звуковых сигналов


Спектрограмма — это графическое представление спектра звукового сигнала в зависимости от времени. С ее помощью можно наглядно представить амплитуду и частоту звуковых компонентов во времени. Она находит свое применение в различных областях, таких как музыкальная аналитика, речевое распознавание, звуковая обработка и др. В этой статье мы рассмотрим, как построить спектрограмму на языке программирования Python, и предоставим несколько примеров и кода для иллюстрации различных подходов и техник.

Для построения спектрограммы на Python можно использовать различные библиотеки, такие как NumPy, SciPy и Matplotlib. NumPy предоставляет удобные инструменты для работы с массивами данных, SciPy содержит функционал для обработки и анализа звуковых сигналов, а Matplotlib позволяет строить графики и диаграммы. Вместе эти библиотеки предоставляют необходимый функционал для реализации алгоритмов построения спектрограммы.

Процесс построения спектрограммы включает несколько шагов. На первом этапе необходимо загрузить звуковой сигнал и преобразовать его в числовой массив с помощью библиотеки NumPy. Затем следует разделить сигнал на небольшие фрагменты, называемые окнами, которые перекрываются для извлечения статистических характеристик. После этого применяется преобразование Фурье для каждого окна, чтобы получить спектральную амплитуду и частоту. Наконец, полученные спектры объединяются и визуализируются с помощью библиотеки Matplotlib.

Что такое спектрограмма и как ее построить на Python

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

Для построения спектрограммы на языке Python, вы можете использовать библиотеку librosa, которая предоставляет широкий спектр функций для работы с аудио. С помощью librosa вы можете загрузить аудиофайл, разбить его на окна, применить преобразование Фурье к каждому окну и построить спектрограмму, отображая ее с помощью библиотеки matplotlib.

Ниже приведен пример кода, демонстрирующий, как построить спектрограмму на Python с использованием библиотеки librosa:


import librosa
import librosa.display
import matplotlib.pyplot as plt
# Загрузка аудиофайла
audio_file = 'audio.wav'
y, sr = librosa.load(audio_file)
# Разбиение аудио на окна
window_size = 2048
hop_length = 512
spectrogram = librosa.feature.melspectrogram(y=y, sr=sr, n_fft=window_size, hop_length=hop_length)
# Отображение спектрограммы
plt.figure(figsize=(10, 4))
librosa.display.specshow(librosa.power_to_db(spectrogram, ref=np.max), y_axis='mel', fmax=8000, x_axis='time')
plt.colorbar(format='%+2.0f dB')
plt.title('Спектрограмма')
plt.show()

В данном примере аудиофайл с именем «audio.wav» загружается с помощью функции librosa.load(). Затем аудио разбивается на окна с указанным размером и шагом, применяется преобразование Фурье для каждого окна и полученные спектральные данные отображаются в виде спектрограммы с помощью функции librosa.display.specshow(). Дополнительные параметры позволяют настроить визуализацию спектрограммы, такие как диапазон частот, цветовая схема и название графика.

Таким образом, построение спектрограммы на Python с использованием библиотеки librosa является простым и эффективным способом визуализации частотного содержания аудиозаписей.

Примеры спектрограммы и их применение

Применение спектрограммы может быть очень широким. Рассмотрим несколько примеров:

Музыкальный анализ и обработка звука:

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

Речевой анализ:

Спектрограмма широко используется в обработке и анализе речи. Она позволяет распознавать и классифицировать речевые сигналы, а также выявлять особенности произношения, интонации и другие характеристики речи.

Обнаружение аномалий и шумов:

Спектрограмма помогает обнаруживать аномалии и шумы в звуковых данных, например, в аудиозаписях или в сигналах речи. Это может быть полезно при анализе и мониторинге радиосвязи, видеонаблюдении или аудио-аналитике.

Медицинская диагностика:

В медицине спектрограмма помогает анализировать звуковые данные, полученные при обследовании пациентов. Например, это может быть анализ кардио- и пульсовой волны, дыхания, звуков, издаваемых органами и системами организма. Спектрограмма позволяет выявлять патологические изменения и отслеживать динамику в процессе лечения.

Анализ окружающей среды:

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

Все эти примеры демонстрируют широкий спектр применения спектрограммы. Благодаря этому инструменту можно получить ценную информацию о звуковых данных, что позволяет эффективно анализировать и обрабатывать звуковые сигналы в различных областях деятельности.

Код для построения спектрограммы на Python

Для построения спектрограммы на Python можно использовать популярную библиотеку matplotlib. Вот пример кода, который демонстрирует этот процесс:

import numpy as npimport matplotlib.pyplot as plt# Загрузка звукового файлаaudio_data, sample_rate = librosa.load('audio.wav')# Вычисление спектрограммыD = np.abs(librosa.stft(audio_data))**2S = librosa.feature.melspectrogram(S=D, sr=sample_rate)# Отображение спектрограммыplt.figure(figsize=(10, 4))librosa.display.specshow(librosa.power_to_db(S, ref=np.max), x_axis='time', y_axis='mel')plt.colorbar(format='%+2.0f dB')plt.title('Спектрограмма')plt.tight_layout()plt.show()

В этом примере мы импортируем необходимые библиотеки — numpy, matplotlib и librosa. Затем мы загружаем звуковой файл ‘audio.wav’ с помощью функции librosa.load(). Далее мы вычисляем спектрограмму с использованием функции librosa.stft() и сохраняем ее в переменной D. Затем мы преобразуем спектрограмму в мел-шкалу с помощью функции librosa.feature.melspectrogram().

Затем мы создаем график с помощью функции plt.figure() и отображаем спектрограмму с помощью функции librosa.display.specshow(). Мы также добавляем цветовую шкалу с помощью функции plt.colorbar() и задаем название графика с помощью функции plt.title(). Наконец, мы отображаем график с помощью функции plt.show().

Это пример простого кода для построения спектрограммы на Python с использованием библиотеки matplotlib. Вы можете настроить код, добавить дополнительные функции и параметры, чтобы получить желаемый результат.

Добавить комментарий

Вам также может понравиться