¿Se puede aumentar la resolución de frecuencia de FFT sin aumentar el tamaño de la ventana?

12

Me gustaría usar STFT para el análisis multipitch. Me doy cuenta de que detectar los parciales existentes en la señal es solo el comienzo. Todavía tengo problemas con eso.

Digamos que tengo señal muestreada con frecuencia 'CD' 44100Hz. Con la ventana de 1024muestras obtengo la resolución del bin de frecuencia 22500Hz/512=43Hz. Esto es suficiente solo para discernir notas altas de piano como: C5 = 523.251Hzy C#5 = 554.365.

Solía ​​pensar que 1024es una ventana bastante grande. ¿Pero tal vez no lo es y normalmente se usan ventanas más grandes para detectar parciales?

¿Se puede aumentar la resolución de frecuencia con algún otro método que no sea aumentar el tamaño de la ventana, lo que empeora la resolución de tiempo? Pensé en dos métodos:

Método 1:

  1. Divida la señal en bandas de frecuencia con filtros de paso de banda (por ejemplo 0-11.25Hzy 11.25-22.5Hz).
  2. Reduzca la muestra de las bandas más altas para que las frecuencias altas originales ahora sean bajas (así que hágalo para la segunda banda 11.25-22.5Hz -> 0Hz-22.5Hz), no estoy seguro de que esto sea posible.
  3. Conjuntos de contenedores resultantes de Concat con etiquetas ajustadas.

Método2:

  1. Utilice series de filtros de paso bajo con límite creciente.
  2. Realice FFT en rangos de frecuencia crecientes.
  3. Para cada frecuencia, utilice la mejor resolución posible (contenedores del primer FFT en el que se incluyó esta frecuencia).
  4. Esto hará que las frecuencias bajas tengan una mejor resolución, pero creo que esto está bien porque para notas más altas la diferencia de frecuencia es mayor.

Le agradeceré cualquier comentario sobre este tema.

También leí aquí: ¿Cómo influyen el tamaño de la ventana, la frecuencia de muestreo en la estimación del tono FFT? sobre el método para mejorar los resultados de picking pico. Creo que intentará usarlo.

nuoritoveri
fuente
Si sabe que solo hay un componente seno, puede ajustar una parábola a los contenedores vecinos del pico e interpolar para encontrar el pico "verdadero". No estoy seguro de cómo esto se compara con el método de fase descrito por @pichenettes.
endolito el

Respuestas:

9

Si realmente insiste en usar FFT (en lugar de métodos paramétricos, que no sufrirían compensaciones de tiempo / frecuencia), puede falsificar una resolución mucho mejor utilizando la información de fase para recuperar la frecuencia instantánea para cada contenedor FFT. Entonces, los parciales se pueden detectar buscando mesetas en la función que den una frecuencia instantánea en función del índice del contenedor FFT. La implementación común de esta técnica como se describe en este documento le "costará" un STFT adicional (la frecuencia instantánea se recupera mediante operaciones en el STFT de la señal y el STFT de la derivada de la señal).

Vea, por ejemplo, la función de ifgram en esta implementación de Matlab de modelado sinusoidal de señales de audio.

Tenga en cuenta que esto no ayudará a resolver dos parciales que caen en contenedores FFT adyacentes. Simplemente proporcionará una estimación de frecuencia mucho más precisa que simplemente convertir en una frecuencia el índice de bin FFT de un pico espectral.

pichenettes
fuente
¿Qué quieres decir con métodos paramétricos? Además, ¿fue usted que hace unos meses mencionó un algoritmo similar a FFT pero que tenía una escala de octava de frecuencia en lugar de una escala de frecuencia uniforme?
Jim Clay
Los métodos paramétricos son métodos de análisis de señal estadística que presuponen que la señal se genera mediante un proceso específico descrito por un conjunto de parámetros, y que calcula una estimación de mínimos cuadrados de estos parámetros a partir de las observaciones. Por ejemplo, si supone que la señal es una suma de N sinusoides amortiguadas exponencialmente + ruido, pueden usarse algoritmos como ESPRIT o MUSIC para inferir las N amplitudes y pulsaciones complejas.
pichenettes
2
Probablemente se esté refiriendo a la transformación Q constante. La advertencia es que no es tan eficiente desde el punto de vista computacional como el FFT; y que invertir esta transformación es un problema de optimización no trivial.
pichenettes
@ JimClay: ¿Tal vez esto debería migrarse aquí?
endolito el
1
Decir que los métodos paramétricos no sufren de compensaciones de tiempo / frecuencia es engañoso. En esencia, los métodos paramétricos modelan el sistema y usan el modelo para extraer datos significativos. Pero el rendimiento es tan bueno como el modelo. Suponiendo que se elija el "mejor" modelo (número de polos o número de vectores propios del espacio de señal), el rendimiento de estos métodos sigue siendo muy sensible a la longitud del registro de datos.
Bryan
2

El término "resolución" tiene múltiples significados. En general, no puede aumentar su capacidad de separar (o "resolver") los picos espectrales espaciados por interpolación utilizando la misma longitud de ventana de datos. Pero puede estimar la frecuencia de los picos espectrales estacionarios aislados que están muy por encima del nivel de ruido con una resolución más fina (a veces, una resolución mucho más fina) que el espaciado del compartimento FFT mediante varios métodos de interpolación.

Los métodos comunes de interpolación de resultados de FFT para estimaciones de mayor resolución incluyen la interpolación parabólica, la interpolación de Sinc, rellenar con cero los datos en una FFT mucho más larga y los métodos de vocoder de fase utilizando ventanas superpuestas de compensación (ligeramente).

Una FFT es esencialmente un banco de filtros de paso de banda, cada uno con una transición muy empinada pero toneladas de ondulación de banda de detención para una longitud dada del núcleo del filtro FIR. Como tal, estos filtros no tienen un gran rechazo de ruido del ruido no periódico en la ventana. Si sospecha que este tipo de interferencia es un problema, una FFT con ventana o un banco de filtros personalizado puede funcionar mejor.

hotpaw2
fuente
1

Después de más investigaciones invocadas por la pregunta de Jim Clay y la respuesta de las pichenettes en los comentarios, descubrí que mi Método2 se reinventa con la transformación Q limitada descrita, por ejemplo, por Kashima y Mont-Reynaud (no estoy seguro de poder vincular a este artículo, el archivo parece desgarrado ) .

Su enfoque es algorítmicamente más eficiente, ya que comienzan desde el rango de frecuencia más grande y reducen la muestra iterativamente en 2 hasta llegar a la octava más baja.

Brown, por ejemplo, también exploró los beneficios de las transformaciones Q aquí . Puede que no sea tan eficiente como una sola FFT, pero tiene la ventaja de no calcular la FFT gruesa en bandas de alta frecuencia que no lo requieren.

Gracias por todas las respuestas, comentarios y enlaces.

nuoritoveri
fuente
Lo que estás describiendo suena muy parecido a una transformada wavelet, que parece ser confirmada por esto . Me doy cuenta de que esta es una publicación antigua, pero los futuros lectores también pueden querer ver las wavelets. Sin embargo, como señalé en mi respuesta, no puede cambiar el principio de incertidumbre de frecuencia de tiempo, pero el conocimiento de los datos puede permitirle hacer un poco de trampa.
orodbhen
1

Si mantiene un "historial" de entradas y lo usa para superponer sus DFT, entonces le proporcionaría más información para extraer el contenido espectral. Por supuesto, eso depende de la naturaleza variable de su señal en el tiempo. Sería similar en forma a una función de distribución de probabilidad.

Esto le daría DFT que están más cerca en el tiempo. Sin embargo, aún aumentaría la incertidumbre temporal de cada DFT, que está limitado por las leyes de la naturaleza: el valor exacto del comportamiento temporal y espectral no puede determinarse simultáneamente.

Sin embargo, si el contenido de frecuencia no varía mucho dentro de la ventana, entonces debería estar bien.

orodbhen
fuente