Open AnatolyAdamovich opened 1 week ago
Эффект Доплера — это явление, при котором частота и длина волны звука (или света) изменяются, когда источник сигнала и наблюдатель движутся относительно друг друга. Если источник и наблюдатель сближаются, частота сигнала увеличивается, а если удаляются — частота снижается. Например, звук сирены становится более высоким при приближении и снижается при удалении.
В аудиофайлах эффект Доплера проявляется как изменение высоты тона звука, когда источник перемещается. Это особенно заметно в звуках машин, сирен, движущихся объектов и других сигналов, где есть изменение частоты по мере приближения или удаления от микрофона.
Чтобы бороться с эффектом Доплера или шумами, мешающими анализу звука, можно использовать фильтрацию и нормализацию аудиосигналов.
Фильтрация высоких и низких частот: Можно использовать библиотеки, такие как scipy
и librosa
, для фильтрации частот выше и ниже нужного диапазона. Например, Butterworth
или Chebyshev
фильтры помогают удалить нежелательные частоты.
from scipy.signal import butter, lfilter
def butter_bandpass(lowcut, highcut, fs, order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='band')
return b, a
def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
y = lfilter(b, a, data)
return y
Удаление шумов методом спектрального вычитания: С помощью библиотеки librosa
можно получить спектр звука, выделить основную частоту, а затем подавить нежелательные шумы.
import librosa
import numpy as np
def noise_reduction(y, sr):
# Преобразование в частотную область
S_full, phase = librosa.magphase(librosa.stft(y))
# Оценка шумового профиля
S_noise = np.median(S_full, axis=1)
# Устранение шумов
S_denoised = np.maximum(S_full - S_noise[:, np.newaxis], 0)
return librosa.istft(S_denoised * phase)
Сглаживание эффектов Доплера: Если эффекты Доплера связаны с движением источника звука, можно применить техники временной нормализации, такие как Dynamic Time Warping (DTW), чтобы "синхронизировать" частоты.
Анализ качества данных перед обработкой: Выделение и анализ шумов перед основной обработкой звука может значительно сократить фрустрацию. Например, с помощью librosa.display.waveshow
можно визуально анализировать шумы.
Пакетное предобучение и аугментация данных: Для устойчивой работы алгоритмов можно создать обучающие наборы, включающие аугментированные шумы, чтобы алгоритмы были менее подвержены влиянию реального шума.
Посмотреть: