Blog

Analysis Window (Part II)

En el artículo anterior nos centramos en visualizar las respuestas de las funciones de ventana, posiblemente, más usadas en el análisis de audio. Vimos que podemos determinar la respuesta de una ventana en base a dos parámetros: la anchura de su lóbulo principal y la amplitud de sus lóbulos secundarios. También introducimos el concepto de la Short Time Fourier Transfer (STFT), que a diferencia de la Discrete Fourier Transform (DFT) itera sobre la señal de entrada para obtener el espectro de distintos fragmentos. En este artículo profundizaremos en estos aspectos, y su relación en el trabajo de análisis.

Window size

Como ya vimos anteriormente, la STFT es una versión que varía en el tiempo de la DFT, y el enventanamiento es un concepto clave, ya que nos permite obtener fragmentos de la señal y minimizar el error en el análisis.

1Análisis con diferentes funciones de ventana

Recordemos este gráfico, en él podemos ver el resultado del análisis de una señal armónica con distintas funciones de ventana, pero todas con el mismo tamaño.

Veamos qué ocurre si usamos un fragmento de la señal con dos tamaños distintos de ventana:

2Análisis con diferentes tamaños de ventana

El ejemplo nos muestra un resultado claramente distinto a pesar de que en el análisis estamos usando la misma función de ventana. El tamaño de la ventana determina cuántas muestras de la señal vamos a analizar y consecuentemente qué resolución frecuencial vamos a obtener.

La ventana de menor tamaño nos aporta muy poca información, mientras que la ventana de mayor tamaño nos muestra la información con más detalle, es decir, visualizamos mejor el contenido espectral de la señal.

La elección del tamaño de ventana es siempre un compromiso, aunque a priori puede parecer que por defecto usar un tamaño de ventana mayor puede ser lo más adecuado, esto no es siempre así. Un tamaño grande implica una mejor resolución frecuencial a cambio de obtener una pobre resolución temporal y viceversa. En muchos momentos del análisis, podemos estar interesados en estudiar el ataque de una señal o en visualizar el espectrograma de la respuesta al impulso de una sala y en estos casos una ventana pequeña nos va a mostrar mejor lo que ocurre a través del tiempo.

El tamaño de ventana, por lo tanto, va a tener que ser elegido en base a algún criterio, el número de periodos o la resolución que queramos obtener.

FFT size

El tamaño de FFT es independiente del tamaño de la ventana, aunque es común encontrar analizadores donde el tamaño de ventana y de FFT coinciden. Para poder utilizar tamaños distintos debemos usar la técnica del zero-padding.

No hemos hablado demasiado acerca de ello, pero básicamente la técnica consiste en rellenar de ceros el fragmento de señal enventanada hasta obtener el tamaño de FFT que queremos usar.

3Análisis de la señal usando Zero-Padding

El gráfico nos muestra el análisis de la misma señal. El grafico inferior usa la técnica de zero-padding y esto nos permite obtener una medición más suavizada, ya que tenemos más datos para la representación. Debemos tener en cuenta que la resolución frecuencial no ha cambiado, ya que esta depende del tamaño de la ventana. La técnica del zero-padding simplemente nos ayuda a identificar mejor los datos.

Para comprobarlo realizamos el siguiente ejemplo: A la misma señal anterior le añadimos una sinusoide de baja frecuencia (65 Hz) y realizamos dos análisis con el mismo tamaño de FFT, 16384 muestras. Un análisis usará una ventana de 512 muestras y zero-padding y el otro una ventana de 16384 muestras, es decir, ambos análisis usan el mismo tamaño de FFT.

4Análisis con distinto tamaño de ventana y mismo tamaño de FFT

Como hemos, visto usar zero-padding nos permite suavizar la respuesta gráfica ya que debemos interpolar menos datos, pero el análisis no permite visualizar nada que quede fuera de la constante de tiempo del tamaño de la ventana, a pesar de que estamos usando una FFT mucho mayor.

Hop size

Como ya hemos comentado varias veces la STFT nos permite ir extrayendo fragmentos de la señal, es decir, a cada instante de tiempo, determinado por del tamaño de la ventana, obtenemos una imagen fija de la señal a la cual le aplicamos la FFT. Una vez hemos obtenido un trozo de la señal, la ventana debe moverse para obtener el siguiente fragmento, a la cantidad de salto necesario le denominamos Hop size.

La cantidad de salto dependerá del tipo de ventana. Veamos un ejemplo con la ventana Hann, la gráfica superior muestra el resultado sin usar Hop size , y la grafica inferior usando un Hop size del 50% (64 muestras):

5Diferentes tamaños de Hopsize para una ventana Hann

Claramente se observa como al no usar ningún solapado estamos eliminando trozos en la señal. También podemos observar cómo el tamaño mínimo adecuado de hopsize para una ventana Hann es del 50% .

Comparemos en el siguiente ejemplo una ventana Hann con una Blackman Harris con el mismo valor de Hopsize (50%):

6Comparativa entre Hann y Blackman-Harris para un mismo tamaño de Hopsize

Blackman Harris necesita realizar saltos más pequeños, exactamente la mitad, lo que algorítmicamente implica realizar el doble de cálculos que la ventana Hann para obtener el mismo resultado:

7Diferencia entre Hann y Blackman-Harris

La resolución con la que vamos a analizar las señales no depende del tamaño de la FFT sino del tamaño de la ventana que usemos, y esto puede ser aprovechado para decidir cómo queremos ver las cosas.

Spectrograma

El espectrograma es una visualización 2D de una función en 3 dimensiones (Frecuencia, Tiempo y Magnitud) y como podemos deducir, la elección de los parámetros de análisis van a ser un compromiso entre obtener buena resolución temporal o buena resolución frecuencial. Para realizar el espectrograma de una señal necesitamos usar la STFT.

Veamos algunos ejemplos:

Analizamos una señal de audio constante y armónica, una nota de flauta:

8Análisis con diferentes tamaños de ventana de una nota de flauta

Como podemos ver en el ejemplo, las representaciones gráficas son totalmente distintas, al ser una señal constante la resolución temporal no nos aporta ninguna información, contrariamente aumentar el tamaño de la ventana nos permite detectar sin problemas la frecuencia fundamental de la nota y sus armónicos.

Veamos un ejemplo distinto, unas notas de piano:

9Análisis con diferentes tamaños de ventana de una notas de piano

En este ejemplo sucede lo contrario, reducir el tamaño de la ventana nos permite poder observar el ataque de cada nota y aproximadamente donde se centra la energía de la señal, pero evidentemente sin detalle ya que para conseguir resolución en el tiempo debemos sacrificar la frecuencia.

Del mismo modo podemos analizar la respuesta al impulso de una sala:

10Respuesta al impulso de una sala en modo logarítmico

Si estamos interesados en el tiempo reduciremos el tamaño de ventana, y si estamos interesados en conocer el contenido espectral aumentaremos el tamaño:

11Spectrograma de la respuesta al impulso

El gráfico de los espectrogramas muestran claramente las diferencias. En el grafico superior intencionadamente hemos dejado el eje de frecuencias en modo lineal ya que permite una mejor visualización cuando estamos interesados en el tiempo.

En todos estos ejemplos hemos utilizado zero-padding que nos permite mejorar ligeramente la visualización y un Hopsize del 90%.

Veamos que implica modificar el tamaño del salto:

12Spectrogram de la respuesta al impulso con diferentes tamaños de Hop size

En el gráfico superior se puede observar como al no solapar las sucesivas ventanas cuando aplicamos la STFT la respuesta se observa por bloques, exactamente los bloques formados por la ventana de análisis.

Como ya habremos podido comprobar la elección es siempre un compromiso, tiempo versus frecuencia. Usar un tamaño de ventana intermedio, como la usada en el último ejemplo, nos puede aportar una información rápida en ambos dominios.

Window Width

Si recordamos el artículo anterior, vimos como una ventana Blackman Harris ofrecía el mejor resultado en base a la amplitud de sus lóbulos secundarios pero a cambio era la ventana con mayor anchura en su lóbulo principal (8 bins). También vimos el análisis de una señal armónica donde sus armónicos estaban equiespaciados. Cuando analizamos fragmentos de señales armónicas es muy sencillo determinar cuál es el tamaño de ventana que debemos usar, simplemente debemos conocer la anchura en bins de la ventana, la frecuencia de muestreo y la frecuencia fundamental de la señal que queremos analizar.

Ejemplo: Imaginemos que queremos saber cual es el tamaño mínimo de ventana que debemos usar para una ventana Hann y Blackman-Harris con una frecuencia de muestreo de 48kHz y una frecuencia fundamental de 1000 Hz:

Hann:

13Blackman-Harris:

14

Como ya sabíamos, usar una Blackman-Harris implica usar el doble de datos que una ventana Hann con el coste computacional que ello supone.

En un análisis real, normalmente no vamos a analizar trozos de señales armónicas, usaremos ruido rosa y analizaremos señales mezcladas que provienen de distintos instrumentos, por lo tanto, necesitamos que la ventana de análisis sea lo más selectiva posible.

Por último, veamos el análisis de un ruido gaussiano con la suma de dos ondas sinusoidales de frecuencias muy próximas:

15Comparativa de resolución frecuencial (Hann vs Blackman-Harris)

La ventana Blackman-Harris, como su lóbulo principal es más ancho, no es capaz de separar correctamente ambas frecuencias, necesitaríamos usar una ventana del doble de tamaño para conseguir el mismo resultado que con una ventana Hann.

Conclusiones:

  • La función de ventana es una herramienta imprescindible en el análisis en el dominio discreto.
  • La ventana queda determinada por la anchura de su lóbulo principal y por la amplitud de sus lóbulos secundarios.
  • Una ventana pequeña nos aporta información temporal, mientras que una ventana grande nos aporta información frecuencial.
  • El tamaño de FFT es independiente del tamaño de la ventana, pero siempre debe ser igual o mayor que ésta.
  • La técnica Zero-padding nos permite suavizar los datos.
  • La STFT nos permite recorrer la señal y graficar su espectrograma.
  • El espectrograma es una visualización 2D de una función 3D.

Referencias

Coursera, Audio signal processing for music applications, Chapter 4, Standford & UPF University, https://class.coursera.org

Este artículo tiene 1 comentarios

  • Gabriel Ortega dice:

    Excelente explicacion!! en muchas ocasiones nos encontramos con estas funciones y parámetros en todo tipo de analizadores, y realmente no sabemos que valores seleccionar, este articulo nos entrega de manera muy didactica lo que necesitamos los tecnicos, muchas gracias Pepex! saludos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

En EducaSound no lo enseñamos, lo demostramos