Я хочу надежно преобразовать как записанный звук (через микрофон), так и обработанный звук (WAV-файл) в те же дискретизированные представления в Python, используя specgram.Нормальный звуковой сигнал
Мой процесс выглядит следующим образом:
- получить необработанные образцы (считываются из файла или потока от микрофона)
- выполнить некоторую нормализацию (???)
- выполнять БПФ с оконным для создания спектрограммы (черчения частоты в зависимости от времени с амплитудой пиков)
- дискретизации пики в аудио затем запоминает
в основном, на время, которое я получаю до последнего процесса дискретизации, я хочу как можно более надежно достичь того же значения в пространстве freq/time/amplitude для той же песни.
Моя проблема заключается в том, как я могу объяснить, что громкость (т. Е. Амплитуды выборок) различаются в записанном и WAV-read аудио?
Мои варианты для нормализации (возможно?):
- Разделить все образцы в окне на среднем до FFT
- Detrend все образцы в окне перед FFT
- Разделить все образцы в окне по максимальной амплитуде выборки значение (чувствительны к шуму и выбросам) перед БПФ
- Divide все амплитуды в спектрограмме средней
Как мне решить эту проблему? У меня почти нет знаний или опыта обработки сигналов.
Поскольку шум, вероятно, никогда не будет иметь самых высоких амплитуд, вы можете: 1) разделить каждый образец на соответствующий максимальный уровень до БПФ; 2), затем умножить на целевую общую амплитуду также до БПФ; 3) выполнить БПФ в нормированном образце –
Я не уверен, что я понимаю вопрос, но если все, о чем вы заботитесь, это пиковые местоположения в спектрограмме, нет необходимости нормализовать амплитуду. –
@SaulloCastro: что такое «целевая общая амплитуда»? – lollercoaster