Oui, beaucoup de gens ont travaillé sur l'analyse temps-fréquence.
L'approche de "découper mes données en morceaux, effectuer la FFT sur chaque morceau" est une bonne idée. L'application d'une "fonction fenêtre" sur chaque bloc, juste avant d'effectuer la FFT, permet d'éviter de nombreux artefacts. Permettre aux morceaux de se chevaucher aide également. Après ces ajustements, vous vous retrouvez avec la transformation de Gabor , qui semble être la transformation de Fourier à court terme la plus populaire (STFT).
Comme vous l'avez déjà souligné, et comme le souligne l'article de Wikipedia, toutes les techniques de transformée de Fourier à court terme ont un compromis:
- lorsque vous coupez la série temporelle en morceaux très courts, vous obtenez des informations temporelles très précises quant au moment précis où une tonalité commence et s'arrête, mais les informations de fréquence sont très floues.
- Lorsque vous coupez la série chronologique en morceaux très longs, vous obtenez des informations de fréquence très précises sur la fréquence exacte d'une tonalité, mais l'heure exacte à laquelle elle démarre et s'arrête est floue.
C'est un problème célèbre, mais hélas, non seulement il n'a pas été résolu, il a été prouvé que l'incertitude entre les deux est inévitable - la limite de Gabor, la limite de Heisenberg-Gabor, le principe d'incertitude , etc.
Si j'étais vous, je commencerais par l'une des nombreuses bibliothèques prêtes à l'emploi pour calculer la transformation de Gabor et expérimenter la découpe des séries temporelles en différentes longueurs. Il y a de fortes chances que vous ayez de la chance et vous vous retrouverez avec une certaine longueur qui donne une localisation temporelle adéquate et une discrimination de fréquence adéquate .
Si cela ne fonctionne pas pour cette application, alors je passer à d' autres approches de représentation temps-fréquence et l' analyse temps-fréquence -, transformées en ondelettes transforme chirplets , transformée de Fourier fractionnaire (FRFT), etc.
EDIT: Du code source pour générer des spectrogrammes / tracés en cascade à partir de données audio:
L'image vers le spectrogramme va dans le sens inverse des utilitaires ci-dessus.