Sim, muitas pessoas trabalharam na análise de frequência do tempo.
A abordagem de "dividir meus dados em partes, executar a FFT em cada parte" é uma boa idéia. A aplicação de uma "função de janela" em cada parte, imediatamente antes de executar a FFT, ajuda a evitar muitos artefatos. Permitir que os pedaços se sobreponham também ajuda. Após esses ajustes, você acaba com a transformação Gabor , que parece ser a transformada de Fourier (STFT) de curto prazo mais popular.
Como você já apontou, e como o artigo da Wikipedia aponta, todas as técnicas de transformação de Fourier de curto prazo têm uma desvantagem:
- Quando você divide a série temporal em partes muito curtas, obtém informações de tempo altamente precisas sobre exatamente quando um tom inicia e para, mas as informações de frequência são muito desfocadas.
- Quando você divide a série temporal em partes muito longas, obtém informações de frequência altamente precisas quanto à frequência exata de um tom, mas o tempo exato em que ele inicia e pára é embaçado.
Este é um problema famoso, mas, infelizmente, não só não foi resolvido, como ficou provado que a incerteza entre os dois é inevitável - o limite de Gabor, o limite de Heisenberg-Gabor, o princípio da incerteza etc.
Se eu fosse você, começaria com uma das muitas bibliotecas disponíveis para calcular a transformação de Gabor e experimentaria cortar a série temporal em vários comprimentos. Há uma boa chance de que bonito você vai ter sorte e você vai acabar com algum comprimento que dá adequada localização tempo e adequada discriminação de frequências.
Se isso não funcionar para esta aplicação, então eu gostaria de passar para outras abordagens para a representação tempo-freqüência e análise tempo-freqüência - transformadas wavelet, transforma chirplet , fractional transformada de Fourier (FRFT), etc.
EDIT: Algum código fonte para gerar espectrogramas / gráficos em cascata a partir de dados de áudio:
A imagem no espectrograma vai na direção inversa dos utilitários acima.