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.

Permisos necesarios

  • Para trabajar con un reconocedor de Speech-to-Text, necesitas los siguientes roles:

    • speech.recognizers.create
    • speech.recognizers.get
    • speech.recognizers.recognize
    • speech.recognizers.update
  • Para crear una conexión, necesitas membresía en el siguiente rol:

    • roles/bigquery.connectionAdmin
  • Para crear el modelo con BigQuery ML, necesitas los siguientes permisos:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Para ejecutar inferencias, necesitas los siguientes permisos:

    • bigquery.tables.getData en la tabla de objetos
    • bigquery.models.getData en el modelo
    • bigquery.jobs.create

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

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.

Crear una conexión

Crea una conexión de recurso de Cloud y obtén la cuenta de servicio de la conexión.

Elige una de las opciones siguientes:

Console

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. Para crear una conexión, haz clic en Agregar y, luego, en Conexiones a fuentes de datos externas.

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

  4. En el campo ID de conexión, escribe un nombre para tu conexión.

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

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

  7. 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 del 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

Agrega la siguiente sección a tu archivo main.tf.

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
Reemplaza lo siguiente:

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

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 un conjunto de datos

Crea un conjunto de datos para que contenga el modelo y la tabla de objetos.

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 `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 por completo 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?