Resampling: cambio de la frecuencia de muestreo

Introducción

El resampling ocurre con frecuencia. En muchas ocasiones, puede que no seamos ni siquiera conscientes de que está ocurriendo. Un ejemplo, es la reproducción de música desde el ordenador. Normalmente pasamos nuestros CDs al disco duro. El CD tiene la música almacenada a 44.1Khz. Al reproducir la música, llega a nuestra tarjeta de sonido que puede funcionar internamente a 48khz (muchas lo hacen). El problema reside en que el algoritmo usado en las tarjetas de sonido es normalmente de baja calidad (hacerlo bien requiere potencia de cálculo).

libsamplerate (Secret Rabbit Code)

Esta librería implementa algoritmos de calidad. Esta calidad puede medirse experimentalmente. En estos algoritmos es importante:

  • SNR (relación señal ruido): el algoritmo introduce ruido. Interesa que este valor sea lo más alto posible.
  • Ancho de banda: estos algoritmos atenúan las altas frecuencias. El ancho de banda se considera hasta la frecuencia en la que la atenuación es de 3dB. Se expresa como un porcentaje de todo el ancho de banda a la frecuencia de muestreo.
  • Velocidad: cuanto más rápido mejor.

La librería incluye código para evaluar la calidad del resampling. Valores típicos en cuanto a la calidad de los algoritmos:

  • Según un correo en una mailing list:
    • SRC_SINC_FASTEST: SNR=102.42dB, Bandwidth=80.23%
    • SRC_SINC_MEDIUM_QUALITY: SNR=98.99dB, Bandwidth=90.68%
    • SRC_SINC_BEST_QUALITY: SNR=97.43dB, Bandwidth=96.96%
  • Según la manpage de mpd.conf
    • SRC_SINC_FASTEST: SNR=97dB, Bandwidth=80%
    • SRC_SINC_MEDIUM_QUALITY: SNR=97dB, Bandwidth=90%
    • SRC_SINC_BEST_QUALITY: SNR=97dB, Bandwidth=96%

El resaampleo lineal es de muy mala calidad como se desprende de aquí (ver página 11).

Resampleo mediante SOX

SoX (Sound eXchange) sea el que realice un mejor trabajo desde el punto de vista del resampleo. Se puede comparar la calidad del resampleo de diferentes softwares aquí. Los mejores algoritmos son aquellos que producen un fondo más negro.

Si comparamos los resultados que produce "SoX VHQ Minimum Phase" con los que produce "Secret Rabbit Code (Best Sinc)", veremos que el fondo es mucho más negro en el caso de SoX. Por ello, si nuestra tarjeta de sonido funciona internamente a 48Khz, posiblemente, la mejor calidad de sonido que podamos extraer de ella sea mediante la conversión de nuestros canciones de 44100hz a 48000hz mediante SoX.

Resumiendo

Normalmente, nos interesará resamplear por lo menos a 48khz. ¿Interesa hacerlo a 96khz? ¿Interesa usar 24bit y controlar el volumen por software?

A continuación, enlaces para resamplear el audio por software:

Salvo que se diga otra cosa, el contenido de esta obra está bajo la licencia: Creative Commons Reconocimiento NoComercial CompartirIgual 2.5 España.