La transformée de Fourier rapide (FFT) d'entrée et de sortie d'analyser la fréquence des fichiers audio en Java?
Je dois utiliser la FFT à analyser la fréquence d'un fichier audio. Mais je ne sais pas ce que l'entrée et la sortie est.
Dois-je utiliser 1-dimension, en 2 dimensions ou 3 dimensions tableau si je veux dessiner le spectre du fichier audio? Et quelqu'un peut-il me suggérer bibliothèque FFT sur J2ME?
OriginalL'auteur thongcaoloi | 2011-07-08
Vous devez vous connecter pour publier un commentaire.
@thongcaoloi,
La simple réponse quant à la dimension de vos données d'entrée est: vous avez besoin des données 1D. Maintenant, je vais vous expliquer ce que cela signifie.
Parce que vous voulez analyser des données audio, votre contribution à la transformée de Fourier discrète (DFT ou FFT), est de dimension 1 de la séquence de nombres réels, qui représente l'évolution de la tension du signal audio fil du temps, et votre fichier audio est une représentation numérique de l'évolution de la tension au fil du temps.
Votre fichier audio a été produit par l'échantillonnage de la tension d'un signal sonore continu à un taux d'échantillonnage fixe (aussi connu comme la fréquence d'échantillonnage), généralement 44,1 KHz pour les CD audio de qualité.
Mais votre fichier de données pourrait avoir été échantillonnées à une fréquence beaucoup plus faible, donc essayez de trouver la fréquence d'échantillonnage de vos données avant de vous faire une FFT sur les données recueillies.
Alors maintenant, vous devez extraire les échantillons individuels à partir de votre fichier audio. Si votre fichier est en stéréo, il sera équipé de deux des exemples de séquences, l'une pour le canal de droite et un pour le canal gauche. Si le fichier est en mono, il n'aura qu'un seul exemple de séquence.
Si votre fichier est en stéréo, ou de toute autre multi-canal audio format 5.1 ou 7.1, vous pouvez FFT chaque canal séparément, ou vous pouvez combiner n'importe quel nombre de canaux utilisant une tension de plus. C'est à vous, et dépend de ce que vous essayez de faire avec votre FFT résultats.
La sortie de la DFT ou FFT est une séquence de nombres complexes. Chaque nombre complexe est une paire composée d'un réel et un imaginaire-partie, généralement présenté comme une paire de (re,im).
Si vous voulez représenter la densité spectrale de puissance de votre fichier audio, qui est ce que la plupart des gens veulent de la FFT, vous aurez graphique 20*log10( sqrt( re^2 + im^2 ) ), à l'aide de la première N/2 nombres complexes de la FFT de sortie, où N est le nombre d'échantillons d'entrée à la FFT.
Vous pouvez essayer de construire votre propre analyseur de spectre logiciel, mais je vous suggère d'utiliser quelque chose qui est déjà construit et testé.
Ces deux analyseurs de spectre FFT donner des résultats instantanément, et ont intégré dans IFFT de synthèse, ce qui signifie que vous pouvez transformée de Fourier inverse de la fréquence du domaine spectral de données pour reconstruire le signal original dans le domaine temporel.
http://www.mathworks.com/help/techdoc/ref/fft.html
http://www.sooeet.com/math/fft.php
Il y a beaucoup plus à ce sujet et à l'objet de traitement du signal numérique en général, mais cette brève introduction, devrait vous obtenir a commencé.
OriginalL'auteur Ernest Barkowski
Du point de vue théorique, une FFT cartes complexes[N] => complexe[N]. Toutefois, si vos données est simplement un fichier audio, votre entrée sera tout simplement des nombres complexes avec aucune composante imaginaire. Ainsi, vous aurez une carte réelle[N] =>complexe[N]. Cependant, avec un peu de mathématiques, vous voyez que le format de la sortie sera toujours de sortie[i]==complex_conjugate(sortie[N-i]). Donc vous avez vraiment besoin de regarder le premier N/2+1 échantillons. En outre, le complexe de la sortie de la FFT vous donne aussi des informations sur la phase et l'amplitude. Si tout ce qui vous intéresse est comment beaucoup d'une certaine fréquence est de l'audio, vous avez seulement besoin de regarder l'ampleur, ce qui peut être calculé comme racine_carrée(donnée imaginaire^2+real^2), pour chaque élément de la sortie.
Bien sûr, vous aurez besoin d'examiner la documentation, quelle que soit la bibliothèque que vous utilisez pour comprendre quel élément du tableau correspond à la partie réelle de la Nième complexe de sortie, et de même pour trouver la partie imaginaire de la Nième complexe de sortie.
OriginalL'auteur Jeremy Salwen
Que je me souviens de l'algorithme FFT n'est pas complexe, j'ai utilisé pour écrire une Classe de calcul de la FFT pour ma thèse. À cette époque, l'entrée est un tableau 1D de valeurs qui sont lus à partir de la *.Les fichiers WAV. Mais avant de la FFT, il y avait une partie du filtrage et de la normalisation effectuée.
oui, le résultat est également un tableau 1D.
Je dois prendre un coup d'oeil à ma sauvegarde sur le disque dur si j'ai encore le code, c'était il y a longtemps. S'il vous plaît envoyez-moi un e-mail de rappel.
OriginalL'auteur