En este instructivo, se muestra cómo realizar una verificación de solicitud preliminar de los archivos de audio que
preparas para usar con
Cloud Speech-to-Text.
Se proporciona información general sobre los formatos de archivo de audio, se describe cómo optimizarlos para usarlos con Cloud STT y cómo diagnosticar errores. El instructivo está diseñado para profesionales de medios de comunicación y entretenimiento no técnicos y profesionales de posproducción. No requiere un conocimiento avanzado de
Google Cloud; solo se necesitan conocimientos básicos para usar la herramienta de línea de comandos de
gcloud con archivos almacenados de forma local y en un bucket de
Cloud
Storage.
Objetivos
- Instalar la herramienta FFmpeg
- Descargar los archivos multimedia de muestra
- Reproducir archivos de audio y video mediante FFmpeg.
- Extraer, transcodificar y convertir las propiedades del archivo de audio con FFmpeg
- Ejecutar Cloud STT en una variedad de archivos de muestra que contienen diálogo
Costos
En este instructivo, se usan los siguientes componentes facturables de Google Cloud:
Puedes usar la calculadora de precios para generar una estimación de costos según el uso previsto.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes Acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes Acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init - Extraer los datos de audio de un archivo de video
- Extraer una sola pista monoaural de un archivo de audio de varias pistas
- Transcodificar de un códec de audio a otro que sea más adecuado para Cloud STT
- Reproducir un archivo de audio o video
- Convertir archivos de audio en uno de los códecs reconocidos por Cloud STT
- Convertir las tasas de bits y de muestreo del archivo de audio en parámetros de configuración óptimos para el análisis con Cloud STT
- Extraer transmisiones o pistas de audio individuales de un archivo de transmisión de transporte o un archivo de video
- Dividir archivos estéreo en dos archivos monoaurales
- Dividir archivos de audio 5.1 en seis archivos monoaurales
- Aplicar ecualización y filtrado para mejorar la claridad del audio
- FLAC: Es un códec de audio libre sin pérdida.
- LINEAR16: Es un formato de modulación por impulsos codificados sin comprimir (PCM) que se usa en contenedores de archivos WAV, AIFF, AU y RAW.
- MULAW: Es un códec de PCM diseñado para telecomunicaciones en EE.UU. y Japón.
- AMR: Un códec adaptable de varias tasas diseñado para la voz
- AMR_WB: Una variación de banda ancha de AMR con el doble de ancho de banda de AMR
- OGG_OPUS: Es un códec con pérdida diseñado para aplicaciones de baja latencia.
- SPEEX_WITH_HEADER_BYTE: Es un código diseñado para aplicaciones de Voz sobre IP (VOIP).
-
In the Google Cloud console, activate Cloud Shell.
En Cloud Shell, instala la versión actual de FFMPEG:
sudo apt update sudo apt install ffmpegVerifica que FFmpeg esté instalada:
ffmpeg -versionSi se muestra un número de versión, la instalación se realizó con éxito.
Crea un directorio para los archivos del proyecto:
mkdir project_filesCrea un directorio para los archivos de salida que crearás en un paso posterior:
mkdir outputDescarga los archivos de audio de muestra:
gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* ~/project_files/Crea una variable de entorno para el nombre del bucket de Cloud Storage:
export GCS_BUCKET_PATH=gs://cloud-samples-data/speech/project_filesCrea una variable de entorno para la ruta de acceso del directorio de instancias de Cloud Shell que apunte a los archivos de audio de muestra descargados:
export PROJECT_FILES=~/project_filesEn Cloud Shell, revela los metadatos del archivo
HumptyDumptySample4416.flac:ffprobe $PROJECT_FILES/HumptyDumptySample4416.flacEste es el resultado:
Input #0, flac, from 'project_files/HumptyDumptySample4416.flac': Duration: 00:00:26.28, start: 0.000000, bitrate: 283 kb/s Stream #0:0: Audio: flac, 44100 Hz, mono, s16Este resultado indica los siguientes metadatos sobre el archivo:
- La duración del archivo de audio es de 26.28 segundos.
- La tasa de bits es de 283 KB por segundo.
- El formato del códec es FLAC.
- La tasa de muestreo es de 44.1 kHz.
- El archivo es un archivo mono de un solo canal.
- La profundidad de bits es de 16 bits (número entero con signo).
Revela los metadatos del archivo
HumptyDumptySampleStereo.flac:ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flacEste es el resultado:
Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac': Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s Stream #0:0: Audio: flac, 44100 Hz, stereo, s16Las diferencias entre este archivo y el anterior es que este un archivo estéreo que tiene una tasa de bits más alta (378 KB por segundo, en lugar de 283 KB por segundo) porque contiene una reproducción de dos canales en lugar de una pista mono. Todos los demás valores son iguales.
Debes verificar la cantidad de canales en un archivo de audio que deseas procesar con Cloud STT. Los archivos de audio deben tener solo un canal de audio. Para transcribir varios canales de audio dentro del mismo archivo, te recomendamos que ejecutes la secuencia de comandos como se describe más adelante en la sección Optimiza archivos de audio para el análisis.
Revela los metadatos de un archivo de mezcla de audio 5.1:
ffprobe $PROJECT_FILES/Alice_51_sample_mix.aifEste es el resultado:
Duration: 00:00:58.27, bitrate: 4610 kb/s Stream #0:0: Audio: pcm_s16be, 48000 Hz, 5.1, s16, 4608 kb/sDebido a que este archivo tiene un formato diferente al del archivo mono o estéreo, verás información adicional. En este caso, el audio está en formato PCM lineal, grabado a una tasa de muestreo de 44.1 kHz y una tasa de bits de 16 bits (número entero con signo, formato little-endian).
Observa la designación
5.1. La tasa de datos de 4,608 Kbits por segundo en este archivo es mucho mayor que la de cualquiera de los ejemplos anteriores, ya que el archivo de audio contiene 6 pistas de audio.Más adelante en este instructivo, verás cómo este archivo causa errores cuando intentas transcribirlo con Cloud STT. Y, lo más importante, verás cómo optimizar el archivo para usarlo con Cloud STT sin errores.
En Cloud Shell, ejecuta Cloud STT en el archivo
HumptyDumptySampleStereo.flac:gcloud ml speech recognize $PROJECT_FILES/HumptyDumptySampleStereo.flac \ --language-code='en-US'Este es el resultado:
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid audio channel count
Aunque el formato de códec, la tasa de muestreo y la profundidad de bits del archivo son correctos, el descriptor estéreo significa que hay dos pistas en el archivo de audio. Por lo tanto, ejecutar Cloud STT genera un error
Invalid audio channel count.Ejecuta el comando
ffprobeen el archivo:ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flacEste es el resultado:
Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Esto revela que el error de Cloud STT se produce cuando se intenta procesar un archivo estéreo
En Cloud Shell, divide el archivo estéreo
HumptyDumptySampleStereo.flacen 2 archivos mono:ffmpeg -i $PROJECT_FILES/HumptyDumptySampleStereo.flac -filter_complex "[0:a]channelsplit=channel_layout=stereo[left][right]" -map "[left]" output/HumptyDumptySample_FL.flac -map "[right]" output/HumptyDumptySample_FR.flacEl resultado es el siguiente, que muestra los archivos mono
HumptyDumptySample_FL.flac(canal frontal izquierdo) yHumptyDumptySample_FR.flac(canal frontal derecho).Output #0, flac, to 'HumptyDumptySample_FL.flac': Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac': Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s Stream #0:0: Audio: flac, 44100 Hz, stereo, s16 Stream mapping: Stream #0:0 (flac) -> channelsplit channelsplit:FL -> Stream #0:0 (flac) channelsplit:FR -> Stream #1:0 (flac) (...) Output #0, flac, to 'HumptyDumptySample_FL.flac': (...) Stream #0:0: Audio: flac, 44100 Hz, 1 channels (FL), s16, 128 kb/s (...) Output #1, flac, to 'HumptyDumptySample_FR.flac': (...) Stream #1:0: Audio: flac, 44100 Hz, 1 channels (FR), s16, 128 kb/s (...) size=918kB time=00:00:26.27 bitrate= 286.2kbits/s speed= 357x video:0kB audio:1820kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknownEste archivo ahora está optimizado para Cloud STT.
En Cloud Shell, divide el archivo
Alice_51_sample_mix.aifen archivos FLAC y especifica los nombres de archivo de salida para cada canal:ffmpeg -i $PROJECT_FILES/Alice_51_sample_mix.aif -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" output/Alice_FL.flac -map "[FR]" output/Alice_FR.flac -map "[FC]" output/Alice_FC.flac -map "[LFE]" output/Alice_LFE.flac -map "[BL]" output/Alice_BL.flac -map "[BR]" output/Alice_BR.flacEste es el resultado:
Duration: 00:00:55.00, bitrate: 4235 kb/s Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 5.1, s16, 4233 kb/s Stream mapping: Stream #0:0 (pcm_s16le) -> channelsplit channelsplit:FL -> Stream #0:0 (flac) channelsplit:FR -> Stream #1:0 (flac) channelsplit:FC -> Stream #2:0 (flac) channelsplit:LFE -> Stream #3:0 (flac) channelsplit:BL -> Stream #4:0 (flac) channelsplit:BR -> Stream #5:0 (flac) Press [q] to stop, [?] for help Output #0, flac, to 'Alice_FL.flac': (...) Stream #0:0: Audio: flac, 44100 Hz, 1 channels (FL), s16, 128 kb/s (...) Output #1, flac, to 'output/Alice_FR.flac': (...) Stream #1:0: Audio: flac, 44100 Hz, 1 channels (FR), s16, 128 kb/s (...) Output #2, flac, to 'output/Alice_FC.flac': (...) Stream #2:0: Audio: flac, 44100 Hz, mono, s16, 128 kb/s (...) Output #3, flac, to 'output/Alice_LFE.flac': (...) Stream #3:0: Audio: flac, 44100 Hz, 1 channels (LFE), s16, 128 kb/s (...) Output #4, flac, to 'output/Alice_BL.flac': (...) Stream #4:0: Audio: flac, 44100 Hz, 1 channels (BL), s16, 128 kb/s (...) Output #5, flac, to 'output/Alice_BR.flac': (...) Stream #5:0: Audio: flac, 44100 Hz, 1 channels (BR), s16, 128 kb/s (...)Haz clic en el siguiente archivo para escucharlo. Este archivo está en el bucket de Cloud Storage y, cuando haces clic en el nombre, el archivo se reproduce en una nueva pestaña del navegador.
Alice_mono_downmix.flac
Escucha el FC (archivo solo de canal central) que acabas de crear. (El diálogo comienza después de unos segundos de silencio).
Alice_FC.flac
Observa la diferencia en la claridad en comparación con el archivo anterior. Esta pista se basa solo en la parte del diálogo de la mezcla.
Haz clic en el siguiente archivo para reproducirlo:
HumptyDumptySample4416.flac
Este archivo tiene una frecuencia de 44.1 kHz y una profundidad de bits de 16 bits. Observa la fidelidad clara y sin distorsiones, y la inteligibilidad de este archivo. Este es un buen candidato para una transcripción con Cloud STT.
Reproduce el siguiente archivo de video de muestra con formato 5.1 para escuchar una mezcla envolvente sin diálogo en todos los canales, excepto en el canal central:
sample_51_mix_movie.mp4
El archivo está diseñado para reproducirse en un sistema de audio 5.1. Si solo usas auriculares o un sistema de dos canales, es posible que no se escuchen todos los canales durante la reproducción. (Para poder escuchar los seis canales, la reproducción debería decodificarse en un sistema 5.1 o tendrías que crear una mezcla reducida estéreo de dos canales).
Lo ideal es que uses el canal de solo diálogo para Cloud STT. El archivo de muestra tiene audio sin diálogo en cinco canales y diálogo en un canal. Más adelante, en la sección Optimiza archivos de audio para el análisis, aprenderás a extraer los seis canales de audio mono individuales codificados en el archivo 5.1 para escuchar cada pista. Esto te permite aislar el canal de solo diálogo (en general, el canal central o central frontal) de los canales sin diálogo para mejorar la capacidad de Cloud STT de transcribir el archivo.
En cada archivo de la tabla anterior, haz clic en el nombre del archivo para escucharlo. (El reproductor de audio se abre en una nueva pestaña del navegador). Observa la diferencia de calidad cuando se disminuye la tasa de muestreo.
La fidelidad de los archivos de 16 bits se reduce en las tasas de muestreo más bajas y la relación señal/ruido se reduce de forma drástica en las versiones de archivo de 8 bits debido a los errores de cuantización. El último archivo de la tabla es un archivo original de 8 kHz y 8 bits que posee un aumento de la tasa de muestreo a 44.1 kHz y 16 bits. Ten en cuenta que la calidad del sonido es la misma que la del archivo de 8 kHz y 8 bits.
En Cloud Shell, examina los metadatos del archivo
HumptyDumptySampleStereo.flac:ffprobe $PROJECT_FILES/HumptyDumptySampleStereo.flacEste es el resultado:
Input #0, flac, from 'project_files/HumptyDumptySampleStereo.flac': Duration: 00:00:26.28, start: 0.000000, bitrate: 378 kb/s Stream #0:0: Audio: flac, 44100 Hz, stereo, s16El resultado muestra lo siguiente:
- La duración del archivo es de 26 segundos y 28 fotogramas. Esta información es útil
para casos de uso avanzados, por ejemplo, si deseas procesar archivos
de más de 1 minuto con
el comando
gcloud speech recognize-long-running. - La tasa de bits del archivo es de 378 kb/s.
- La cantidad de transmisiones en el archivo es 1. (Esta cifra es diferente de la cantidad de canales).
- La tasa de muestreo del archivo es 44.1 kHz.
- La cantidad de canales de audio es 2 (estéreo).
- La profundidad de bits del archivo es 16 bits.
Una transmisión de transporte puede contener varias transmisiones, incluidos audio, video y metadatos. Cada uno de ellos tiene características diferentes, como la cantidad de canales de audio por transmisión, el códec de las transmisiones de video y la cantidad de fotogramas por segundo de las transmisiones de video.
Ten en cuenta que los metadatos revelan que se trata de un archivo estéreo. Esto es importante, ya que la cantidad predeterminada de canales de audio recomendados para el análisis con Cloud STT es un canal mono.
- La duración del archivo es de 26 segundos y 28 fotogramas. Esta información es útil
para casos de uso avanzados, por ejemplo, si deseas procesar archivos
de más de 1 minuto con
el comando
Transcribe el archivo de diálogo
Alice_FC.flaclimpio:gcloud ml speech recognize ~/output/Alice_FC.flac \ --language-code='en-US' --format=textEspera unos segundos para completar la transcripción. Este es el resultado:
results[0].alternatives[0].confidence: 0.952115 results[0].alternatives[0].transcript: the walrus and the carpenter were walking close at hand they whip like anything to see such quantities of sand if this were only cleared away they said it would be grand results[1].alternatives[0].confidence: 0.968585 results[1].alternatives[0].transcript: " if 7 Maids with seven mops swept it for half a year do you suppose the walrus said that they could get it clear I doubt it said the Carpenter and shed a bitter tear" results[2].alternatives[0].confidence: 0.960146 results[2].alternatives[0].transcript: " oysters come and walk with us the walrus did beseech a pleasant walk a pleasant talk along the Briny Beach we cannot do with more than four to give a hand to each the eldest oyster look at him but never a word he said the eldest oyster winked his eye and shook his heavy head"
En Cloud Shell, transcribe el archivo
Alice_mono_downmix.flac:gcloud ml speech recognize $PROJECT_FILES/Alice_mono_downmix.flac \ --language-code='en-US' --format=textEste es el resultado:
results[0].alternatives[0].confidence: 0.891331 results[0].alternatives[0].transcript: the walrus and the carpenter Milwaukee Corsicana they reflect anything to see such quantity if this were only results[1].alternatives[0].confidence: 0.846227 results[1].alternatives[0].transcript: " it's Sunday 7th March 23rd happy few supposed former said that they could get it clear I doubt it to the doctor and she said it did it to just come and walk with us" results[2].alternatives[0].confidence: 0.917319 results[2].alternatives[0].transcript: " along the Briny Beach it cannot do with more than four to give a hand to each the eldest oyster look at him but he said it was poised to Rich's eye and shook his head"
Los resultados de este análisis no son precisos debido a los sonidos adicionales que enmascaran el diálogo. El nivel de confianza de la transcripción es inferior al 85%. Como puedes ver en el resultado, el texto no coincide con el diálogo de la grabación con la precisión que debería.
Haz clic en los nombres de archivo en la siguiente tabla para escuchar la muestra y observa la diferencia en la calidad. Cada vez que haces clic en el nombre de un archivo, el archivo de audio se reproduce en una nueva pestaña del navegador.
Nombre del archivo de audio Especificaciones del archivo Speech_11k8b.flacTasa de muestreo de 11,025 Hz, profundidad de 8 bits Speech_16k8b.flacTasa de muestreo de 16 kHz, profundidad de 8 bits Speech_16k16b.flacTasa de muestreo de 16 kHz, profundidad de 16 bits Speech_441k8b.flacTasa de muestreo de 44,100 Hz, profundidad de 8 bits Speech_441k16b.flacTasa de muestreo de 44,100 Hz, profundidad de 16 bits En Cloud Shell, transcribe el archivo
Speech_11k8b.flac, que representa la calidad de audio más baja en este ejemplo:gcloud ml speech recognize $PROJECT_FILES/Speech_11k8b.flac \ --language-code='en-US' --format=textEste es el resultado:
results[0].alternatives[0].confidence: 0.77032 results[0].alternatives[0].transcript: number of Pentacle represent results[1].alternatives[0].confidence: 0.819939 results[1].alternatives[0].transcript: " what people can get in trouble if we take a look at the X again"
Transcribe el archivo
Speech_441k16b.flac, que se grabó con una calidad mucho mayor:gcloud ml speech recognize $PROJECT_FILES/Speech_441k16b.flac \ --language-code='en-US' --format=textEste es el resultado:
results[0].alternatives[0].confidence: 0.934018 results[0].alternatives[0].transcript: that gives us the number of pixels per inch when magnified to a 40-foot screen size now we take that number and multiply it by the distance between our eyes the interocular distance of 2 and 1/2 inch number of 10 pixels in other words on a 40-foot screen 10 pixels of information represents 2 and 1/2 in anything farther apart than that and positive Parallax is going to start to force the eyes to rotate that word in order to use the image results[1].alternatives[0].confidence: 0.956892 results[1].alternatives[0].transcript: " where people tend to get in trouble is by looking at these images on a small monitor now if we take a look at the same math using a smaller monitor in this case 60 in the screen size in the resolution to multiply It Again by the distance between our eyes we end up with eighty pixels of Divergence on a monitor which equals two and a half inches so on the monitor things might look fine but when magnified up to the larger screen in this case for defeat we've created a situation that's eight times what we can stand to look at its very painful and should be avoided"
Observa la diferencia de confianza en el resultado de los dos ejemplos. El primer archivo (
Speech_11k8b.flac), que se grabó a 11 kHz con una profundidad de 8 bits, tiene un nivel de confianza inferior al 78%. El segundo archivo tiene un nivel de confianza de alrededor del 94%.Opcionalmente, puedes transcribir los demás archivos que aparecen en la tabla del paso 1 para comparar entre la exactitud de la profundidad de bits y la tasa de muestreo del archivo de audio.
En Cloud Shell, extrae 6 canales mono de un archivo de película 5.1 y convierte los archivos individuales en formato FLAC:
ffmpeg -i $PROJECT_FILES/sample_51_mix_movie.mp4 -filter_complex "channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]" -map "[FL]" output/sample_FL.flac -map "[FR]" output/sample_FR.flac -map "[FC]" output/sample_FC.flac -map "[LFE]" output/sample_LFE.flac -map "[BL]" output/sample_BL.flac -map "[BR]" output/sample_BR.flacCon este comando, se extraen los siguientes archivos en el directorio de salida:
sample_BL.flac sample_BR.flac sample_FC.flac sample_FL.flac sample_FR.flac sample_LFE.flac
Verifica los metadatos del archivo de muestra:
ffprobe $PROJECT_FILES/Speech_48kFloat.wavEste es el resultado:
Duration: 00:00:05.12, bitrate: 1536 kb/s Stream #0:0: Audio: pcm_f32le ([3][0][0][0] / 0x0003), 48000 Hz, mono, flt, 1536 kb/s
Los valores de metadatos
pcm_f32leyfltindican que este archivo tiene una tasa de bits de punto flotante. Debes convertir un archivo WAV con tasa de bits de punto flotante en un formato de número entero con signo.Convierte la tasa de bits del archivo en un formato de número entero con signo:
ffmpeg -i $PROJECT_FILES/Speech_48kFloat.wav -c:a pcm_s16le output/Speech_48k16bNonFloatingPoint.wavCon este comando, se crea un nuevo archivo WAV con una tasa de bits de número entero con signo.
Examina los metadatos del archivo recién creado:
ffprobe ~/output/Speech_48k16bNonFloatingPoint.wavEste es el resultado:
Duration: 00:00:05.12, bitrate: 768 kb/s Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 1 channels, s16, 768 kb/s
Los metadatos ahora muestran que la tasa de bits en el archivo convertido está en un formato de número entero con signo (little-endian), como se muestra en las designaciones
pcm_s16leys16.En una terminal de tu computadora local, instala la herramienta FFmpeg:
sudo apt update sudo apt install ffmpegDescarga los archivos de muestra a tu máquina local:
gcloud storage cp gs://cloud-samples-data/speech/project_files/*.* local_destination_path
Reemplaza local_destination_path por la ubicación en la que colocarás los archivos de muestra.
Establece la variable de entorno
LOCAL_PATHen la ubicación de tu computadora en la que descargaste los archivos de muestra:export LOCAL_PATH=local_destination_path
Reemplaza local_destination_path por la ruta de acceso que figura en el paso anterior.
En la terminal, usa el comando
ffplaypara escuchar un archivo de audio de muestra:- Archivo de audio:
ffplay$LOCAL_PATH/HumptyDumpty4416.flac - Archivo de video:
ffplay $LOCAL_PATH/sample_51_mix_movie.mp4 - Reproducción de buckets de Cloud Storage:
ffplay$GCS_BUCKET_PATH/HumptyDumpty4416.flac
Experimenta en tu terminal local con los ejemplos con los que trabajaste antes en este instructivo. Esto te ayudará a comprender mejor cómo usar Cloud STT.
- Archivo de audio:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- Consulta la documentación de Cloud STT .
- Lee la documentación de los comandos speech recognize y speech recognize-long-running.
- Trabaja en el codelab de transcripción de voz a texto con la API de Cloud Speech-to-Text.
En este instructivo, debes usar Cloud Shell para realizar los procedimientos, como copiar datos de un bucket de Cloud Storage a la sesión de Cloud Shell. Cloud Shell es un entorno de shell con Google Cloud CLI ya instalada. Usa gcloud CLI en varios de los pasos de este instructivo. También debes instalar el software y los archivos de audio de muestra en tu máquina local y ejecutar estos mismos ejercicios desde la terminal, como se describe en la sección Ejecuta ejemplos del instructivo en una terminal local más adelante.
Descripción general
En este instructivo, usarás FFMPEG, una herramienta de código abierto para grabar, convertir y transmitir audio y video. En el instructivo, se proporciona información adicional sobre esta herramienta más adelante.
Información sobre atributos de archivos de audio
En esta sección, se describen los tipos de archivos de audio típicos, las tasas de muestreo, las profundidades de bits y los medios de grabación que se encuentran en los flujos de trabajo de producción y posproducción de medios.
Para obtener los mejores resultados de Cloud STT, debes asegurarte de que los archivos que se usan en la transcripción sean archivos monoaurales (mono) que cumplan con ciertas especificaciones mínimas, como se describe más adelante. Si los archivos no cumplen con las especificaciones, es posible que debas generar archivos modificados. Por ejemplo, es posible que debas hacer lo siguiente:
Tasa de muestreo (rango de frecuencia)
La tasa de muestreo determina el rango de frecuencia del archivo de audio. Se basa en la cantidad de muestras por segundo que constituyen el archivo de audio. Por lo general, la frecuencia reproducible más alta de un archivo de audio digital es equivalente a la mitad de la tasa de muestreo. Por ejemplo, la frecuencia más alta que se puede reproducir desde un archivo de audio de 44.1 kHz es alrededor de 22 kHz. Esto está en el extremo superior o más allá del rango de frecuencia de respuesta de un oyente típico.
Las tasas de muestreo en telefonía y telecomunicaciones tienden a estar en el rango entre 8 kHz y 16 kHz. Este instructivo se centra en formatos específicos para la industria del entretenimiento y los medios de comunicación, que suelen superar los 16 kHz. Para obtener más información sobre telefonía y otras aplicaciones de sonido, consulta Transcribe audio telefónico con modelos mejorados
Recomendamos una tasa de muestreo de al menos 16 kHz en los archivos de audio que usas para la transcripción con Cloud STT. Las tasas de muestreo que se encuentran en los archivos de audio suelen ser de 16 kHz, 32 kHz, 44.1 kHz y 48 kHz. Debido a que la inteligibilidad se ve muy afectada por el rango de frecuencia, en especial en las frecuencias más altas, una tasa de muestreo inferior a 16 kHz da como resultado un archivo de audio que tiene poca o nula información por encima de 8 kHz. Esto puede evitar que Cloud STT transcriba de forma correcta el audio hablado. La inteligibilidad de voz requiere información a lo largo del rango de 2 kHz a 4 kHz, aunque los armónicos (varios) de esas frecuencias en un rango mayor también son importantes para preservar la inteligibilidad de voz. Por lo tanto, se recomienda mantener la tasa de muestreo en un mínimo de 16 kHz.
Es posible convertir de una tasa de muestreo en otra. Sin embargo, no es beneficioso realizar un aumento de la tasa de muestreo del audio, ya que la información del rango de frecuencia está limitada por la tasa de muestreo más baja y no se puede recuperar mediante la conversión a una tasa de muestreo más alta. Esto significa que un aumento de la tasa de muestreo de 8 kHz a 44.1 kHz limitaría el rango de frecuencia reproducible a la mitad de la tasa de muestreo más baja, o alrededor de 4 kHz. En este instructivo, escucharás archivos de audio grabados con varias tasas de muestreo y profundidades de bits para que puedas escuchar la diferencia.
Profundidad de bits (rango dinámico)
La profundidad de bits del archivo de audio determina el rango de los sonidos más silenciosos a los más ruidosos, así como la relación señal/ruido del archivo. El rango dinámico tiene un efecto menor en la calidad de la transcripción que la frecuencia de respuesta, pero las profundidades de bits de 8 bits o menos pueden causar un ruido excesivo de cuantización en la pista de audio, lo que dificulta la transcripción precisa. (Los errores de cuantización son errores de redondeo entre la señal de entrada analógica y la asignación del valor de salida digital de esa señal. Los errores causan una distorsión audible que afecta directamente la fidelidad del sonido). La profundidad de bits recomendada de los archivos para el análisis con Cloud STT es de 16 bits o más. Al igual que con la frecuencia de muestreo, no existe ninguna ventaja en convertir la profundidad de bits de 8 a 16 bits, porque la información del rango dinámico está limitada al formato original de 8 bits.
Medio de grabación
El medio de grabación original también puede afectar la calidad del archivo de audio. Por ejemplo, el contenido de audio que se grabó en principio en cinta magnética puede tener un silbido de fondo incorporado en el archivo. En algunos casos, es posible que debas preprocesar el audio ruidoso para obtener mejores resultados en el proceso de transcripción cuando uses Cloud STT. El tratamiento de las grabaciones ruidosas y la interferencia de ruido de fondo están fuera del alcance de este instructivo. Para obtener más información, consulta Prácticas recomendadas en la documentación de Cloud STT.
Introducción a FFmpeg
En este instructivo, debes usar FFmpeg para trabajar con archivos de audio. El conjunto de herramientas FFmpeg ofrece una amplia variedad de funciones que incluyen las siguientes:
También puedes usar la función ffprobe de FFMPEG para revelar los metadatos asociados a un archivo multimedia. Esto es importante cuando quieres diagnosticar problemas relacionados con los formatos y tipos de archivos para el análisis de aprendizaje automático.
Códecs que reconoce Cloud STT
Si bien Cloud STT reconoce varios formatos de archivo de audio, es posible que no lea ni analice ciertos códecs de forma correcta. En el instructivo, se muestra cómo puedes verificar que un contenido esté en uno de los formatos de archivo compatibles.
En el instructivo, debes leer la información de metadatos para revelar y corregir posibles problemas antes de usar Cloud STT. Las mismas herramientas te permiten convertir el archivo en un formato compatible si descubres una incompatibilidad.
Cloud STT reconoce los siguientes códecs:
Es importante comprender que los códecs y los formatos de archivo no son lo mismo. La extensión de nombre de archivo no siempre indica que el códec usado para crear el archivo se pueda leer con Cloud STT.
Este instructivo se centra en los códecs FLAC y LINEAR16, ya que suelen encontrarse en entornos de flujo de trabajo multimedia. Ambos son formatos sin pérdida.
Si usas archivos WAV (que están en formato PCM lineal sin comprimir) con
Cloud STT, los archivos deben tener una profundidad máxima de 16 bits y estar codificados
en un formato que no sea de punto flotante. La extensión de nombre de archivo .wav no garantiza
que Cloud STT pueda leer el archivo. En la sección Optimiza archivos de audio
para
el análisis
de este instructivo, se proporciona un ejemplo de cómo convertir el archivo de
punto flotante en uno con profundidad de bits de número entero (con signo) con el objetivo de transcribir el archivo
en Cloud STT.
Inicializa tu entorno
Antes de realizar las tareas de este instructivo, debes inicializar un entorno. Para eso, debes instalar FFmpeg, configurar algunas variables de entorno y descargar archivos de audio. Usa archivos multimedia almacenados en una instancia de Cloud Shell y en un bucket de Cloud Storage. Usar diferentes fuentes te permite trabajar con diferentes funciones de Cloud STT.
En esta sección, debes instalar FFmpeg y configurar variables de entorno que apunten a las ubicaciones de almacenamiento de datos de muestra en el almacenamiento de la instancia de Cloud Shell y en un bucket de Cloud Storage. Los archivos multimedia son los mismos en ambas ubicaciones y algunos de los ejemplos de este instructivo acceden a los archivos desde Cloud Shell y desde el bucket de Cloud Storage. Puedes instalar FFMPEG en una máquina local y ejecutar estos mismos ejercicios, como se describe más adelante en la sección Ejecuta ejemplos en una terminal local.
Examina metadatos de archivos multimedia
Cuando analizas archivos de audio o video con Cloud STT, deberás conocer los detalles de los metadatos del archivo. Esto te ayuda a identificar inconsistencias o parámetros incompatibles que podrían causar problemas.
En esta sección, debes usar el comando ffprobe en FFMPEG para examinar los metadatos
de varios archivos multimedia con el objetivo de comprender las especificaciones de un archivo.
Optimiza los archivos de audio para su análisis
Como se mencionó antes, cuando usas Cloud STT, los archivos de audio deben ser archivos mono de un solo canal para evitar errores en el proceso de transcripción. En la siguiente tabla, se muestran los formatos de audio comunes y el proceso de conversión. De este modo, convertirás archivos mono para su procesamiento.
| Formato de audio actual | Proceso de conversión | Formato de audio de salida |
|---|---|---|
| Mono | No se necesita extracción | FLAC o LINEAR16 |
| Estéreo | División en 2 archivos mono o mezcla en un archivo mono | FLAC o LINEAR16 |
| Varias pistas (5.1) | División en 6 archivos mono | FLAC o LINEAR16 |
| Audio o video de varias transmisiones | División en archivos mono separados | FLAC o LINEAR16 |
Para procesar archivos con varias pistas de audio, debes extraer pistas mono del archivo estéreo. Para eso, usa FFmpeg, o bien otras herramientas de edición de audio. Como alternativa, puedes automatizar el proceso como se describe en la sección Transcribe audio con varios canales de la documentación de Cloud STT. Con este instructivo, explorarás la opción de usar FFmpeg para extraer pistas mono individuales del archivo estéreo.
Como se muestra en la sección anterior, puedes usar el comando ffprobe para determinar
cuántos canales de audio contiene un archivo y, luego, usar el comando ffmpeg para
extraer o convertir el archivo en un formato mono, si es necesario.
Obtén la vista previa de un error en función de un formato no válido
Para ver cómo un formato incorrecto afecta la transcripción, puedes intentar ejecutar Cloud STT en un archivo que no esté en formato mono.
Si deseas obtener información para administrar archivos estéreo con la escritura de secuencias de comandos, consulta Transcribe audio con varios canales en la documentación de Cloud STT.
Divide un archivo estéreo en varios archivos mono FLAC
Un ejemplo de cómo evitar el error de varias pistas es extraer dos pistas mono de un archivo de audio estéreo. Las pistas resultantes están en formato FLAC y se escriben en el directorio de salida. Cuando extraes dos archivos mono de un archivo estéreo, es una buena idea crear nombres para los archivos extraídos que indiquen la ubicación del canal del archivo original. Por ejemplo, en el siguiente procedimiento, designas el canal izquierdo con el sufijo FL y el canal derecho con el sufijo FR.
Si la muestra de audio a transcribir está en ambos canales, solo se usa un canal para la transcripción. Sin embargo, si se grabaron distintos hablantes en canales diferentes, se recomienda transcribir los canales por separado. Cloud STT puede reconocer varias voces en una sola grabación. Sin embargo, cuando aíslas cada voz en canales separados, se obtienen niveles de confianza más altos en la transcripción. (El valor de confianza también se conoce como tasa de error de palabras o WER, en el reconocimiento de voz). Si deseas obtener más información para trabajar con varias voces en la misma grabación, consulta Separa diferentes hablantes en una grabación de audio en la documentación de Cloud STT.
Divide un archivo de audio 5.1 en varios archivos mono
Otro ejemplo de cómo optimizar los archivos de audio es dividir los archivos de audio 5.1 en archivos mono FLAC individuales. Cuando se hace referencia a canales en una mezcla multicanal, como una mezcla 5.1, las designaciones de nombre de archivo suelen ser diferentes a las de los archivos estéreo o mono. Por lo general, el archivo del canal izquierdo se designa como FL, para frontal izquierdo, y el canal derecho se designa como FR, para frontal derecho. Los canales restantes de una mezcla 5.1 se denominan aquí como FC para frontal central, LFE para efectos de baja frecuencia, BL para posterior izquierdo (también conocido como sonido envolvente izquierdo) y BR para posterior derecho (también conocido como sonido envolvente derecho). Estas no son designaciones estándar, pero son una práctica convencional para identificar el origen de un archivo de sonido.
Por lo general, en los archivos de audio multicanal para imágenes en movimiento y televisión, el diálogo principal se transmite con el canal frontal central. Por lo general, este es el archivo que debes elegir cuando usas Cloud STT, ya que suele incluir la mayor parte del diálogo de la mezcla.
En un entorno de posproducción, los elementos principales del diálogo, la música y los efectos se dividen en grupos llamados raíces para que todo el diálogo de una mezcla se mantenga separado de la música y los efectos hasta que esté listo. Debido a que la raíz del diálogo solo contiene diálogo, Cloud STT da mejores resultados cuando las transcribe en lugar de intentar extraer el canal central de una mezcla final. Esto se debe a que un canal central extraído puede mezclarse con sonidos que no son de diálogo, lo que provoca que la inteligibilidad se vea afectada.
Prueba la calidad de los archivos de audio
Antes de convertir los archivos multimedia con Cloud STT, es una buena idea escuchar los archivos para determinar si tienen anomalías en la calidad del sonido que podrían impedir que las herramientas del AA proporcionen resultados precisos. En esta sección, haz clic en los nombres de los archivos para reproducirlos en el navegador. (Recomendamos que uses auriculares o altavoces de amplio rango dinámico).
Escucha el audio de un archivo de video
Prueba el mismo archivo con distintas tasas de muestreo
En la siguiente tabla, se enumeran varias versiones del mismo archivo de audio para que escuches, cada una con una profundidad de bits y una tasa de muestreo diferentes.
| Archivo de audio | Tasa de muestreo y profundidad de bits |
|---|---|
HumptyDumptySample4416.flac |
PCM lineal de 44.1 kHz y 16 bits |
HumptyDumptySample2216.flac |
PCM lineal de 22 kHz y 16 bits |
HumptyDumptySample1616.flac |
PCM lineal de 16 kHz y 16 bits |
HumptyDumptySample1116.flac |
PCM lineal de 11 kHz y 16 bits |
HumptyDumptySample0808.flac |
PCM lineal de 8 kHz y 8 bits |
HumptyDumptyUpSample4416.flac |
PCM lineal de 44.1 kHz y 16 bits (aumento de la tasa de muestreo) |
HumptyDumptySample4408.flac |
PCM lineal de 44.1 kHz y 8 bits |
HumptyDumptySample4408to16.flac |
PCM lineal de 44.1 kHz y 16 bits (conversión ascendente) |
Transcribe archivos con Cloud STT
Una vez que hayas extraído los archivos mono, puedes usar Cloud STT para
transcribir las pistas de audio. Con el comando gcloud ml speech puedes
invocar la API de Cloud STT.
Transcribe una pista “sucia”
Es posible que tengas archivos de audio de personas hablando que tengan otros elementos de sonido mezclados en el diálogo. A menudo, estas pistas se denominan “sucias” en comparación con la pista de diálogo “limpia” que no tiene otros elementos en la mezcla. Aunque Cloud STT puede reconocer la voz en entornos ruidosos, es posible que los resultados sean menos precisos que los de las pistas limpias. También es posible que se requiera un filtrado y procesamiento de audio adicionales para mejorar la inteligibilidad del diálogo antes de analizar el archivo con Cloud STT.
En esta sección, transcribes una mezcla mono del archivo de audio 5.1 que analizamos en el ejemplo anterior.
Transcribe archivos de audio con diferentes tasas de muestreo y profundidades de bits
Para comprender mejor cómo la tasa de muestreo y la profundidad de bits afectan la transcripción, en esta sección, transcribes el mismo archivo de audio grabado con una variedad de tasas de muestreo y profundidades de bits. Esto te permite ver el nivel de confianza de Cloud STT y su relación con la calidad de sonido general.
En la siguiente tabla, se muestra un resumen del resultado de Cloud STT para cada uno de los archivos que aparecen en la tabla del paso 1 del procedimiento anterior. Observa la diferencia en los resultados del valor de confianza para cada tipo de archivo (es posible que los resultados varíen un poco). Las transcripciones de los archivos de audio con las tasas de bits y de muestreo más bajas tienden a tener resultados de confianza menores debido a la calidad de sonido inferior.
| Nombre del archivo de audio | Confianza (sección uno) | Confianza (sección dos) |
|---|---|---|
Speech_11k8b.flac |
0.770318 | 0.81994 |
Speech_16k8b.flac |
0.935356 | 0.959684 |
Speech_16k16b.flac |
0.945423 | 0.964689 |
Speech_44.1k8b.flac |
0.934017 | 0.956892 |
Speech_44.1k16b.flac |
0.949069 | 0.961777 |
Optimiza archivos de video para su análisis
En esta sección del instructivo, se explican los pasos necesarios para extraer el audio 5.1 de un archivo de película.
Ejecuta ejemplos de instructivos en una terminal local
Puedes ejecutar todos los ejemplos de este instructivo desde una terminal en tu computadora local. Ejecutar los ejemplos de forma local proporciona una capacidad importante para reproducir
archivos de audio y video directamente con el comando ffplay (en lugar de
escucharlos en el navegador).
Soluciona problemas
Los errores se pueden producir por varios factores, por lo que vale la pena examinar algunos errores comunes y aprender a corregirlos. Es posible que haya varios errores en un archivo de audio determinado que impidan que se complete el proceso de transcripción.
El audio es demasiado largo
El comando gcloud speech recognize puede procesar archivos de hasta 1 minuto de duración. Por ejemplo, prueba el siguiente ejemplo:
gcloud ml speech recognize $PROJECT_FILES/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
Este es el resultado:
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.
El error se produce cuando intentas usar el comando speech recognize para procesar un
archivo que dure más de 1 minuto.
Para archivos de más de 1 minuto y menos de 80 minutos, puedes usar
el comando speech recognize-long-running. Para ver la longitud del archivo, puedes
usar el comando ffprobe, como en el siguiente ejemplo:
ffprobe $PROJECT_FILES/HumptyDumpty4416.flac
El resultado es similar a lo siguiente:
Duration: 00:04:07.91, start: 0.000000, bitrate: 280 kb/s Stream #0:0: Audio: flac, 44100 Hz, mono, s16
Ten en cuenta que el tiempo de ejecución del archivo de audio es de alrededor de 4 minutos y 8 segundos.
Lee archivos grandes desde tu computadora local
El comando speech recognize-long-running puede procesar archivos de hasta 1
minuto de duración desde la computadora local. Para ver dónde podrías encontrar un error, intenta usar el comando speech recognize-long-running en Cloud Shell para un archivo más largo:
gcloud ml speech recognize-long-running $PROJECT_FILES/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
Este es el resultado:
ERROR: (gcloud.ml.speech.recognize-long-running) INVALID_ARGUMENT: Request payload size exceeds the limit: 10485760 bytes.
Este error no se produce debido a la duración del audio, sino al tamaño del archivo en la máquina local. Cuando uses el comando recognize-long-running, el archivo debe estar en un bucket de Cloud Storage.
Para leer archivos de más de 1 minuto, usa recognize-long-running para leer un archivo de un bucket de Cloud Storage, como en el siguiente comando:
gcloud ml speech recognize-long-running $GCS_BUCKET_PATH/HumptyDumpty4416.flac \
--language-code='en-US' --format=text
Este proceso tarda unos minutos en completarse.
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o consérvalo y borra los recursos individuales.