Transcripción de voz a texto con la API de Cloud Speech-to-Text

La API de Cloud Speech le permite realizar una transcripción de voz a texto de archivos de audio en más de 80 idiomas.

En este lab, grabaremos un archivo de audio y lo enviaremos a la API de Cloud Speech para su transcripción.

Qué aprenderás

  • Cómo crear una solicitud a la API de Speech y llamar a la API con curl
  • Cómo llamar a la API de Speech con archivos de audio en diferentes idiomas

Requisitos

  • Un proyecto de Google Cloud Platform
  • Un navegador, como Chrome o Firefox

¿Cómo usarás este instructivo?

Leer Leer y completar los ejercicios

¿Cómo calificarías tu experiencia con Google Cloud Platform?

Principiante Intermedio Avanzado

Configuración del entorno a su propio ritmo

Si aún no tienes una Cuenta de Google (Gmail o Google Apps), debes crear una. Accede a Google Cloud Platform Console (console.cloud.google.com) y crea un proyecto nuevo:

Captura de pantalla de 2016-02-10 12:45:26.png

Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID.

A continuación, debes habilitar la facturación en Cloud Console para usar los recursos de Google Cloud.

Ejecutar este codelab debería costar solo unos pocos dólares, pero su costo podría aumentar si decides usar más recursos o si los dejas en ejecución (consulta la sección “Limpiar” al final de este documento).

Los usuarios nuevos de Google Cloud Platform son aptos para obtener una prueba gratuita de USD 300.

Haga clic en el ícono de menú ubicado en la parte superior izquierda de la pantalla.

Seleccione el panel APIs and Services del menú desplegable.

Haga clic en Habilitar API y servicios.

Luego, busca "Speech&quot en el cuadro de búsqueda. Haga clic en API de Google Cloud Speech:

Haga clic en Habilitar para habilitar la API de Cloud Speech:

Espera a que se habilite. Cuando la habilites, verás lo siguiente:

Google Cloud Shell es un entorno de línea de comandos que se ejecuta en la nube. Esta máquina virtual basada en Debian está cargada con todas las herramientas para desarrolladores que necesitarás (gcloud, bq, git y otras) y ofrece un directorio principal persistente de 5 GB. Usaremos Cloud Shell para crear la solicitud a la API de Speech.

Para comenzar a usar Cloud Shell, haz clic en el ícono "Activar Google Cloud Shell" Captura de pantalla del 2015-06-08 a las 5.30.32 PM.pngen la esquina superior derecha de la barra del encabezado.

Se abrirá una sesión de Cloud Shell en un marco nuevo en la parte inferior de la consola, que mostrará una línea de comandos. Espera hasta que aparezca el mensaje user@project:~$

Debido a que usaremos curl para enviar una solicitud a la API de Speech, tendremos que generar una clave de API para pasar la URL de la solicitud. Para crear una clave de API, navega hasta la sección API y servicios > Credenciales del panel del proyecto:

Luego, haga clic en Crear credenciales:

En el menú desplegable, seleccione Clave de API:

A continuación, copia la clave que acabas de generar y selecciona Close (no restringir la clave).

Ahora que tiene una clave de API, guárdela en una variable de entorno para no tener que ingresar el valor de la clave de API en cada solicitud. Puede hacerlo en Cloud Shell. Asegúrate de reemplazar <your_api_key> por la clave que acabas de copiar.

export API_KEY=<YOUR_API_KEY>

Puedes compilar la solicitud a la API de Speech en un archivo request.json. Para crear y editar este archivo, puede usar uno de sus editores de línea de comandos preferidos (nano, vim, emacs) o el editor web integrado en Cloud Shell:

Crea el archivo en tu directorio principal para poder hacer referencia a él y agregar lo siguiente al archivo request.json :

request.json

{
  "config": {
      "encoding":"FLAC",
      "languageCode": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

El cuerpo de la solicitud tiene un objeto config y un objeto audio. En config, le indicamos a la API de Speech cómo procesar la solicitud. El parámetro encoding le indica a la API qué tipo de codificación de audio estás usando para el archivo de audio que envías a la API. FLAC es el tipo de codificación para archivos .raw (consulta la documentación a fin de obtener más detalles al respecto). Hay otros parámetros que puedes agregar a tu objeto config, pero encoding es el único obligatorio. languageCode se configurará de forma predeterminada en inglés si se excluye de la solicitud.

En el objeto audio, puedes pasar la API al URI de nuestro archivo de audio en Cloud Storage o al audio codificado en base64 como una string. Estas eran las URL de Cloud Storage. El siguiente paso es llamar a la API de Speech.

Ahora puedes pasar el cuerpo de la solicitud, junto con la variable de entorno de la clave de API que guardaste antes, a la API de Speech con el siguiente comando curl (todo en una sola línea de comandos):

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json "https://speech.googleapis.com/v1/speech:recognize?key=${API_KEY}"

La respuesta que muestra este comando curl debería ser similar a la siguiente:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

El valor transcript mostrará la transcripción de texto de la API de Speech de tu archivo de audio, mientras que el valor confidence indicará qué tan segura está la API de haber transcrito correctamente el audio.

Notarás que llamamos al método recognize en nuestra solicitud anterior. La API de Speech es compatible con la transcripción de voz a texto síncrona y asíncrona. En este ejemplo, le enviamos un archivo de audio completo, pero también puedes usar el método longrunningrecognize para realizar una transmisión de transcripción de voz a texto mientras el usuario aún está hablando.

¿Habla varios idiomas? La API de Speech admite la transcripción de voz a texto en más de 100 idiomas. Puedes cambiar el parámetro languageCode en request.json. Puede encontrar una lista de los idiomas admitidos aquí.

Intentemos con un archivo de audio en francés (escúchalo aquí si quieres obtener una vista previa). Cambie el archivo request.json a lo siguiente:

request.json

 {
  "config": {
      "encoding":"FLAC",
      "languageCode": "fr"
  },
  "audio": {
      "uri":"gs://speech-language-samples/fr-sample.flac"
  }
}

Debería ver la siguiente respuesta:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "maître corbeau sur un arbre perché tenait en son bec un fromage",
          "confidence": 0.9710122
        }
      ]
    }
  ]
}

Esta es una oración de un cuento infantil francés popular. Si tienes archivos de audio en otro idioma, puedes intentar agregarlos a Cloud Storage y cambiar el parámetro languageCode de tu solicitud.

Aprendió a realizar una transcripción de voz a texto con la API de Speech. En este ejemplo, pasó a la API el URI de Google Cloud Storage de su archivo de audio. De forma alternativa, puede pasar una string codificada en formato base64 del contenido de audio.

Temas abordados

  • Cómo pasar a la API de Speech el URI de un archivo de audio de Google Cloud Storage
  • Cómo crear una solicitud a la API de Speech y llamar a la API con curl
  • Cómo llamar a la API de Speech con archivos de audio en diferentes idiomas

Próximos pasos