Question

Je veux déterminer le volume d'un signal audio.

J'ai trouvé deux options:

  1. Calculer la moyenne des racines au carré de l'amplitude
  2. Trouvez l'amplitude maximale

Y a-t-il des avantages à utiliser # 1 ou # 2?

Voici ce que j'essaie de faire: je veux que mon Android analyse l'audio du microphone. Je veux que l'appareil détecte un bruit fort. L'entrée est une courte [].

Était-ce utile?

La solution

Si vous utilisez l'amplitude maximale (2), votre niveau de volume serait déterminé par un seul échantillon (que vous pourriez même ne pas pouvoir entendre). Lors du calcul d'une valeur qui est en corrélation avec votre impression de l'intensité du son, comme le niveau de pression sonore ou le niveau de puissance du son, vous devez utiliser le RMS (1).

Parce que votre oreille n'est pas tout aussi sensible à toutes les fréquences, un meilleur corrélation de votre perception peut être obtenu en utilisant un Un poids sur le signal. Diviser (filtre) le signal dans les bandes d'octave, calculer le RMS pour chaque bande et appliquer le poids A.

Autres conseils

Si vous souhaitez vérifier le niveau de volume, calculez simplement sa valeur de base de données (je suppose que le signal est normalisé IE 1 == Niveau maximum):

level[n] = - 20 x log(1/signal[n]); 

Cependant, la détection du bruit audio n'est pas une tâche triviale. La technique la plus courante et la plus simple consiste à utiliser un algorithme appelé Noisegate qui compare essentiellement le niveau de signal avec une certaine valeur de seuil de base de données - si le niveau de signal est au-dessus du seuil, la sortie est à zéro. Mais c'est inutilisable dans la pratique; Il doit également y avoir des temps d'attaque et de libération pour un seuil lisse, sinon cela affecterait également un véritable signal (musique, parole) et produirait une sorte de coupure.

Vérifiez Google, cela vous donnera beaucoup de ressources sur l'algorithme de bruit et les techniques d'élimination du bruit:

http://en.wikipedia.org/wiki/noise_gate

http://www.developer.com/java/other/article.php/3599661/adaptive-noise-cancellation-using-java.htm

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top