• Регистрация
cs19m033
cs19m033 0.00
н/д

Анализ аудиозаписей на наличие фонового шума сети

23.12.2020
Добрый день, уважаемые участники форума! В рамках исследования возникли сложности с анализом аудиозаписей посредством программы Matlab по причине отстутсвия опыта написания кода. Если коротко, то в эл...

Добрый день, уважаемые участники форума!

В рамках исследования возникли сложности с анализом аудиозаписей посредством программы Matlab по причине отстутсвия опыта написания кода.

Если коротко, то в электросети присутсвует шум с частотой примерно в 50 Гц.  Моя цель заключается в анализе аудиозапсией, сделанных с помощью диктофона компьютера, чтобы найти этот шум и сравнить спектральные анализы различных аудиозаписей.

 

Запланированные шаги:

1. загрузка файла в среду матлаб

2. применение фильтра частот, чтобы анализировать дипазон между 49 и 51 Гц.

3. Построение графика (спектрограммы "время , сек" и "частота, Гц") для каждой аудиозаписи.

4. Сравнение графиков (в идеале бы тоже сделать это в матлабе, но это не самый важный шаг).

 

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

С какими пунктами хотелось бы получить помощь:

- реализации фильтра чатсот

- вывод спектрограммы с другими значениями оси координат

 

Ниже пример исходного кода:

 

[x, fs]= audioread('iMac.wav')

x = x(:,1);

N = length(x);
t = (0:N-1)/fs;
N/fs

%plot domain signal
plot(t, x)
grid on
set(gca, 'FontName', 'Time New Roman', 'FontSize', 12)
xlabel('Time (s)')
ylabel('Ampl')
title('Signal in time domain')

%stats info
maxValue = max(x)
minValue = min(x)
meanValue = mean(x)
stdValue = std(x)

spectrogram(x, 1024,512,1024,fs,'yaxis')
title ('Spectrogram 1')

specgram(x,512,fs, kaiser(256,5),220)
title('Spectrogram 2')

%Linear Chirp
spectrogram(x,128,125,128,fs,'yaxis')
title('Linear Chirp')

[~,f,t,p] = spectrogram(x,100,80,100,10e3);
[fridge,~,lr] = tfridge(p,f);
hold on
plot3(t,fridge,abs(p(lr)),'LineWidth',4)
hold off

Буду рад выслушать Ваши комментарии и предложения по доработке. Призывы лучше гуглить или прочитать несколько книжек за 2 дня тоже приветствуются ;)

Теги

    23.12.2020

    Комментарии

    • aBoomest
      aBoomest+942.89
      23.12.2020 19:48

      Если коротко, то в электросети присутсвует шум с частотой примерно в 50 Гц.

      50 Гц сети это полезный сигнал, а не шум.

      2. Требования к фильтру есть? Нет. Вам нужно понять какой фильтр вам нужен. Можно хотябы запустить FilterDesign tool и там сразу будет картинка и параметры: в духе частоты среза, подавление и т.п. Вот с этим вам придется сперва определиться. И сразу надо сказать чтосделать фильтр "выделяющий только 49-51 Гц" - невозможно. Поэтому и вырабатываются требования.
      3. Вот тут вопрос почему именно спектрограмма, это какое-то задание или что?
      4. А вот тут еще интереснее, что значит "сравнение"? Сравнение это больше или равно, меньше или равно. А бывает сравнение и анализ творчества поэтов XIX века. Одно элементарная операция, а второе - научная работа. Что же вы подразумеваете под "сравнением"? Критерии?

      вывод спектрограммы с другими значениями оси координат

      Не совсем ясно о чем это? Какие координаты вы хотите?

      • cs19m033
        cs19m0330.00
        23.12.2020 22:52

        Благодарю за интерес к моей проблеме и столько скорый ответ! Думаю, Вы правы - мне определенно стоит поработать над терминологией.

        Это что-то вроде самостоятельной (курсовой рабты) для магистратуры. Суть заключается в анализе аудиозаписей, сделанных устройствами, питающимися от батарей (то есть к сети они не будут подключаться). Если они улавливают фон сети (то что я изначально нахывал шумом сети), то его нужно идентифицировать и сравнить на каждой из сделанных аудиозаписей. Для сравннеия требуется просто вывести несколько графиков на один (пример будет представлен ниже).

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

        "If you take a closer look at our Fig. 1(b), you can see we have restricted the displayed frequency range to a very narrow range of 59--61 Hz, while the spectrogram you showed went all the way up to 25 kHz, which is not needed. 


        You may downsample your recording to 1 kHz using Audacity or Matlab's built-in functions (make sure a proper anti-aliasing filter is applied before downsampling), and then play with the spectrogram() function. If you want smoother transitions along the frequency axis, try to increase the nfft parameter. I hope this explanation helps."

         


        1. им удалось сократить отображаемый частотный диапазон с 59 до 61 Гц. В моем случае это должно быть 49 - 51.

        2. на какие параметры фильтра сглаживания мне стоит обратить внимание? Как я понял, мне нужно снизить частоту дискретизации до 1 кГц.

        3. Под Спектрограммой я понимаю график, который мне покажет, как сигнал в рамках 49 - 51 Гц изменяется во времени. Частота должна быть в Гц, время - в секундах (это я и имел ввиду под параметры осей координат). Такие графики от каждой аудиозаписи я буду сравнивать визуально друг с другом, чтобы убедиться, что они похожи или даже идентичны.

        Вот примерно так выглядело это в той нучной работе (см. во вложении).

        • aBoomest
          aBoomest+942.89
          24.12.2020 05:44

          Это что-то вроде самостоятельной (курсовой рабты) для магистратуры. Суть заключается в анализе аудиозаписей, сделанных устройствами, питающимися от батарей (то есть к сети они не будут подключаться). Если они улавливают фон сети (то что я изначально нахывал шумом сети), то его нужно идентифицировать и сравнить на каждой из сделанных аудиозаписей. Для сравннеия требуется просто вывести несколько графиков на один (пример будет представлен ниже).

          Тогда все ясно.

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

          "If you take a closer look at our Fig. 1(b), you can see we have restricted the displayed frequency range to a very narrow range of 59--61 Hz, while the spectrogram you showed went all the way up to 25 kHz, which is not needed. 


          You may downsample your recording to 1 kHz using Audacity or Matlab's built-in functions (make sure a proper anti-aliasing filter is applied before downsampling), and then play with the spectrogram() function. If you want smoother transitions along the frequency axis, try to increase the nfft parameter. I hope this explanation helps."

          1. им удалось сократить отображаемый частотный диапазон с 59 до 61 Гц. В моем случае это должно быть 49 - 51.

          2. на какие параметры фильтра сглаживания мне стоит обратить внимание? Как я понял, мне нужно снизить частоту дискретизации до 1 кГц.

          Вобще мне кажется что down делать ни к чему, либо каких-то условий задачи не оговорено тут. Ширина спектра определяется длиной записи. Мне кажется достаточно будет поставить довольно простенький фильтр (учитывая картинки которые вы привели, т.к. на них и на глаз не плохо просматривается все, значит фильтр не требовательный).

          С down конечно тоже можно заморочиться, но будет сложнее. По этому вопросу на ютуб канале портала, автор (боюсь ошибиться) Марат Усс, тема - ЦОС, - там есть что-то вроде "многоскоростные системы" или "многоскоростные фильтры".

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

          3. Под Спектрограммой я понимаю график, который мне покажет, как сигнал в рамках 49 - 51 Гц изменяется во времени. Частота должна быть в Гц, время - в секундах (это я и имел ввиду под параметры осей координат). Такие графики от каждой аудиозаписи я буду сравнивать визуально друг с другом, чтобы убедиться, что они похожи или даже идентичны.

          Да, понятно. Спросил к тому, что по мне, информативно всегда число. А картинка "раскрашенная красками" - не очень. Спектры информативнее. Хотя по сути это одно и тоже и цвет тоже можно перевести в амплитуду и фазу (хотя не уверен).

          • cs19m033
            cs19m0330.00
            27.12.2020 15:35

            Я нашел в каком-то посте Ваш вопрос относительно фильтрации частот с шагом в 1 Гц, где Вы пытались отфильтровать сигнал в 50 Гц и отобразить его в виде синусиды. Могли бы мне подробнее рассказать, как Вам это удалось? Был это искусственно созданный сигнал? Могли бы мы организовать небольшой конф-колл в зуме или скайпе?

            • aBoomest
              aBoomest+942.89
              28.12.2020 06:14

              Ссылку пришлите где было про это написано. Скорее всего просто по амплитуе. Если амплитуда больше какого-то значение, оно остается без изменений в спектре. Если меньше, то зануляется. Затем по спектру восстанавливается (ifft) сигнал и он уже получается отфильтрованный.