29 votes

Pouvez-vous détecter par programme le bruit blanc?

Le Dell Streak a été découvert pour avoir une radio FM qui a des commandes très grossières. La `` numérisation '' n'est pas disponible par défaut, donc ma question est: est-ce que quelqu'un sait comment, en utilisant Java sur Android, on pourrait `` écouter '' la radio FM pendant que nous parcourons la gamme de fréquences en détectant le bruit blanc (ou un bon signal) afin agir comme une fonction de recherche normale d'une radio?

15voto

Erick Robertson Points 12958

L'utilisation d'une transformée de Fourier Rapide.

C'est ce que vous pouvez utiliser une transformée de Fourier Rapide pour. Il analyse le signal et détermine la force du signal à des fréquences différentes. Si il y a un pic dans la FFT la courbe du tout, il doit indiquer que le signal n'est pas simplement un bruit blanc.

Ici, c'est une bibliothèque qui prend en charge FFT. Aussi, ici est un blog avec le code source dans le cas où vous voulez vous renseigner sur ce que la FFT ne.

14voto

strainer Points 506

J'ai fait quelques travaux pratiques sur ce domaine précis, je vous recommande (si vous avez un peu de temps pour cela) pour essayez juste d'un peu d'expérimentation avant de recourir à la fft pratiquent. Le pcm flux peut être interprété de manière très complexely et subtilement (par l'effet de haute qualité de filtrage et de rééchantillonnage), mais peut également être pratiquement traitées à des fins diverses comme le chemin d'une ligne ondulée.

Le bruit blanc est imprévisible secouant de la ligne, ce qui n'est jamais-le-moins tout à fait en continu de l'intensité (rms, absolu..) Acoustique contenu est récurrent se tortille et occasionnelles et des surprises (des sauts, des sauts) :]

Non le bruit que le contenu d'un signal peut être estimée en effectuant des calculs rapides sur un fonctionnement de la fenêtre de la pcm flux de données.

Par exemple, le bruit sera fortement tendance à avoir une plus grande valeur pour le absolue de l'intégrale de sa dérivée, que les non-bruit. Je pense que c'est l'universitaire façon de dire ceci:

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*/ }

Aussi, la course absolue moyenne de plus de ~16 ~30 échantillons de bruit blanc aura tendance à varier de moins, plus de bruit blanc de signal acoustique:

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*/ }

Cela concerne la façon dont le bruit blanc a tendance à être non-sporadique assez grand la durée moyenne de son entropie. Acoustique contenu est sporadique (localisée de puissance) et récurrents (répétitif de puissance). Le simple test réagit à l'acoustique de contenu avec les fréquences basses et pourrait être noyé par le contenu à haute fréquence. Il y a de simple à appliquer les filtres passe-bas qui pourrait aider (et sans doute d'autres adaptations).

Aussi, la racine de la moyenne des carrés peut être divisé par la moyenne de la somme absolue de fournir un autre rapport qui devrait être particulier à un bruit blanc, mais je ne peux pas comprendre ce qu'il est maintenant. Le ratio diffère pour les signaux produits dérivés.

Je pense comme simple formule signatures de bruit. Je suis sûr qu'il y a de plus.. Désolé de pas être plus précis, elle est floue et imprécise des conseils, mais c'est l'exécution de tests simples sur la sortie d'une fft. Pour une meilleure explication et d'autres idées peut-être, découvrez la statistique et stochastique(?) les mesures de l'entropie et de l'aléatoire sur wikipédia, etc.

7voto

Nicolas Raoul Points 13912

Si vous n'avez pas d'outils FFT disponibles, juste une suggestion sauvage:
Essayez de compresser quelques millisecondes d'audio.

Une caractéristique typique du bruit est qu'il compresse beaucoup moins qu'un signal clair.

5voto

Jonas Elfström Points 16453

Autant que je sache, il n'y a pas d'API ou même des pilotes pour la Radio FM dans le SDK Android et à moins que Dell libère l'un de vous devra rouler votre propre. C'est même pire que ça. Tous(?) les nouveaux chipsets a la Radio FM, mais pas tous les téléphones dispose d'une Radio FM l'application.

Le vieux Windows Mobile avait le même problème.

3voto

BarsMonster Points 3484

Pour la détection du bruit blanc, vous devez faire FFT et voir qu'il a un spectre plus ou moins continu. Mais l'enregistrement à partir de la FM pourrait être un problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X