Pouvez-vous augmenter la résolution de fréquence de la FFT sans augmenter la taille de la fenêtre?

12

Je voudrais utiliser STFT pour l'analyse multipitch. Je me rends compte que la détection des partiels existant dans le signal n'est qu'un début. J'ai quand même un problème avec ça.

Disons que j'ai un signal échantillonné avec une fréquence «CD» 44100Hz. Avec une fenêtre d' 1024échantillons, j'obtiens une résolution de la fréquence bin 22500Hz/512=43Hz. Cela suffit seulement pour discerner des notes de piano hautes comme: C5 = 523.251Hzet C#5 = 554.365.

Je pensais que 1024c'était une assez grande fenêtre. Mais peut-être que ce n'est pas le cas et que des fenêtres normalement plus grandes sont utilisées pour détecter les partiels?

La résolution en fréquence peut-elle être augmentée avec une autre méthode que l'augmentation de la taille de la fenêtre, ce qui aggrave la résolution temporelle? J'ai pensé à deux méthodes:

Méthode 1:

  1. Divisez le signal en bandes de fréquences avec des filtres passe-bande (par exemple 0-11.25Hzet 11.25-22.5Hz).
  2. Sous-échantillonner les bandes plus hautes pour que les hautes fréquences d'origine soient désormais des basses fréquences (faites-le pour la deuxième bande 11.25-22.5Hz -> 0Hz-22.5Hz) - pas sûr que ce soit possible.
  3. Concatinez les jeux de bacs résultants avec des étiquettes ajustées

Méthode 2:

  1. Utilisez une série de filtres passe-bas avec une limite croissante.
  2. Effectuez la FFT sur des gammes de fréquences croissantes.
  3. Pour chaque fréquence, utilisez la meilleure résolution possible (bacs de la première FFT dans laquelle cette fréquence a été incluse).
  4. Cela permettra aux basses fréquences d'avoir une meilleure résolution mais je pense que c'est correct car pour des notes plus élevées, la différence de fréquence est plus grande.

Je serai reconnaissant de toute remarque sur cette question.

J'ai également lu ici: Comment la taille de la fenêtre, la fréquence d'échantillonnage influencent-elles l'estimation du pitch FFT? sur la méthode pour améliorer les résultats de la cueillette des pics. Je pense va essayer de l'utiliser.

nuoritoveri
la source
Si vous savez qu'il n'y a qu'une seule composante sinusoïdale, vous pouvez ajuster une parabole aux cases voisines du pic et interpoler pour trouver le "vrai" pic. Je ne sais pas comment cela se compare à la méthode de phase décrite par @pichenettes.
endolith

Réponses:

9

Si vous insistez vraiment sur l'utilisation de la FFT (plutôt que sur des méthodes paramétriques, qui ne souffriraient pas de compromis temps / fréquence), vous pouvez simuler une bien meilleure résolution en utilisant les informations de phase pour récupérer la fréquence instantanée pour chaque bac FFT. Les partiels peuvent ensuite être détectés en recherchant des plateaux dans la fonction donnant une fréquence instantanée en fonction de l'indice FFT bin. L'implémentation courante de cette technique telle que décrite dans cet article vous "coûtera" un STFT supplémentaire (la fréquence instantanée est récupérée par des opérations sur le STFT du signal et le STFT de la dérivée du signal).

Voir par exemple la fonction ifgram dans cette implémentation Matlab de modélisation sinusoïdale de signaux audio.

Notez que cela n'aidera pas à résoudre deux partiels tombant dans des bacs FFT adjacents. Il fournira simplement une estimation de fréquence beaucoup plus précise que la simple conversion en fréquence de l'indice FFT bin d'un pic spectral.

pichenettes
la source
Qu'entendez-vous par méthodes paramétriques? Aussi, est-ce que vous avez mentionné il y a quelques mois un algorithme qui ressemblait à de la FFT mais qui avait une échelle d'octave de fréquence plutôt qu'une échelle de fréquence uniforme?
Jim Clay
Les méthodes paramétriques sont des méthodes d'analyse statistique du signal qui supposent que le signal est généré par un processus spécifique décrit par un ensemble de paramètres, et qui calcule une estimation des moindres carrés de ces paramètres à partir des observations. Par exemple, si vous supposez que le signal est une somme de N sinusoïdes amortis exponentiellement + bruit, des algorithmes comme ESPRIT ou MUSIC peuvent être utilisés pour déduire les N amplitudes et pulsations complexes.
pichenettes du
2
Vous faites probablement référence à la transformation constante-Q. La mise en garde est qu'elle n'est nulle part aussi efficace en termes de calcul que la FFT; et que l'inversion de cette transformation est un problème d'optimisation non trivial.
pichenettes du
@JimClay: Peut - être que cela devrait être migré ici?
endolith
1
Dire que les méthodes paramétriques ne souffrent pas de compromis temps / fréquence est trompeur. À leur base, les méthodes paramétriques modélisent le système et utilisent le modèle pour extraire des données significatives. Mais les performances sont aussi bonnes que le modèle. En supposant que le "meilleur" modèle soit choisi (nombre de pôles ou nombre de vecteurs propres de l'espace du signal), les performances de ces méthodes restent très sensibles à la longueur des enregistrements de données.
Bryan
2

Le terme «résolution» a plusieurs sens. En général, vous ne pouvez pas augmenter votre capacité à séparer (ou "résoudre") les pics spectraux étroitement espacés par interpolation en utilisant la même longueur de fenêtre de données. Mais vous pouvez estimer la fréquence des pics spectraux stationnaires isolés qui sont bien au-dessus du plancher de bruit avec une résolution plus fine (parfois beaucoup plus fine) que l'espacement des cases FFT par diverses méthodes d'interpolation.

Les méthodes d'interpolation de résultats FFT courantes pour des estimations de résolution plus élevées comprennent l'interpolation parabolique, l'interpolation Sinc, le remplissage nul des données dans une FFT beaucoup plus longue et les méthodes de vocodeur de phase utilisant des fenêtres se chevauchant (légèrement) décalées.

Une FFT est essentiellement une banque de filtres passe-bande, chacun avec une transition très abrupte mais des tonnes d'ondulation de bande d'arrêt pour une longueur de noyau de filtre FIR donnée. En tant que tels, ces filtres n'ont pas une grande réjection de bruit de bruit non périodique dans la fenêtre. Si vous pensez que ce type d'interférence est un problème, une FFT fenêtrée ou un banc de filtres personnalisé peut mieux fonctionner.

hotpaw2
la source
1

Après de nouvelles recherches invoquées par Jim Clay, une question et une réponse de pichenettes dans les commentaires, j'ai trouvé que mon Method2 est réinventé B -transform transformée décrite par exemple par Kashima et Mont-Reynaud (je ne suis pas sûr de pouvoir créer un lien vers cet article, le fichier semble déchiré ) .

Leur approche est algorithmiquement plus efficace car ils partent de la plus grande plage de fréquences et la sous-échantillonnent itérativement de 2 jusqu'à ce qu'ils atteignent l'octave la plus basse.

Avantages de Q-transformées ont également été explorés par Brown par exemple ici . Il peut ne pas être aussi efficace que la FFT unique, mais présente l'avantage de ne pas calculer la FFT épaisse sur les bandes haute fréquence qui ne le nécessitent pas.

Merci pour toutes les réponses, commentaires et liens.

nuoritoveri
la source
Ce que vous décrivez ressemble beaucoup à une transformation en ondelettes, ce qui semble être confirmé par cela . Je me rends compte que c'est un vieux post, mais les futurs lecteurs voudront peut-être aussi regarder les ondelettes. Bien que, comme je l'ai souligné dans ma réponse, vous ne pouvez pas changer le principe d'incertitude temps-fréquence, mais la connaissance des données peut vous permettre de tricher un peu.
orodbhen
1

Si vous gardez un «historique» des entrées et que vous l'utilisez pour chevaucher vos DFT, cela fournirait plus d'informations pour extraire le contenu spectral. Bien sûr, cela dépend de la nature variant dans le temps de votre signal. Elle serait de forme similaire à une fonction de distribution de probabilité.

Cela vous donnerait des DFT plus rapprochées dans le temps. Cependant, cela augmenterait encore l'incertitude temporelle de chaque TFD, qui est contrainte par les lois de la nature: la valeur exacte du comportement temporel et spectral ne peut pas être déterminée simultanément.

Si le contenu en fréquence ne varie pas beaucoup à l'intérieur de la fenêtre, alors ça devrait aller.

orodbhen
la source