Una codificación de audio se refiere 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.
Si deseas conocer los lineamientos para 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 equivale a 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 de audio. Los archivos WAV a menudo (pero no siempre) usan una codificación PCM lineal; no supongas que un archivo WAV tiene una codificación particular hasta que inspecciones su encabezado.
Sin embargo, 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 frecuencia de muestreo en el encabezado para poder enviarse a la API de Cloud Speech-to-Text. FLAC es la única codificación que requiere que los datos de audio incluyan un encabezado. Todas las demás codificaciones de audio especifican datos de audio sin encabezado. Cuando mencionamos FLAC en la API de Cloud Speech-to-Text, siempre estamos haciendo referencia al códec. Cuando mencionamos un archivo con formato FLAC, usamos el formato "archivo FLAC".
Codificaciones de audio compatibles con Cloud Speech-to-Text
La API de Cloud Speech-to-Text admite varias codificaciones diferentes. En la siguiente tabla, 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 más información. |
FLAC |
Códec de audio sin pérdida gratuito | Sí | Se requieren 16 bits o 24 bits para transmisión continua. |
LINEAR16 |
PCM lineal | Sí | Codificación de modulación lineal por impulsos codificados (PCM) de 16 bits. El encabezado debe contener la tasa de muestreo. |
MULAW |
Ley μ | 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 fuente, usa una codificación sin pérdida, como FLAC o LINEAR16 para un mejor reconocimiento de voz. Si deseas conocer los lineamientos para seleccionar el códec apropiado para tu tarea, consulta Prácticas recomendadas.
¿Por qué codificar?
El audio consta de formas de onda, y consiste en la interposición de ondas de diferentes frecuencias y amplitudes. Para representar estas formas de onda en los medios digitales, es necesario muestrearlas a velocidades que puedan (al menos) representar los sonidos de la frecuencia más alta que desees replicar, y también deben almacenar suficiente profundidad de bits para representar la amplitud adecuada (volumen y suavidad) de las formas de onda en toda la muestra de sonido.
La capacidad de un dispositivo de procesamiento de sonido de recrear frecuencias se conoce como su frecuencia de respuesta y su capacidad para crear un volumen y una suavidad adecuados se conoce como su 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 mediante un muestreo de la amplitud de la onda analógica a una tasa de transferencia lo suficientemente alta como para imitar las frecuencias intrínsecas de la onda. La tasa de muestreo de un segmento de audio digital especifica el número de muestras que se deben tomar del material fuente de audio (por segundo); una tasa de muestreo alta aumenta la capacidad del audio digital para representar fielmente las altas frecuencias.
Como consecuencia del teorema de Nyquist-Shannon, generalmente necesitas realizar el muestreo de más del doble de la frecuencia más alta de cualquier onda de sonido que desees capturar digitalmente. Para representar audio dentro del rango de audición humana (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 de la razón por la que el CD de audio 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 te permite representar amplitudes más precisas. Si tienes muchos sonidos fuertes y suaves dentro de la misma muestra de audio, necesitarás una mayor profundidad de bits para representar esos sonidos correctamente.
Las profundidades de bits más altas también reducen la relación señal/ruido dentro de las muestras de audio. El CD de audio musical se proporciona con una profundidad de bits de 16 bits. El DVD de audio usa una profundidad de bits de 24 bits, mientras que la mayoría de los equipos telefónicos usan una profundidad de bits 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
La mayoría del procesamiento de audio digital usa estas dos técnicas (tasa de muestreo y profundidad de bits) para almacenar los datos de audio de una manera directa. Una de las técnicas de audio digital más populares (que se popularizó con el uso del disco compacto) se conoce como 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 usando la profundidad de bits de la muestra.
La PCM lineal (que indica que la respuesta de amplitud es linealmente uniforme en toda la muestra) es el estándar utilizado 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 el audio digital se almacena exactamente como implican los estándares anteriores. Si lees una transmisión continua de un canal de bytes codificados mediante 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, pero el audio sin comprimir no es la manera más eficaz de transportar o almacenar audio digital. Por esa razón, la mayoría del audio usa técnicas de compresión digital.
Audio comprimido
Al igual que todos los datos, los datos de audio se suelen comprimir para facilitar el almacenamiento y el transporte. La compresión de 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 canjean tamaño de archivo por tiempo de descompresión. Por ejemplo, FLAC usa un parámetro de nivel de compresión de 0 (más rápido) a 8 (tamaño de archivo más pequeño). La compresión de FLAC de más alto nivel no perderá información en comparación con la compresión de nivel más bajo. En su lugar, el algoritmo de compresión solo necesitará utilizar más energía de procesamiento para construir o deconstruir audio digital original.
La API de Cloud Speech-to-Text admite dos codificaciones sin pérdida: FLAC y LINEAR16. Técnicamente, LINEAR16 no es "compresión sin pérdida" porque, en primer lugar, no hay ninguna compresión involucrada. 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 mediante la eliminación o reducción de ciertos tipos de información durante la construcció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 popular códec 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án 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 efectivo del audio así comprimido. Aunque uLaw se introdujo para optimizar específicamente la codificación de voz, en contraste con 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 codificado mediante la introducción de 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 mediante la compresión con pérdida no afecte visiblemente el audio tal como lo escucha el oído humano, la pérdida de esos datos puede degradar significativamente la exactitud para un motor de reconocimiento de voz.