Transcrire des fichiers audio avec la fonction ML.TRANSCRIBE

Ce document explique comment utiliser la fonction ML.TRANSCRIBE avec un modèle distant pour transcrire des fichiers audio à partir d'unetable d'objets.

Pays acceptés

Vous devez créer le modèle distant utilisé dans cette procédure dans l'un des emplacements suivants :

  • 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

Vous devez exécuter la fonction ML.TRANSCRIBE dans la même région que le modèle distant.

Autorisations requises

  • Pour utiliser un outil de reconnaissance Speech-to-Text, vous devez disposer des rôles suivants :

    • speech.recognizers.create
    • speech.recognizers.get
    • speech.recognizers.recognize
    • speech.recognizers.update
  • Pour créer une connexion, vous devez être inscrit au rôle suivant :

    • roles/bigquery.connectionAdmin
  • Pour créer le modèle à l'aide de BigQuery ML, vous devez disposer des autorisations suivantes :

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Pour exécuter une inférence, vous devez disposer des autorisations suivantes :

    • bigquery.tables.getData sur la table d'objets
    • bigquery.models.getData sur le modèle
    • bigquery.jobs.create

Avant de commencer

  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

Créer un outil de reconnaissance

Speech-to-Text accepte les ressources appelées "outils de reconnaissance". Ces outils de reconnaissance constituent la version stockée et réutilisable d'une configuration de reconnaissance. Vous pouvez créer un outil de reconnaissance pour regrouper logiquement les transcriptions ou le trafic de votre application.

La création d'un outil de reconnaissance vocale est facultative. Si vous choisissez de créer un outil de reconnaissance vocale, notez l'ID de projet, l'emplacement et l'ID de l'outil de reconnaissance à utiliser dans l'instruction CREATE MODEL, comme décrit à la section SPEECH_RECOGNIZER. Si vous choisissez de ne pas créer d'outil de reconnaissance vocale, vous devez spécifier une valeur pour l'argument recognition_config de la fonction ML.TRANSCRIBE.

Vous ne pouvez utiliser que le modèle de transcription chirp dans l'outil de reconnaissance vocale ou la valeur recognition_config que vous avez spécifiée.

Créer une connexion

Créez une connexion de ressource cloud et obtenez le compte de service de la connexion.

Sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page BigQuery.

    Accéder à BigQuery

  2. Pour créer une connexion, cliquez sur Ajouter, puis sur Connexions aux sources de données externes.

  3. Dans la liste Type de connexion, sélectionnez Modèles distants Vertex AI, fonctions distantes et BigLake (ressource Cloud).

  4. Dans le champ ID de connexion, saisissez un nom pour votre connexion.

  5. Cliquez sur Create connection (Créer une connexion).

  6. Cliquez sur Accéder à la connexion.

  7. Dans le volet Informations de connexion, copiez l'ID du compte de service à utiliser à l'étape suivante.

bq

  1. Dans un environnement de ligne de commande, créez une connexion :

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

    Le paramètre --project_id remplace le projet par défaut.

    Remplacez les éléments suivants :

    • REGION : votre région de connexion
    • PROJECT_ID : ID de votre projet Google Cloud
    • CONNECTION_ID : ID de votre connexion

    Lorsque vous créez une ressource de connexion, BigQuery crée un compte de service système unique et l'associe à la connexion.

    Dépannage : Si vous obtenez l'erreur de connexion suivante, mettez à jour le Google Cloud SDK :

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Récupérez et copiez l'ID du compte de service pour l'utiliser lors d'une prochaine étape :

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    Le résultat ressemble à ce qui suit :

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

Terraform

Utilisez la ressource google_bigquery_connection.

Pour vous authentifier auprès de BigQuery, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.

L'exemple suivant crée une connexion de ressources Cloud nommée my_cloud_resource_connection dans la région 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 {}
}

Pour appliquer votre configuration Terraform dans un projet Google Cloud, suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.

    Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).

  1. Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.

    Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.

    Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :

    terraform init -upgrade

Appliquer les modifications

  1. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  2. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  3. Ouvrez votre projet Google Cloud pour afficher les résultats. Dans la console Google Cloud, accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

Accorder l'accès au compte de service

Sélectionnez l'une des options suivantes :

Console

  1. Accédez à la page IAM et administration.

    Accéder à IAM et administration

  2. Cliquez sur Accorder l'accès.

    La boîte de dialogue Ajouter des comptes principaux s'ouvre.

  3. Dans le champ Nouveaux comptes principaux, saisissez l'ID du compte de service que vous avez copié précédemment.

  4. Cliquez sur le champ Sélectionner un rôle, puis saisissez Cloud Speech Client dans le champ Filtre.

  5. Cliquez sur Ajouter un autre rôle.

  6. Dans le champ Sélectionnez un rôle, sélectionnez Cloud Storage, puis Lecteur d'objets Storage.

  7. Cliquez sur Enregistrer.

gcloud

Exécutez la commande 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

Remplacez les éléments suivants :

  • PROJECT_NUMBER : votre numéro de projet.
  • MEMBER : ID du compte de service que vous avez copié précédemment

L'échec de l'attribution de l'autorisation génère une erreur Permission denied.

Créer un ensemble de données

Créez un ensemble de données pour contenir le modèle et la table d'objets.

Créer une table d'objets

Créer une table d'objets sur un ensemble de fichiers audio dans Cloud Storage. Les fichiers audio de la table d'objets doivent être d'un type compatible.

Le bucket Cloud Storage utilisé par la table d'objets doit se trouver dans le même projet que celui dans lequel vous prévoyez de créer le modèle et d'appeler la fonction ML.TRANSCRIBE. Si vous souhaitez appeler la fonction ML.TRANSCRIBE dans un projet différent de celui qui contient le bucket Cloud Storage utilisé par la table d'objets, vous devez attribuer le rôle d'Administrateur de l'espace de stockage au niveau du bucket au compte de service service-A@gcp-sa-aiplatform.iam.gserviceaccount.com.

Créer un modèle

Créez un modèle distant avec une valeur 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'
);

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données pour contenir le modèle.
  • MODEL_NAME : nom du modèle
  • REGION : région utilisée par la connexion.
  • CONNECTION_ID : ID de connexion, par exemple myconnection.

    Lorsque vous affichez les détails de la connexion dans la console Google Cloud, il s'agit de la valeur de la dernière section de l'ID de connexion complet affiché dans ID de connexion (par exemple, projects/myproject/locations/connection_location/connections/myconnection).

  • PROJECT_NUMBER : numéro du projet contenant l'outil de reconnaissance vocale. Vous pouvez trouver cette valeur sur la fiche Informations sur le projet de la page Tableau de bord de la console Google Cloud.
  • LOCATION : emplacement utilisé par le système de reconnaissance vocale. Vous pouvez trouver cette valeur dans le champ Emplacement de la page Répertorier les outils de reconnaissance de la console Google Cloud.
  • RECOGNIZER_ID : ID de l'outil de reconnaissance vocale. Vous pouvez trouver cette valeur dans le champ ID de la page Répertorier les outils de reconnaissance de la console Google Cloud.

    Cette option n'est pas obligatoire. Si vous ne spécifiez pas de valeur, un outil de reconnaissance par défaut est utilisé. Dans ce cas, vous devez spécifier une valeur pour le paramètre recognition_config de la fonction ML.TRANSCRIBE, afin de fournir une configuration pour l'outil de reconnaissance par défaut.

    Vous ne pouvez utiliser le modèle de transcription chirp que dans la valeur recognition_config que vous avez spécifiée.

Transcrire des fichiers audio

Transcrivez des fichiers audio avec la fonction 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')
);

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • DATASET_ID : ID de l'ensemble de données contenant le modèle.
  • MODEL_NAME : nom du modèle
  • OBJECT_TABLE_NAME : nom de la table d'objets contenant les URI des fichiers audio à traiter.
  • recognition_config : ressource RecognitionConfig au format JSON.

    Si un outil de reconnaissance a été spécifié pour le modèle distant à l'aide de l'option SPEECH_RECOGNIZER, vous ne pouvez pas spécifier de valeur recognition_config.

    Si aucun outil de reconnaissance n'a été spécifié pour le modèle distant à l'aide de l'option SPEECH_RECOGNIZER, vous devez spécifier une valeur recognition_config. Cette valeur permet de fournir une configuration pour l'outil de reconnaissance par défaut.

    Vous ne pouvez utiliser le modèle de transcription chirp que dans la valeur recognition_config que vous fournissez.

Exemples

Exemple 1

L'exemple suivant transcrit les fichiers audio représentés par la table audio sans remplacer la configuration par défaut de l'outil de reconnaissance :

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

L'exemple suivant transcrit les fichiers audio représentés par la table audio et fournit une configuration pour l'outil de reconnaissance par défaut :

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": {}}')
);

Étape suivante