Introducción a la codificación de audio para Cloud Speech-to-Text

La codificación de audio hace referencia a la forma en la que se almacenan y transmiten los datos de audio. En esta página, se explica cómo funcionan estas codificaciones en relación con la API de Cloud Speech-to-Text.

Para conocer los lineamientos sobre cómo elegir la mejor codificación para tu aplicación, consulta nuestra guía de prácticas recomendadas.

Formatos de audio frente a codificaciones de audio

Un formato de audio no es lo mismo que una codificación de audio. Por ejemplo, los archivos de audio WAV definen el formato del encabezado de un archivo de audio, pero no son una codificación. A menudo, aunque no siempre, estos archivos usan una codificación PCM lineal; no des por sentado que un archivo WAV tiene una codificación particular hasta que no inspecciones su encabezado.

No obstante, FLAC es tanto un formato de archivo como una codificación, algo que a veces genera cierta confusión. Un archivo FLAC debe contener la tasa de muestreo en el encabezado para que se pueda enviar a la API de Cloud Speech-to-Text. Es la única codificación que requiere que los datos de audio incluyan un encabezado; el resto especifican datos de audio sin encabezado. Cuando mencionamos FLAC en la API de Cloud Speech-to-Text, siempre hacemos referencia al códec. Cuando mencionamos un formato de archivo FLAC, usamos el formato "un archivo FLAC".

Codificaciones de audio compatibles con Cloud Speech-to-Text

La API de Cloud Speech-to-Text admite varias codificaciones diferentes. En la tabla siguiente, se enumeran los códecs de audio compatibles:

Códec Nombre Sin pérdida Notas de uso
MP3 Capa de audio MPEG III No La codificación MP3 es una función beta y solo está disponible en v1p1beta1. Consulta la documentación de referencia de RecognitionConfig para obtener información.
FLAC Códec de audio gratuito sin pérdida Se requieren 16 bits o 24 bits para transmisión continua.
LINEAR16 PCM lineal Codificación de modulación lineal por impulsos codificados (PCM) de 16 bits. El encabezado debe incluir la tasa de muestreo.
MULAW μ-law No Codificación PCM de 8 bits
AMR Banda estrecha con tasas de transferencia múltiples adaptables No La tasa de muestreo debe ser de 8,000 Hz.
AMR_WB Banda ancha con tasas de transferencia múltiples adaptables No La tasa de muestreo debe ser de 16,000 Hz.
OGG_OPUS Tramas de audio con codificación Opus en un contenedor Ogg No La tasa de muestreo debe ser una de las siguientes: 8,000 Hz, 12,000 Hz, 16,000 Hz, 24,000 Hz o 48,000 Hz.
SPEEX_WITH_HEADER_BYTE Banda ancha de Speex No La tasa de muestreo debe ser de 16,000 Hz.
WEBM_OPUS WebM Opus No La tasa de muestreo debe ser una de las siguientes: 8,000 Hz, 12,000 Hz, 16,000 Hz, 24,000 Hz o 48,000 Hz.

Cloud Speech-to-Text admite archivos WAV con audio codificado en LINEAR16 o MULAW.

Para obtener más información sobre los códecs de audio de Cloud Speech-to-Text, consulta la documentación de referencia de AudioEncoding.

Si puedes elegir la codificación del material de referencia, usa una sin pérdida, como FLAC o LINEAR16, para obtener un mejor reconocimiento de voz. Para conocer los lineamientos sobre cómo elegir el códec apropiado para tu tarea, consulta las Prácticas recomendadas.

¿Por qué se recomienda la codificación?

El audio consta de formas de onda que consisten en la interposición de ondas de diferentes frecuencias y amplitudes. Para representar estas formas de onda en medios digitales, se les debe aplicar un muestreo a tasas que puedan representar, al menos, los sonidos de la frecuencia más alta que quieres replicar. Además, deben almacenar una profundidad de bits suficiente como para representar la amplitud adecuada (sonoridad y suavidad) de las formas de onda durante la muestra de sonido.

La capacidad de un dispositivo de procesamiento de sonido de recrear frecuencias se conoce como frecuencia de respuesta, mientras que la capacidad de crear una sonoridad y suavidad adecuadas se conoce como rango dinámico. Juntos, estos términos a menudo se conocen como la fidelidad de un dispositivo de sonido. Una codificación, en su forma más simple, es un medio para reconstruir el sonido usando estos dos principios básicos, además de almacenar y transportar esos datos de manera eficiente.

Tasas de muestreo

El sonido existe como una forma de onda analógica. Un segmento de audio digital se aproxima a esta onda analógica a través de un muestreo de la amplitud de la onda analógica a una tasa lo suficientemente alta como para imitar las frecuencias intrínsecas de la onda. La tasa de muestreo de un segmento de audio digital especifica la cantidad de muestras que se deben tomar del material fuente de audio (por segundo); una tasa de muestreo alta aumenta la capacidad del audio digital de representar fielmente las altas frecuencias.

Como consecuencia del teorema de NYquist-Shannon, por lo general, se debe realizar el muestreo de más del doble de la frecuencia máxima de cualquier onda de sonido que se quiera capturar en formato digital. Para representar el audio dentro del rango de audición humana (de 20 a 20,000 Hz), por ejemplo, un formato de audio digital debe realizar un muestreo, al menos, 40,000 veces por segundo (lo cual es parte del motivo por el que el audio del CD utiliza una tasa de muestreo de 44,100 Hz).

Profundidades de bits

La profundidad de bits afecta el rango dinámico de una muestra de audio dada. Una mayor profundidad de bits permite representar amplitudes más precisas. Si tienes muchos sonidos fuertes y suaves en la misma muestra de audio, necesitarás una mayor profundidad de bits para representarlos correctamente.

Las profundidades de bits más altas también reducen la relación señal-ruido de las muestras de audio. El audio de un CD musical posee una profundidad de 16 bits. El audio de un DVD usa una profundidad de 24 bits, mientras que la mayoría de los equipos telefónicos usan una de 8 bits. (Ciertas técnicas de compresión pueden compensar las profundidades de bits más pequeñas, pero tienden a tener pérdidas).

Audio sin comprimir

En la mayoría de los procesamientos de audio digital, se usan estas dos técnicas (la tasa de muestreo y la profundidad de bits) para almacenar los datos de audio de manera directa. Una de las técnicas de audio digital más conocidas, que se popularizó con el uso del disco compacto, se denomina modulación por impulsos codificados (PCM). Los muestreos de audio se realizan a intervalos establecidos, y la amplitud de la onda muestreada en ese punto se almacena como un valor digital con la profundidad de bits de la muestra.

La PCM lineal, que indica que la respuesta de amplitud es lineal y uniforme en toda la muestra, es el estándar que se usa en los CDs y en la codificación LINEAR16 de la API de Cloud Speech-to-Text. Ambas codificaciones producen una transmisión de bytes sin comprimir que corresponde directamente a los datos de audio, y ambos estándares contienen 16 bits de profundidad. La PCM lineal usa una tasa de muestreo de 44,100 Hz en los CDs, lo que es apropiado para la recomposición de música; no obstante, una tasa de muestreo de 16,000 Hz es más apropiada para la recomposición de voz.

La PCM lineal (LINEAR16) es un ejemplo de audio sin comprimir en el que los datos digitales se almacenan exactamente como lo implican los estándares anteriores. Leyendo una transmisión monocanal de bytes codificados a través de la PCM lineal, podrías contar cada 16 bits (2 bytes), por ejemplo, para obtener otro valor de amplitud de la forma de onda. Casi todos los dispositivos pueden manipular estos datos digitales de forma nativa. Incluso puedes recortar archivos de audio de PCM lineal con un editor de texto. Sin embargo, el audio sin comprimir no es la manera más eficaz de transportar ni almacenar audio digital. Por eso, en la mayoría de los tipos de audios se usan técnicas de compresión digital.

Audio comprimido

Al igual que todos los datos, los de audio se suelen comprimir para facilitar su almacenamiento y transporte. La compresión en la codificación de audio puede ser sin pérdida o con pérdida. La compresión sin pérdida se puede desempaquetar para restablecer los datos digitales a su forma original. La compresión con pérdida elimina necesariamente cierta información de este tipo durante la compresión y descompresión, y se parametriza para indicar cuánta tolerancia se debe dar a la técnica de compresión a fin de quitar datos.

Compresión sin pérdida

La compresión sin pérdida comprime datos de audio digital mediante complejas reorganizaciones de los datos almacenados sin que esto dé como resultado una degradación de la calidad de la muestra digital original. En la compresión sin pérdida, cuando se desempaqueten los datos en su forma digital original, no se perderá información.

Entonces, ¿por qué las técnicas de compresión sin pérdida a veces tienen parámetros de optimización? A menudo, estos parámetros compensan el tamaño del archivo con el tiempo de descompresión. Por ejemplo, FLAC usa un parámetro de nivel de compresión de 0 (el más rápido) a 8 (el tamaño de archivo más pequeño). La compresión de FLAC de nivel más alto no pierde información frente a la compresión de nivel más bajo. En su lugar, el algoritmo de compresión solo necesitará usar más energía de procesamiento para crear o recrear el audio digital original.

La API de Cloud Speech-to-Text admite dos codificaciones sin pérdida: FLAC y LINEAR16. En términos técnicos, LINEAR16 no es una "compresión sin pérdida" porque no involucra ningún tipo de compresión. Si el tamaño de archivo o la transmisión de datos son importantes para ti, usa FLAC.

Compresión con pérdida

Por otra parte, la compresión con pérdida comprime datos de audio borrando o reduciendo cierto tipo de información durante la creación de los datos comprimidos. La API de Cloud Speech-to-Text admite varios formatos con pérdida, aunque deberías evitarlos si tienes control sobre el audio, ya que la pérdida de datos podría afectar la exactitud del reconocimiento.

El códec popular MP3 es un ejemplo de una técnica de codificación con pérdida. Todas las técnicas de compresión de MP3 quitan el audio que está fuera del rango de audio de un ser humano normal, y ajustan la cantidad de compresión mediante el ajuste de la tasa de bits efectiva del códec MP3, o la cantidad de bits por segundo para almacenar la fecha del audio.

Por ejemplo, un CD estereofónico que usa PCM lineal de 16 bits tiene la siguiente tasa de bits efectiva:

44100 * 2 channels * 16 bits = 1411200 bits per second (bps) = 1411 kbps

Por ejemplo, la compresión de MP3 quita estos datos digitales mediante tasas de bits como 320 kbps, 128 kbps o 96 kbps, con una degradación resultante en la calidad del audio. MP3 también admite tasas de bits variables, que pueden comprimir aún más el audio. Ambas técnicas pierden información y pueden afectar la calidad. Por ejemplo, la mayoría de las personas pueden notar la diferencia entre la música MP3 con codificación de 96 kbps o 128 kbps.

Otras formas de compresión parametrizar alguna otra restricción.

MULAW (también llamada μ-law o uLaw) es una codificación PCM de 8 bits en la que la amplitud de la muestra se modula de forma logarítmica en lugar de lineal. Como resultado, uLaw reduce el rango dinámico eficaz del audio así comprimido. Aunque uLaw se creó para optimizar en particular la codificación de voz, a diferencia de otros tipos de audio, la codificación LINEAR16 de 16 bits (PCM sin comprimir) sigue siendo muy superior al audio comprimido uLaw de 8 bits.

AMR y AMR_WB modulan la muestra de audio codificada introduciendo una tasa de bits variable en la muestra de audio de origen.

Aunque la API de Cloud Speech-to-Text admite varios formatos con pérdida, deberías evitarlos si tienes control sobre el audio fuente. Si bien es posible que la eliminación de esos datos a través de la compresión con pérdida no afecte de forma notoria el audio tal como lo escucha el oído humano, la pérdida de esos datos puede degradar significativamente la exactitud de un motor de reconocimiento de voz.