Existe-t-il un algorithme pour trouver une fréquence sans DFT ni FFT?

34

Je cherchais dans le magasin d'applications Android un accordeur de guitare. J'ai trouvé une application tuner qui prétendait être plus rapide que les autres applications. Il prétendait pouvoir trouver la fréquence sans utiliser la DFT (j'aimerais avoir encore l'URL de cette spécification).

Je n'en ai jamais entendu parler. Pouvez-vous acquérir un signal audio et calculer la fréquence sans utiliser l'algorithme DFT ou FFT?

Slamice
la source

Réponses:

29

La FFT n’est en fait pas un excellent moyen de créer un accordeur. La FFT possède par nature une résolution de fréquence finie et il est difficile de détecter de très petites variations de fréquence sans allonger la fenêtre temporelle, ce qui la rend difficile à manier et lente.

De meilleures solutions peuvent être basées sur des boucles à verrouillage de phase , des boucles à verrouillage de retard , corrélation automatique, détection de passage par zéro et de suivi, de détection maximum ou minimum et de suivi et de combinaison certainement intelligente de ces méthodes.

Le pré-traitement aide toujours.

Hilmar
la source
5
La capacité d'une FFT à détecter de petites variations de fréquence n'est pas inhérente à sa longueur, mais dépend du rapport signal / bruit. Avec un bruit et des interférences suffisamment faibles, l'interpolation des résultats de FFT peut facilement produire une résolution de fréquence unique dans une sous-corbeille.
hotpaw2
Quelqu'un peut-il m'aider avec ceci: - stackoverflow.com/questions/42359344/…
dreamBegin 22/0217
12

Une FFT indique le ou les pics de fréquence du spectre (quantifiés par la taille de la corbeille FFT), ce qui diffère de la hauteur musicale. Il est possible que la fréquence de hauteur perçue soit complètement absente d'un spectre FFT.

Certains des accordeurs de guitare les plus simples utilisaient simplement un filtrage passe-bas ou passe-bande et mesuraient le temps entre les passages par zéro. La réciproque donne une estimation de fréquence.

L'autocorrélation est une autre méthode commune d'estimation de la hauteur tonale. et la corrélation glissante ou d'autres mesures d'auto-similarité comportent de nombreuses variations, telles que ASDF glissante (différence au carré), AMDF (différence moyenne), modèles de correspondance non linéaires, contrôle adaptatif uniquement pour une plage limitée de retards, interpolation de retard, fenêtrage et choix de la fenêtre adaptative, pondérations variées ou utilisation de la théorie de la décision pour choisir parmi plusieurs séquences d’historique de décalage potentielles, etc. Un problème avec la plupart des mesures d’auto-similarité est le choix de l’octave appropriée, puisqu’une sous-octave peut présenter presque la même similarité.

D'autres possibilités incluent l'utilisation de PLL, de démodulateurs en quadrature filtrés, de transformées de Hilbert filtrées, etc.

Cependant, notez que certaines méthodes de filtrage et de démodulation DSP sont quasiment équivalentes à l’utilisation de la méthode 1-bin d’une TFD fenêtrée, ce qui peut ne pas correspondre à la réponse à votre question.

hotpaw2
la source
8

La détection de la hauteur peut être effectuée de nombreuses manières, diverses et curieuses. Une façon de le faire est d'utiliser l' autocorrélation . Cet article donne un exemple de la façon dont il peut être utilisé. L'autocorrélation peut être ridiculement simple en utilisant un corrélateur 1 bit (impossible de trouver un papier décent à ce sujet pour une raison quelconque). Donc théoriquement, le pitch peut être détecté plus rapidement qu'avec FFT, mais je doute qu'il soit beaucoup plus précis sans un prétraitement vraiment intelligent.

Phonon
la source
Je pense que le lien est brisé? ...
Spacey
Non, tout fonctionne. Je viens de vérifier.
Phonon
7

Jetez également un coup d'œil à la transformation de Hilbert-Huang (HHT) relativement nouvelle définie par algorithme . Il peut gérer des signaux non-stationnaires-non linéaires qui peuvent être pertinents pour votre application.

Nordlöw
la source
C’était tout à fait un joyau lorsque je l’ai trouvé, bien que cela ne vous donne pas la décomposition de Fourier, mais plutôt la décomposition instantanée de la fréquence.
Spacey
La plupart des signaux de la vie réelle sont quelque peu non stationnaires, c'est-à-dire qu'ils varient légèrement en amplitude et en fréquence. Le HHT est moins sensible à ces variations et décompose ainsi ces signaux de manière plus naturelle, les parties étant plus étroitement liées aux phénomènes physiques sous-jacents.
Nordlöw
3

Si vous savez exactement quelle case de fréquence vous recherchez dans une DFT / FFT, vous pouvez utiliser l'algorithme de Goertzel pour obtenir la valeur de cette case uniquement.

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

Ashutosh
la source
1
Ce n'est pas pour trouver une fréquence, cependant.
endolith
2

Vous pouvez réellement calculer la fréquence d'un signal en utilisant son pseudo-spectre, qui examine les vecteurs propres de sa matrice d'autocorrélation. Il décompose essentiellement votre signal en sous-espaces de bruit et de signal. De là, vous pouvez trouver son spectre. (Vous pouvez également le limiter et lui donner une plage de fréquences à vérifier). Il est également très insensible au bruit. Bien sûr, il s’agit d’une méthode paramétrique et non d’une méthode non paramétrique comme la TFD.

Spacey
la source
Apparemment, cela utilise la FFT cependant? mathworks.com/help/toolbox/signal/ref/peig.html
endolithe
1
@endolith Vous pouvez le calculer sans aucune FFT impliquée. À partir de la matrice de corrélation, vous obtenez les vecteurs propres, puis le sous-espace de bruit. Ensuite, vous pouvez construire votre propre vecteur de fréquence sur lequel vous projeter, donc aucune FFT utilisée.
Spacey
1

Tout dépend de la plate-forme que vous souhaitez traiter. Si vous avez besoin d'un circuit simple, je vous suggère d'exploiter le signal avec gain, de le transformer en onde carrée et de mesurer la période avec un microcontrôleur à l'aide du minuteur.

Mais si vous voulez vous lancer dans le traitement du signal, découvrez la méthode MUSIC:

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

J'espère que ça aide

OS
la source
0

Il existe de nombreuses méthodes d'estimation de la hauteur sans utiliser la DFT / FFT. Certaines d'entre elles, y compris la méthode MUSIC, sont répertoriées dans le présent document: https://ieeexplore.ieee.org/abstract/document/6521410/ Les résultats de la simulation dans ce document indiquent que lorsque la fréquence fondamentale est très basse, la méthode NLS exacte surpasse celle des autres.

Bizhou Ge
la source