Transcribe archivos de audio con la función ML.TRANSCRIBE

En este documento, se describe cómo usarML.TRANSCRIBE función con unmodelo remoto para transcribir archivos de audio de untabla de objetos.

Ubicaciones admitidas

Debes crear el modelo remoto que se usa en este procedimiento en una de las siguientes ubicaciones:

  • asia-northeast1
  • asia-south1
  • asia-southeast1
  • australia-southeast1
  • eu
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • northamerica-northeast1
  • us
  • us-central1
  • us-east1
  • us-east4
  • us-west1

Debes ejecutar la función ML.TRANSCRIBE en la misma región que el modelo remoto.

Roles obligatorios

Para crear un modelo remoto y transcribir archivos de audio, necesitas los siguientes roles de Identity and Access Management (IAM) a nivel del proyecto:

  • Crea un reconocedor de voz: Editor de Cloud Speech (roles/speech.editor)
  • Crear y usar conjuntos de datos, tablas y modelos de BigQuery: Editor de datos de BigQuery (roles/bigquery.dataEditor)
  • Crear, delegar y usar conexiones de BigQuery: Administrador de conexiones de BigQuery (roles/bigquery.connectionsAdmin)

    Si no tienes configurada una conexión predeterminada, puedes crear y establecer una como parte de la ejecución de la instrucción CREATE MODEL. Para ello, debes tener el rol de administrador de BigQuery (roles/bigquery.admin) en tu proyecto. Para obtener más información, consulta Cómo configurar la conexión predeterminada.

  • Otorga permisos a la cuenta de servicio de la conexión: Administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin)

  • Crear trabajos de BigQuery: Usuario de trabajo de BigQuery (roles/bigquery.jobUser)

Estos roles predefinidos contienen los permisos necesarios para realizar las tareas de este documento. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:

Permisos necesarios

  • Crea un conjunto de datos: bigquery.datasets.create
  • Crea, delega y usa una conexión: bigquery.connections.*
  • Configura los permisos de la cuenta de servicio: resourcemanager.projects.getIamPolicy y resourcemanager.projects.setIamPolicy
  • Crea un modelo y ejecuta la inferencia:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Crea una tabla de objetos: bigquery.tables.create y bigquery.tables.update
  • Crea un reconocedor de voz:
    • speech.recognizers.create
    • speech.recognizers.get
    • speech.recognizers.recognize
    • speech.recognizers.update

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Antes de comenzar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.

    Enable the APIs

  8. Crea un reconocedor

    Speech-to-Text admite recursos llamados reconocedores. Los reconocedores representan la configuración de reconocimiento almacenada y reutilizable. Puedes crear un reconocedor a fin de agrupar de forma lógica las transcripciones o el tráfico para tu aplicación.

    Crear un reconocedor de voz es opcional. Si eliges crear un reconocedor de voz, toma nota del ID del proyecto, la ubicación y el ID del reconocedor para usarlos en la declaración CREATE MODEL, como se describe en SPEECH_RECOGNIZER. Si decides no crear un reconocedor de voz, debes especificar un valor para el argumento recognition_config de la función ML.TRANSCRIBE.

    Solo puedes usar el modelo de transcripción chirp en el identificador de voz o el valor recognition_config que proporciones.

    Crea un conjunto de datos

    Crea un conjunto de datos de BigQuery para que contenga tus recursos:

    Console

    1. En la consola de Google Cloud , ve a la página BigQuery.

      Ir a la página de BigQuery

    2. En el panel Explorador, haz clic en el nombre de tu proyecto.

    3. Haz clic en Ver acciones > Crear conjunto de datos.

    4. En la página Crear conjunto de datos, haz lo siguiente:

      • En ID de conjunto de datos, escribe un nombre para el conjunto de datos.

      • En Tipo de ubicación, selecciona una ubicación para el conjunto de datos.

      • Haz clic en Crear conjunto de datos.

    bq

    1. Para crear un conjunto de datos nuevo, usa el comando bq mk con la marca --location:

      bq --location=LOCATION mk -d DATASET_ID

      Reemplaza lo siguiente:

      • LOCATION: la ubicación del conjunto de datos.
      • DATASET_ID es el ID del conjunto de datos que crearás.
    2. Confirma que se haya creado el conjunto de datos:

      bq ls

    Crear una conexión

    Puedes omitir este paso si tienes configurada una conexión predeterminada o si tienes el rol de administrador de BigQuery.

    Crea una conexión de recurso de Cloud para que la use el modelo remoto y obtén la cuenta de servicio de la conexión. Crea la conexión en la misma ubicación que el conjunto de datos que creaste en el paso anterior.

    Selecciona una de las siguientes opciones:

    Console

    1. Ve a la página de BigQuery.

      Ir a BigQuery

    2. En el panel Explorador, haz clic en Agregar datos:

      Elemento de la IU Agregar datos.

      Se abrirá el diálogo Agregar datos.

    3. En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Aplicaciones empresariales.

      También puedes ingresar Vertex AI en el campo Buscar fuentes de datos.

    4. En la sección Fuentes de datos destacadas, haz clic en Vertex AI.

    5. Haz clic en la tarjeta de solución Vertex AI Models: BigQuery Federation.

    6. En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).

    7. En el campo ID de conexión, ingresa un nombre para tu conexión.

    8. Haz clic en Crear conexión (Create connection).

    9. Haz clic en Ir a la conexión.

    10. En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.

    bq

    1. En un entorno de línea de comandos, crea una conexión:

      bq mk --connection --location=REGION --project_id=PROJECT_ID \
          --connection_type=CLOUD_RESOURCE CONNECTION_ID

      El parámetro --project_id anula el proyecto predeterminado.

      Reemplaza lo siguiente:

      • REGION: tu región de conexión
      • PROJECT_ID: El ID de tu proyecto de Google Cloud
      • CONNECTION_ID: Es un ID para tu conexión.

      Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.

      Solución de problemas: Si recibes el siguiente error de conexión, actualiza el SDK de Google Cloud:

      Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
      
    2. Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:

      bq show --connection PROJECT_ID.REGION.CONNECTION_ID

      El resultado es similar a este:

      name                          properties
      1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
      

    Terraform

    Usa el recurso google_bigquery_connection.

    .

    Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

    En el siguiente ejemplo, se crea una conexión de recursos de Cloud llamada my_cloud_resource_connection en la región US:

    
    # This queries the provider for project information.
    data "google_project" "default" {}
    
    # This creates a cloud resource connection in the US region named my_cloud_resource_connection.
    # Note: The cloud resource nested object has only one output field - serviceAccountId.
    resource "google_bigquery_connection" "default" {
      connection_id = "my_cloud_resource_connection"
      project       = data.google_project.default.project_id
      location      = "US"
      cloud_resource {}
    }

    Para aplicar tu configuración de Terraform en un proyecto Google Cloud , completa los pasos de las siguientes secciones.

    Prepara Cloud Shell

    1. Inicia Cloud Shell
    2. Establece el proyecto Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

      Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

    Prepara el directorio

    Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

    1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

      Copia el código de muestra en el main.tf recién creado.

      De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

    3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
    4. Guarda los cambios.
    5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
      terraform init

      De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

      terraform init -upgrade

    Aplica los cambios

    1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
      terraform plan

      Corrige la configuración según sea necesario.

    2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
      terraform apply

      Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

    3. Abre tu proyecto Google Cloud para ver los resultados. En la consola de Google Cloud , navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

    Otorga acceso a la cuenta de servicio

    Elige una de las opciones siguientes:

    Console

    1. Ir a la página IAM y administración

      Ir a IAM y administración

    2. Haz clic en Otorgar acceso.

      Se abre el cuadro de diálogo Agregar principales.

    3. En el campo Principales nuevas, escribe el ID de la cuenta de servicio que copiaste antes.

    4. Haz clic en el campo Elegir un rol y, luego, escribe Cloud Speech Client en Filtro.

    5. Haz clic en Agregar otro rol.

    6. En el campo Elige una función, elige Cloud Storage y, luego,Visualizador de objetos de Storage.

    7. Haz clic en Guardar.

    gcloud

    Usa el comando gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/speech.client' --condition=None
    gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/storage.objectViewer' --condition=None
    

    Reemplaza lo siguiente:

    • PROJECT_NUMBER: Es el número de tu proyecto.
    • MEMBER: Es el ID de la cuenta de servicio que copiaste antes.

    Si no se otorga el permiso, se produce un error Permission denied.

    Crea una tabla de objetos

    Crea una tabla de objetos sobre un conjunto de archivos de audio en Cloud Storage. Los archivos de audio en la tabla de objetos deben ser de un tipo compatible.

    El bucket de Cloud Storage que usa la tabla de objetos debe estar en el mismo proyecto en el que planeas crear el modelo y llamar a la función ML.TRANSCRIBE. Si deseas llamar a la función ML.TRANSCRIBE en un proyecto diferente al que contiene el bucket de Cloud Storage que usa la tabla de objetos, debes otorgar el rol de administrador de almacenamiento a nivel del bucket a la cuenta de servicio service-A@gcp-sa-aiplatform.iam.gserviceaccount.com.

    Crear un modelo

    Crea un modelo remoto con un REMOTE_SERVICE_TYPE de CLOUD_AI_SPEECH_TO_TEXT_V2:

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`}
    OPTIONS (
      REMOTE_SERVICE_TYPE = 'CLOUD_AI_SPEECH_TO_TEXT_V2',
      SPEECH_RECOGNIZER = 'projects/PROJECT_NUMBER/locations/LOCATION/recognizers/RECOGNIZER_ID'
    );

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • DATASET_ID: El ID del conjunto de datos que contendrá el modelo.
    • MODEL_NAME: el nombre del modelo
    • REGION: Es la región que usa la conexión.
    • CONNECTION_ID: el ID de conexión, por ejemplo, myconnection.

      Cuando ves los detalles de conexión en la consola de Google Cloud , el ID de conexión es el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión, por ejemplo, projects/myproject/locations/connection_location/connections/myconnection.

    • PROJECT_NUMBER: el número del proyecto que contiene el reconocedor de voz. Puedes encontrar este valor en la tarjeta Información del proyecto en la página Panel de la consola de Google Cloud .
    • LOCATION: la ubicación que usa el reconocedor de voz. Puedes encontrar este valor en el campo Ubicación en la página Lista de reconocedores de la consola de Google Cloud .
    • RECOGNIZER_ID: el ID del reconocedor de voz. Puedes encontrar este valor en el campo ID de la página Lista de reconocedores de la consola de Google Cloud .

      Esta opción no es obligatoria. Si no especificas un valor, se usa un reconocedor predeterminado. En ese caso, debes especificar un valor para el parámetro recognition_config de la función ML.TRANSCRIBE para proporcionar una configuración para el reconocedor predeterminado.

      Solo puedes usar el modelo de transcripción chirp en el valor recognition_config que proporciones.

    Transcribe archivos de audio

    Transcribe archivos de audio con la función ML.TRANSCRIBE:

    SELECT *
    FROM ML.TRANSCRIBE(
      MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
      TABLE `PROJECT_ID.DATASET_ID.OBJECT_TABLE_NAME`,
      RECOGNITION_CONFIG => ( JSON 'recognition_config')
    );

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • DATASET_ID: El ID del conjunto de datos que contiene el modelo.
    • MODEL_NAME: el nombre del modelo
    • OBJECT_TABLE_NAME: el nombre de la tabla de objetos que contiene los URI de los archivos de audio que se procesarán.
    • recognition_config: un recurso RecognitionConfig en formato JSON.

      Si se especificó un reconocedor para el modelo remoto a través de la opción SPEECH_RECOGNIZER, no puedes especificar un valor recognition_config.

      Si no se especificó ningún reconocedor para el modelo remoto a través de la opción SPEECH_RECOGNIZER, debes especificar un valor recognition_config. Este valor se usa para proporcionar una configuración para el reconocedor predeterminada.

      Solo puedes usar el modelo de transcripción chirp en el valor recognition_config que proporciones.

    Ejemplos

    Ejemplo 1

    En el siguiente ejemplo, se transcriben los archivos de audio representados por la tabla audio sin anular la configuración predeterminada del reconocedor:

    SELECT *
    FROM ML.TRANSCRIBE(
      MODEL `myproject.mydataset.transcribe_model`,
      TABLE `myproject.mydataset.audio`
    );

    En el siguiente ejemplo, se transcriben los archivos de audio representados por la tabla audio y se proporciona una configuración para el reconocedor predeterminado:

    SELECT *
    FROM ML.TRANSCRIBE(
      MODEL `myproject.mydataset.transcribe_model`,
      TABLE `myproject.mydataset.audio`,
      recognition_config => ( JSON '{"language_codes": ["en-US" ],"model": "chirp","auto_decoding_config": {}}')
    );

    ¿Qué sigue?