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.251Hz
et C#5 = 554.365
.
Je pensais que 1024
c'é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:
- Divisez le signal en bandes de fréquences avec des filtres passe-bande (par exemple
0-11.25Hz
et11.25-22.5Hz
). - 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. - Concatinez les jeux de bacs résultants avec des étiquettes ajustées
Méthode 2:
- Utilisez une série de filtres passe-bas avec une limite croissante.
- Effectuez la FFT sur des gammes de fréquences croissantes.
- Pour chaque fréquence, utilisez la meilleure résolution possible (bacs de la première FFT dans laquelle cette fréquence a été incluse).
- 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.