El algoritmo μ-law (a veces escrito mu -law , a menudo abreviado como u-law ) es un algoritmo de compresión-expansión , utilizado principalmente en sistemas de telecomunicaciones digitales PCM de 8 bits en América del Norte y Japón . Es uno de los dos algoritmos de compresión-expansión del estándar G.711 de ITU-T , el otro es el similar A-law . A-law se utiliza en regiones donde las señales de telecomunicaciones digitales se transportan en circuitos E-1, por ejemplo, Europa.
Los términos PCMU , G711u o G711MU se utilizan para la μ-ley G711. [1]
Los algoritmos de compresión reducen el rango dinámico de una señal de audio . En los sistemas analógicos, esto puede aumentar la relación señal-ruido (SNR) lograda durante la transmisión; en el dominio digital, puede reducir el error de cuantificación (aumentando así la relación señal-ruido de cuantificación). Estos aumentos de la SNR se pueden intercambiar por un ancho de banda reducido para una SNR equivalente.
A costa de una relación señal-ruido pico reducida, se puede demostrar matemáticamente que la cuantificación no lineal de la ley μ aumenta efectivamente el rango dinámico en 33 dB o 5+1 ⁄ 2 bits sobre una señal cuantificada linealmente, por lo tanto 13,5 bits (que se redondean a 14 bits) es la resolución máxima requerida para que una señal digital de entrada se comprima para una ley μ de 8 bits. [2]
El algoritmo de la ley μ se puede describir en forma analógica y en forma digital cuantificada.
Para una entrada dada x , la ecuación para la codificación de la ley μ es [3]
donde μ = 255 en los estándares norteamericanos y japoneses, y sgn( x ) es la función de signo . El rango de esta función es de −1 a 1.
La expansión de la ley μ se da entonces mediante la ecuación inversa: [3]
La forma discreta se define en la Recomendación UIT-T G.711 . [4]
G.711 no es claro acerca de cómo codificar los valores en el límite de un rango (por ejemplo, si +31 codifica a 0xEF o 0xF0). [ cita requerida ] Sin embargo, G.191 proporciona un código de ejemplo en el lenguaje C para un codificador de ley μ. [5] La diferencia entre los rangos positivos y negativos, por ejemplo, el rango negativo correspondiente a +30 a +1 es −31 a −2. Esto se explica por el uso del complemento a 1 (inversión de bits simple) en lugar del complemento a 2 para convertir un valor negativo en un valor positivo durante la codificación.
El algoritmo de la ley μ se puede implementar de varias maneras:
La codificación de la ley μ se utiliza porque el habla tiene un amplio rango dinámico . En la transmisión de señales analógicas, en presencia de ruido de fondo relativamente constante, se pierden los detalles más finos. Dado que la precisión del detalle se ve comprometida de todos modos, y suponiendo que la señal debe ser percibida como audio por un humano, se puede aprovechar el hecho de que el nivel de intensidad acústica percibida o la sonoridad es logarítmica comprimiendo la señal utilizando un amplificador operacional de respuesta logarítmica ( ley de Weber-Fechner ). En los circuitos de telecomunicaciones, la mayor parte del ruido se inyecta en las líneas, por lo que después del compresor, la señal deseada se percibe como significativamente más fuerte que la estática, en comparación con una fuente sin comprimir. Esto se convirtió en una solución común y, por lo tanto, antes del uso digital común, se desarrolló la especificación de la ley μ para definir un estándar interoperable.
Este algoritmo preexistente tuvo el efecto de reducir significativamente la cantidad de bits necesarios para codificar una voz humana reconocible en sistemas digitales. Una muestra podía codificarse de manera efectiva utilizando la ley μ en tan solo 8 bits, lo que coincidía convenientemente con el tamaño de símbolo de la mayoría de las computadoras comunes.
La codificación de ley μ redujo efectivamente el rango dinámico de la señal, aumentando así la eficiencia de codificación mientras polariza la señal de una manera que da como resultado una relación señal- distorsión que es mayor que la obtenida con la codificación lineal para un número dado de bits.
El algoritmo μ-law también se utiliza en el formato .au , que se remonta al menos a SPARCstation 1 de Sun Microsystems como el método nativo utilizado por la interfaz /dev/audio, ampliamente utilizada como estándar de facto para el sonido en sistemas Unix. El formato au también se utiliza en varias API de audio comunes , como las clases del paquete sun.audio de Java en Java 1.1 y en algunos métodos de C# .
Este gráfico ilustra cómo la ley μ concentra el muestreo en los valores más pequeños (más suaves). El eje horizontal representa los valores de bytes de 0 a 255 y el eje vertical es el valor decodificado lineal de 16 bits de la codificación de la ley μ.
El algoritmo μ-law proporciona un rango dinámico ligeramente mayor que el algoritmo A-law, pero a costa de generar distorsiones proporcionales peores para señales pequeñas. Por convención, el algoritmo A-law se utiliza para una conexión internacional si al menos un país lo utiliza.
Este artículo incorpora material de dominio público de la Norma Federal 1037C. Administración de Servicios Generales . Archivado desde el original el 22 de enero de 2022.