Подтвердить что ты не робот

Можете ли вы программно обнаруживать белый шум?

У Dell Streak было обнаружено, что у FM-радио есть очень грубое управление. "Сканирование" по умолчанию недоступно, поэтому мой вопрос заключается в том, кто-нибудь знает, как с помощью Java на Android можно "прослушивать" FM-радио, когда мы повторяем частотный диапазон, обнаруживающий белый шум (или хороший сигнал), так что действовать так же, как обычная функция поиска радио?

4b9b3361

Ответ 1

Я сделал некоторую практическую работу в этой конкретной области, я бы порекомендовал (если у вас есть немного времени для этого), попробуйте немного экспериментировать, прежде чем прибегать к fft'ing. Поток pcm можно интерпретировать очень сложным и тонким (в соответствии с фильтрацией высокого качества и повторной дискретизацией), но также может быть практически обработан для многих целей как путь к линии wiggly.

Белый шум - это непредсказуемое встряхивание линии, которая никогда не бывает достаточно непрерывной по интенсивности (среднеквадратичное, абсолютное среднее значение). Акустический контент - это повторяющееся зависание и случайные сюрпризы (прыжки, прыжки):]

Нешумное содержимое сигнала может быть оценено путем выполнения быстрых вычислений в рабочем окне потока pcm.

Например, шум будет сильно иметь более высокое значение для абсолютного интеграла его производной, чем нешум. Я думаю, что это академический способ сказать это:

loop(n+1 to n.length)
{ sumd0+= abs(pcm[n]); 
  sumd1+= abs(pcm[n]-pcm[n-1]); 
}

wNoiseRatio = ?0.8; //quite easily discovered, bit tricky to calculate.

if((sumd1/sumd0)<wNoiseRatio)
{ /*not like noise*/ }

Кроме того, абсолютное среднее значение в диапазоне от ~ 16 до ~ 30 выборок белого шума будет меняться меньше, чем белый шум, чем акустический сигнал:

loop(n+24 to n.length-16)
{ runAbsAve1 += abs(pcm[n]) - abs(pcm[n-24]); }

loop(n+24+16 to n.length)
{ runAbsAve2 += abs(pcm[n]) - abs(pcm[n-24]); }

unusualDif= 5; //a factor. tighter values for longer measures.

if(abs(runAbsAve1-runAbsAve2)>(runAbsAve1+runAbsAve2)/(2*unusualDif))
{ /*not like noise*/ }

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

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

Я думаю, что это простые простые сигнатурные сигналы. Я уверен, что есть еще.. Извините, что не более конкретный, это нечеткие и неточные рекомендации, но так же выполняются простые тесты на выходе fft. Для лучшего объяснения и большего количества идей, возможно, проверьте статистические и стохастические (?) Измерения энтропии и случайности в википедии и т.д.

Ответ 2

Используйте быстрое преобразование Фурье.

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

Здесь - это библиотека, которая поддерживает FFT. Кроме того, здесь - это блог с исходным кодом, если вы хотите узнать, что делает FFT.

Ответ 3

Если у вас нет доступных инструментов FFT, просто дикое предложение:
Попробуйте сжать несколько миллисекунд аудио.

Характерной особенностью шума является то, что он сжимает намного меньше, чем чистый сигнал.

Ответ 4

Насколько я знаю, нет API или даже драйверов для FM-радио в Android SDK, и если Dell не выпустит один из них, у вас будет катиться самостоятельно. На самом деле это даже хуже. Все (?) Новые чипсеты имеют FM-радио, но не все телефоны имеет приложение FM-радио.

У старой Windows Mobile была проблема .

Ответ 5

Для обнаружения белого шума вам необходимо сделать FFT и увидеть, что он имеет более или менее непрерывный спектр. Но запись с FM может быть проблемой.

Ответ 6

Только фильтрация высоких частот даст хорошую идею и иногда используется для шумоподавления на радиостанциях fm.

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

Ответ 7

Есть ли у вас подписка на библиотеку IEEE Xplore? Есть бесчисленные статьи (один, выбранный наугад) по этой теме.

Очень упрощенным методом было бы наблюдать "плоскостность" спектральной плотности мощности . Это можно сделать с помощью быстрого преобразования Фурье сигнала во временной области и найти стандартное отклонение от спектральной плотности. Если он ниже определенного порога, у вас есть белый шум.

Ответ 8

Основной вопрос: какой тип сигнала у вас есть?

Я уверен, у вас нет прямого доступа к аналоговому EM-сигналу напрямую. Поэтому бесполезно использовать БПФ на этом сигнале. Вы также не можете попытаться построить цикл поэтапного блокирования, который работает на вашем стандартном старом радио тюнере ( "Сканирование" в вашем случае).

Ваш единственный вариант - это выбрать одну частоту и послушать ее (и попытаться определить, когда это звучит с помощью FFT по звуку). У вас может быть только доступ к сигналу FFTed.

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


В любом случае, вот что я хотел бы сделать с этой стратегией:

Двойная интеграция autocorrelation спектральная плотность на долю секунды аудио. И это для каждой частоты.

Затем найдите FM-частоту, где это число максимально.

Небольшое объяснение здесь:

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

Также будьте осторожны, чтобы нормализовать интегралы: громкий сигнал белого шума не должен иметь более высокий балл, чем чистый, но низкий звуковой сигнал.

Ответ 9

Несколько человек упомянули FFT, который вы захотите сделать, но затем обнаружите белый шум, который вам нужен, чтобы убедиться, что величина относительно постоянна в диапазоне звуковых частот. Вы хотите посмотреть только на величины, вы можете выбросить фазы. Вы можете вычислить среднее и стандартное отклонение для величин в O (N) времени. Для белого шума стандартное отклонение должно быть относительно небольшой частью среднего. Если я правильно помню свою статистику, это должно быть примерно (1/sqrt (N)) среднего.