Una codificación de audio se refiere a la manera en 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 Cloud Speech-to-Text.
Para obtener directrices 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
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 de audio. Los archivos WAV suelen usar una codificación PCM lineal (aunque no siempre). No supongas que un archivo WAV tiene una codificación concreta hasta que inspecciones su encabezado.
Sin embargo, FLAC es tanto un formato de archivo como una codificación, lo que a veces genera confusión. Un archivo FLAC debe contener la frecuencia de muestreo en el encabezado para poder enviarse a la API 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 nos referimos a FLAC en la API Cloud Speech-to-Text, siempre hacemos referencia al códec. Cuando nos referimos a un formato de archivo FLAC, usamos la expresión "un archivo FLAC".
Codificaciones de audio admitidas en Cloud Speech-to-Text
La API Cloud Speech-to-Text admite varias codificaciones. La siguiente tabla muestra los códecs de audio admitidos:
| Códec | Nombre | Sin pérdida | Notas sobre el uso |
|---|---|---|---|
| MP3 | MPEG Audio Layer III | No | La codificación MP3 es una función beta y solo está disponible en la versión v1p1beta1. Consulta la documentación de referencia de RecognitionConfig para obtener más información. |
FLAC |
Códec de audio sin pérdida | Sí | Se requieren 16 bits o 24 bits para las transmisiones |
LINEAR16 |
PCM lineal | Sí | Codificación PCM lineal de 16 bits. El encabezado debe contener la frecuencia de muestreo. |
MULAW |
μ-ley | No | Codificación PCM de 8 bits |
AMR |
Banda estrecha adaptable de varias frecuencias | No | La frecuencia de muestreo debe ser de 8000 Hz |
AMR_WB |
Banda ancha adaptable de varias frecuencias | No | La frecuencia de muestreo debe ser de 16000 Hz |
OGG_OPUS |
Marcos de audio codificados Opus en un contenedor Ogg | No | La frecuencia de muestreo debe ser de 8000 Hz, 12000 Hz, 16000 Hz, 24000 Hz o 48000 Hz |
SPEEX_WITH_HEADER_BYTE |
Banda ancha Speex | No | La frecuencia de muestreo debe ser de 16000 Hz |
WEBM_OPUS |
WebM Opus | No | La frecuencia de muestreo debe ser de 8000 Hz, 12000 Hz, 16000 Hz, 24000 Hz o 48000 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 tienes la opción de elegir la codificación del material de origen, utiliza una codificación sin pérdidas, como FLAC o LINEAR16, para mejorar el reconocimiento de voz. Para obtener directrices sobre cómo seleccionar el códec adecuado para tu tarea, consulta las prácticas recomendadas.
¿Por qué codificar?
El audio se compone 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, es necesario muestrearlas a frecuencias que puedan representar (al menos) los sonidos de la frecuencia más alta que quieras replicar. También es necesario almacenar suficiente profundidad de bits para representar la amplitud adecuada (volumen) de las formas de onda en la muestra de sonido.
La capacidad de un dispositivo de procesamiento de sonido para recrear frecuencias se conoce como respuesta de frecuencia, y su capacidad para crear un volumen adecuado se conoce como rango dinámico. En conjunto, estos términos suelen denominarse fidelidad de un dispositivo de sonido. Una codificación, en su forma más simple, es un medio con el que se reconstruye el sonido mediante el uso de estos dos principios básicos, además de poder almacenar y transportar dichos datos de manera eficiente.
Frecuencias de muestreo
El sonido existe como una forma de onda analógica. Un segmento de audio digital aproxima esta onda analógica muestreando la amplitud de esta onda analógica a una velocidad lo suficientemente rápida como para imitar las frecuencias intrínsecas de la onda. La frecuencia de muestreo de un segmento de audio digital especifica la cantidad de muestras que se tomarán del material original de un audio (por segundo). Una frecuencia de muestreo alta aumenta la capacidad del audio digital para representar fielmente las frecuencias altas.
Como consecuencia del teorema de Nyquist-Shannon, normalmente tienes que muestrear más del doble de la frecuencia más alta de cualquier onda de sonido que quieras capturar digitalmente. Para representar audio dentro del rango de audición humana (20 a 20000 Hz), por ejemplo, un formato de audio digital debe muestrear al menos 40000 veces por segundo (que es parte de la razón por la cual el audio de un CD usa una frecuencia de muestreo de 44100 Hz).
Profundidades de bits
La profundidad de bits afecta el intervalo dinámico de una muestra de audio determinada. Una profundidad de bits mayor te permite representar amplitudes más precisas. Si hay muchos sonidos altos y bajos en la misma muestra de audio, necesitarás más profundidad de bits para representar esos sonidos correctamente.
Las profundidades de bits más altas también reducen la relación señal/ruido en las muestras de audio. El audio musical de los CDs se proporciona con una profundidad de bits de 16 bits. El audio de DVD usa 24 bits de profundidad de bits, mientras que la mayoría de los equipos de telefonía usan 8 bits de profundidad de bits. (Ciertas técnicas de compresión pueden compensar profundidades de bits más pequeñas, pero tienden a tener pérdidas).
Audio sin comprimir
La mayoría de los procesos de audio digital utilizan estas dos técnicas (frecuencia de muestreo y profundidad de bits) para almacenar datos de audio de forma sencilla. Una de las técnicas de audio digital más populares (popularizada con el uso del CD) es la modulación por impulsos codificados (PCM). El audio se muestrea a intervalos definidos y la amplitud de la onda muestreada en ese punto se almacena como un valor digital mediante la profundidad de bits de la muestra.
PCM lineal (que indica que la respuesta de amplitud es linealmente uniforme en toda la muestra) es el estándar que se usa en los CDs y en la codificación LINEAR16 de la API Cloud Speech-to-Text. Ambas codificaciones producen un flujo sin comprimir de bytes que se corresponde directamente con los datos de audio, y ambos estándares tienen una profundidad de 16 bits. El PCM lineal utiliza una frecuencia de muestreo de 44.100 Hz en los CD, que es apropiada para la recomposición de música. Sin embargo, una frecuencia de muestreo de 16.000 Hz resulta más adecuada para recomponer la voz.
Linear PCM (LINEAR16) es un ejemplo de audio sin comprimir, ya que los datos digitales se almacenan exactamente como implican los estándares anteriores. Al leer un flujo de bytes de un canal codificado mediante el uso del PCM lineal, se puede 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 PCM lineal con un editor de texto), pero el audio sin comprimir no es la forma más eficiente de transportar o almacenar audio digital. Por este motivo, la mayoría del audio utiliza técnicas de compresión digital.
Audio comprimido
Al igual que todos los datos, los datos de audio suelen comprimirse para que sea más fácil almacenarlos y transportarlos. 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 descomprimir para restaurar los datos digitales a su forma original. La compresión con pérdidas necesariamente elimina cierta información durante la compresión y la descompresión, y se parametriza para indicar cuánta tolerancia se debe aplicar a la técnica de compresión para eliminar datos.
Compresión sin pérdida
La compresión sin pérdida utiliza complejos reordenamientos de datos almacenados para comprimir los datos de audio digital, pero no degrada la calidad de la muestra digital original. Con la compresión sin pérdida, al descomprimir los datos en su forma digital original, no se perderá ninguna información.
Entonces, ¿por qué las técnicas de compresión sin pérdida a veces tienen parámetros de optimización? Estos parámetros, a menudo, cambian el 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 FLAC de nivel superior no perderá información en comparación con la compresión de nivel inferior. En su lugar, el algoritmo de compresión solo tendrá que invertir más energía computacional al construir o deconstruir el audio digital original.
La API Cloud Speech-to-Text admite dos codificaciones sin pérdida: FLAC y LINEAR16. Técnicamente, LINEAR16 no es "compresión sin pérdidas" porque no se aplica ninguna compresión. Si el tamaño del archivo o la transmisión de datos es importante para ti, usa FLAC.
Compresión con pérdida
La compresión con pérdida, por otro lado, comprime los datos de audio al eliminar o reducir cierto tipo de información durante la construcción de los datos comprimidos. La API Cloud Speech-to-Text admite varios formatos con pérdida, aunque debes evitarlos si tienes control sobre el audio, ya que la pérdida de datos puede afectar a la precisión 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 eliminan el audio del exterior del intervalo de audio de un humano normal y ajustan la cantidad de compresión ajustando 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 estéreo que utiliza PCM lineal de 16 bits tiene una tasa de bits efectiva de:
44100 * 2 channels * 16 bits = 1411200 bits per second (bps) = 1411 kbps
La compresión de MP3 elimina esos datos digitales mediante el uso tasas de bits como 320 kbps, 128 kbps o 96 kbps, por ejemplo, que provoca la degradación en la calidad del audio. MP3 también admite tasas de bits variables, que pueden comprimir el audio aún más. Ambas técnicas pierden información y pueden afectar la calidad. La mayoría de las personas pueden notar la diferencia entre la música codificada en MP3 de 96 kbps o 128 kbps, por ejemplo.
Otras formas de compresión parametrizarán alguna otra restricción.
MULAW (también llamado ley μ o u-law) 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, u-law reduce el rango dinámico efectivo del audio comprimido. Aunque se introdujo u-law para optimizar específicamente la codificación de la voz en contraste con otros tipos de audio, LINEAR16 de 16 bits (PCM sin comprimir) sigue siendo muy superior al audio comprimido u-law 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 Cloud Speech-to-Text admite varios formatos con pérdidas, debes evitarlos si tienes control sobre el audio de origen. Aunque la eliminación de estos datos mediante la compresión con pérdidas puede no afectar de forma notable al audio tal como lo percibe el oído humano, la pérdida de estos datos para un motor de reconocimiento de voz puede reducir significativamente la precisión.