Libreria Spectrogram C ++

Per il mio attuale progetto in C ++ / Qt ho bisogno di una libreria (è preferibile LGPL) che può calcolare uno spettrogramma da un segnale (fondamentalmente una matrice di doppi). Uso già Qwt per la parte della GUI.

Eventuali suggerimenti? Grazie.

Sarebbe abbastanza facile mettere insieme il proprio spettrogramma. I passaggi sono:

  1. funzione finestra (abbastanza banale, ad es. Hanning)
  2. FFT (FFTW sarebbe una buona scelta ma se la licenza è un problema, allora vai a Kiss FFT o simili)
  3. calcola la grandezza del log dei componenti del dominio della frequenza (banale: log (sqrt (re * re + im * im))

“Come creo un grafico di frequenza vs tempo?” elenca diverse librerie, ognuna delle quali può calcolare uno spettrogramma da un segnale.

Copiato e incollato dalla mia risposta:

Qualche codice sorgente per generare spettrogrammi / diagrammi a cascata da dati audio:

  • SoX – Sound eXchange include il codice sorgente dello spettrogramma
  • Audacity include il codice sorgente dello spettrogramma
  • glfer include il codice sorgente dello spettro di visualizzazione dello spettro a cascata
  • codice sorgente che usa fftw per calcolare lo spettrogramma di un stream audio
  • più codice sorgente che utilizza OpenAL e fftw per calcolare lo spettrogramma per un stream audio
  • “Sound Activated Recorder with Spectrogram in C #” di Jeff Morton
  • Topographica sembra includere il codice sorgente dello spettrogramma
  • SpectroGraph per iTunes

Image to Spectrogram va nella direzione opposta rispetto alle utility di cui sopra.

potresti usare fftw (fftw.org) per calcolare lo spettrogramma, avresti comunque bisogno di tracciare i dati, ma non dovrebbe essere un problema

Puoi usare il codice FFT da qui . Utilizza la metaprogrammazione del modello C ++ per l’efficienza. La fonte completa è fornita dall’autore qui .

È stato suggerito di includere questo codice in Eigen per l’uso del codice basato su modelli (tipo amichevole).