1. Descripción general
La API de Speech-to-Text permite que los desarrolladores conviertan audio en texto en más de 125 idiomas y variantes mediante la aplicación de potentes modelos de redes neuronales en una API fácil de usar.
En este instructivo, te enfocarás en el uso de la API de Speech-to-Text con Python.
Qué aprenderás
- Cómo configurar tu entorno
- Cómo transcribir archivos de audio en inglés
- Cómo transcribir archivos de audio con marcas de tiempo de palabras
- Cómo transcribir archivos de audio en diferentes idiomas
Requisitos
Encuesta
¿Cómo usarás este instructivo?
¿Cómo calificarías tu experiencia en Python?
¿Cómo calificarías tu experiencia con los servicios de Google Cloud?
2. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.
- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como
PROJECT_ID
). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto. - Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
Inicia Cloud Shell
Si bien Google Cloud se puede operar de manera remota desde tu laptop, en este codelab usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
Activar Cloud Shell
- En la consola de Cloud, haz clic en Activar Cloud Shell
.
Si es la primera vez que inicias Cloud Shell, verás una pantalla intermedia que describe en qué consiste. Si apareció una pantalla intermedia, haz clic en Continuar.
El aprovisionamiento y la conexión a Cloud Shell solo tomará unos minutos.
Esta máquina virtual está cargada con todas las herramientas de desarrollo necesarias. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que mejora considerablemente el rendimiento de la red y la autenticación. Gran parte de tu trabajo en este codelab, si no todo, se puede hacer con un navegador.
Una vez que te conectes a Cloud Shell, deberías ver que estás autenticado y que el proyecto está configurado con tu ID del proyecto.
- En Cloud Shell, ejecuta el siguiente comando para confirmar que tienes la autenticación:
gcloud auth list
Resultado del comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Ejecuta el siguiente comando en Cloud Shell para confirmar que el comando de gcloud conoce tu proyecto:
gcloud config list project
Resultado del comando
[core] project = <PROJECT_ID>
De lo contrario, puedes configurarlo con el siguiente comando:
gcloud config set project <PROJECT_ID>
Resultado del comando
Updated property [core/project].
3. Configuración del entorno
Antes de comenzar a usar la API de Speech-to-Text, ejecuta el siguiente comando en Cloud Shell para habilitarla:
gcloud services enable speech.googleapis.com
Debería ver algo como esto:
Operation "operations/..." finished successfully.
Ya puedes usar la API de Speech-to-Text.
Navega a tu directorio principal:
cd ~
Crea un entorno virtual de Python para aislar las dependencias:
virtualenv venv-speech
Activa el entorno virtual:
source venv-speech/bin/activate
Instala IPython y la biblioteca cliente de la API de Speech-to-Text:
pip install ipython google-cloud-speech
Debería ver algo como esto:
... Installing collected packages: ..., ipython, google-cloud-speech Successfully installed ... google-cloud-speech-2.25.1 ...
Ya tienes todo listo para usar la biblioteca cliente de la API de Speech-to-Text.
En los siguientes pasos, usarás un intérprete de Python interactivo llamado IPython, que instalaste en el paso anterior. Para iniciar una sesión, ejecuta ipython
en Cloud Shell:
ipython
Debería ver algo como esto:
Python 3.9.2 (default, Feb 28 2021, 17:03:44) Type 'copyright', 'credits' or 'license' for more information IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help. In [1]:
Ya puedes realizar tu primera solicitud...
4. Transcribe archivos de audio
En esta sección, transcribirás un archivo de audio en inglés.
Copia el siguiente código en tu sesión de IPython:
from google.cloud import speech
def speech_to_text(
config: speech.RecognitionConfig,
audio: speech.RecognitionAudio,
) -> speech.RecognizeResponse:
client = speech.SpeechClient()
# Synchronous speech recognition request
response = client.recognize(config=config, audio=audio)
return response
def print_response(response: speech.RecognizeResponse):
for result in response.results:
print_result(result)
def print_result(result: speech.SpeechRecognitionResult):
best_alternative = result.alternatives[0]
print("-" * 80)
print(f"language_code: {result.language_code}")
print(f"transcript: {best_alternative.transcript}")
print(f"confidence: {best_alternative.confidence:.0%}")
Tómate un momento para estudiar el código y ver cómo usa el método de la biblioteca cliente recognize
para transcribir un archivo de audio*.* El parámetro config
indica cómo procesar la solicitud y el parámetro audio
especifica los datos de audio que se reconocerán.
Envía una solicitud:
config = speech.RecognitionConfig(
language_code="en",
)
audio = speech.RecognitionAudio(
uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)
response = speech_to_text(config, audio)
print_response(response)
Deberías ver el siguiente resultado:
-------------------------------------------------------------------------------- language_code: en-us transcript: how old is the Brooklyn Bridge confidence: 98%
Actualiza la configuración para habilitar la puntuación automática y enviar una nueva solicitud:
config.enable_automatic_punctuation = True
response = speech_to_text(config, audio)
print_response(response)
Deberías ver el siguiente resultado:
-------------------------------------------------------------------------------- language_code: en-us transcript: How old is the Brooklyn Bridge? confidence: 98%
Resumen
En este paso, pudiste transcribir un archivo de audio en inglés usando diferentes parámetros y, luego, imprimir el resultado. Obtén más información para transcribir archivos de audio.
5. Obtén marcas de tiempo en las palabras
Speech-to-Text puede detectar compensaciones horarias (marcas de tiempo) para el audio transcrito. Las compensaciones horarias muestran el principio y el final de cada palabra pronunciada en el audio suministrado. Un valor de compensación horaria representa la cantidad de tiempo que transcurrió desde el comienzo del audio, en incrementos de 100 ms.
Para transcribir un archivo de audio con marcas de tiempo de palabras, copia lo siguiente en tu sesión de IPython para actualizar el código:
def print_result(result: speech.SpeechRecognitionResult):
best_alternative = result.alternatives[0]
print("-" * 80)
print(f"language_code: {result.language_code}")
print(f"transcript: {best_alternative.transcript}")
print(f"confidence: {best_alternative.confidence:.0%}")
print("-" * 80)
for word in best_alternative.words:
start_s = word.start_time.total_seconds()
end_s = word.end_time.total_seconds()
print(f"{start_s:>7.3f} | {end_s:>7.3f} | {word.word}")
Tómate un momento para estudiar el código y ver cómo transcribe un archivo de audio con marcas de tiempo de palabras*.* El parámetro enable_word_time_offsets
le indica a la API que muestre las compensaciones horarias para cada palabra (consulta el documento para obtener más detalles).
Envía una solicitud:
config = speech.RecognitionConfig(
language_code="en",
enable_automatic_punctuation=True,
enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)
response = speech_to_text(config, audio)
print_response(response)
Deberías ver el siguiente resultado:
-------------------------------------------------------------------------------- language_code: en-us transcript: How old is the Brooklyn Bridge? confidence: 98% -------------------------------------------------------------------------------- 0.000 | 0.300 | How 0.300 | 0.600 | old 0.600 | 0.800 | is 0.800 | 0.900 | the 0.900 | 1.100 | Brooklyn 1.100 | 1.400 | Bridge?
Resumen
En este paso, pudiste transcribir un archivo de audio en inglés con marcas de tiempo de palabras y, luego, imprimir el resultado. Obtén más información sobre la obtención de marcas de tiempo de palabras.
6. Transcribe diferentes idiomas
La API de Speech-to-Text reconoce más de 125 idiomas y variantes. Consulta la lista de idiomas admitidos aquí.
En esta sección, transcribirás un archivo de audio en francés.
Para transcribir el archivo de audio en francés, copia lo siguiente en tu sesión de IPython para actualizar el código:
config = speech.RecognitionConfig(
language_code="fr-FR",
enable_automatic_punctuation=True,
enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
uri="gs://cloud-samples-data/speech/corbeau_renard.flac",
)
response = speech_to_text(config, audio)
print_response(response)
Deberías ver el siguiente resultado:
-------------------------------------------------------------------------------- language_code: fr-fr transcript: Maître corbeau sur un arbre perché Tenait dans son bec un fromage maître Renard par l'odeur alléché lui tint à peu près ce langage et bonjour monsieur du corbeau. confidence: 94% -------------------------------------------------------------------------------- 0.000 | 0.700 | Maître 0.700 | 1.100 | corbeau 1.100 | 1.300 | sur 1.300 | 1.600 | un 1.600 | 1.700 | arbre 1.700 | 2.000 | perché 2.000 | 3.000 | Tenait 3.000 | 3.000 | dans 3.000 | 3.200 | son 3.200 | 3.500 | bec 3.500 | 3.700 | un 3.700 | 3.800 | fromage ... 10.800 | 11.800 | monsieur 11.800 | 11.900 | du 11.900 | 12.100 | corbeau.
Resumen
En este paso, pudiste transcribir un archivo de audio en francés y, luego, imprimir el resultado. Obtén más información sobre los idiomas compatibles.
7. ¡Felicitaciones!
Aprendiste a usar la API de Speech-to-Text con Python para realizar diferentes tipos de transcripciones en archivos de audio.
Limpia
Para limpiar tu entorno de desarrollo, desde Cloud Shell, haz lo siguiente:
- Si aún estás en la sesión de IPython, vuelve a la shell:
exit
- Deja de usar el entorno virtual de Python:
deactivate
- Borra tu carpeta de entorno virtual:
cd ~ ; rm -rf ./venv-speech
Para borrar tu proyecto de Google Cloud de Cloud Shell, haz lo siguiente:
- Recupera tu ID del proyecto actual:
PROJECT_ID=$(gcloud config get-value core/project)
- Asegúrate de que este sea el proyecto que quieres borrar:
echo $PROJECT_ID
- Borrar el proyecto:
gcloud projects delete $PROJECT_ID
Más información
- Prueba la demostración en tu navegador: https://cloud.google.com/speech-to-text
- Documentación de Speech-to-Text: https://cloud.google.com/speech-to-text/docs
- Python en Google Cloud: https://cloud.google.com/python
- Bibliotecas cliente de Cloud para Python: https://github.com/googleapis/google-cloud-python
Licencia
Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.