Transcrever arquivos de áudio com a função ML.TRANSCRIBE

Neste documento, descrevemos como usar a função ML.TRANSCRIBE com um modelo remoto para transcrever arquivos de áudio de uma tabela de objetos.

Locais suportados

É preciso criar o modelo remoto usado neste procedimento em um dos seguintes locais:

  • 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

Execute a função ML.TRANSCRIBE na mesma região que o modelo remoto.

Funções exigidas

Para criar um modelo remoto e transcrever arquivos de áudio, você precisa dos seguintes papéis do Identity and Access Management (IAM) no nível do projeto:

  • Criar um reconhecedor de fala: Editor do Cloud Speech (roles/speech.editor)
  • Criar e usar conjuntos de dados, tabelas e modelos do BigQuery: Editor de dados do BigQuery (roles/bigquery.dataEditor)
  • Criar, delegar e usar conexões do BigQuery: Administrador de conexões do BigQuery (roles/bigquery.connectionsAdmin)

    Se você não tiver uma conexão padrão configurada, crie e defina uma como parte da execução da instrução CREATE MODEL. Para isso, você precisa ter a função de administrador do BigQuery (roles/bigquery.admin) no seu projeto. Para mais informações, consulte Configurar a conexão padrão.

  • Conceder permissões à conta de serviço da conexão: administrador do IAM do projeto (roles/resourcemanager.projectIamAdmin)

  • Criar jobs do BigQuery: usuário de jobs do BigQuery (roles/bigquery.jobUser)

Esses papéis predefinidos contêm as permissões necessárias para executar as tarefas neste documento. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

  • Criar um conjunto de dados: bigquery.datasets.create
  • Criar, delegar e usar uma conexão: bigquery.connections.*
  • Defina as permissões da conta de serviço: resourcemanager.projects.getIamPolicy e resourcemanager.projects.setIamPolicy
  • Crie um modelo e execute a inferência:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Crie uma tabela de objetos: bigquery.tables.create e bigquery.tables.update
  • Crie um reconhecedor de voz:
    • speech.recognizers.create
    • speech.recognizers.get
    • speech.recognizers.recognize
    • speech.recognizers.update

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Antes de começar

  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. Criar um reconhecedor

    A Speech-to-Text é compatível com recursos chamados reconhecedores. Os reconhecedores representam configurações de reconhecimento armazenadas e reutilizáveis. É possível criar um reconhecedor para agrupar logicamente as transcrições ou o tráfego para seu aplicativo.

    A criação de um reconhecedor de fala é opcional. Se você optar por criar um reconhecedor de fala, anote o ID do projeto, o local e o ID do reconhecedor para uso na instrução CREATE MODEL, conforme descrito em SPEECH_RECOGNIZER. Se você decidir não criar um reconhecedor de fala, especifique um valor para o argumento recognition_config da função ML.TRANSCRIBE.

    Só é possível usar o modelo de transcrição do chirp no reconhecimento de fala ou no valor recognition_config fornecido.

    crie um conjunto de dados

    Crie um conjunto de dados do BigQuery para conter seus recursos:

    Console

    1. No console Google Cloud , acesse a página BigQuery.

      Acessar a página do BigQuery

    2. No painel Explorer, clique no nome do seu projeto.

    3. Clique em Conferir ações > Criar conjunto de dados.

    4. Na página Criar conjunto de dados, faça o seguinte:

      • Em ID do conjunto de dados, digite um nome para o conjunto de dados.

      • Em Tipo de local, selecione um local para o conjunto de dados.

      • Clique em Criar conjunto de dados.

    bq

    1. Para criar um conjunto de dados, use o comando bq mk com a flag --location:

      bq --location=LOCATION mk -d DATASET_ID

      Substitua:

      • LOCATION: o local do conjunto de dados.
      • DATASET_ID é o ID do conjunto de dados que você está criando.
    2. Confirme se o conjunto de dados foi criado:

      bq ls

    Crie uma conexão

    Pule esta etapa se você tiver uma conexão padrão configurada ou a função de administrador do BigQuery.

    Crie uma Conexão de recursos do Cloud para o modelo remoto usar e tenha acesso à conta de serviço da conexão. Crie a conexão no mesmo local do conjunto de dados criado na etapa anterior.

    Selecione uma das seguintes opções:

    Console

    1. Acessar a página do BigQuery.

      Acessar o BigQuery

    2. No painel Explorer, clique em Adicionar dados:

      O elemento da interface "Adicionar dados".

      A caixa de diálogo Adicionar dados é aberta.

    3. No painel Filtrar por, na seção Tipo de fonte de dados, selecione Aplicativos comerciais.

      Como alternativa, no campo Pesquisar fontes de dados, insira Vertex AI.

    4. Na seção Fontes de dados em destaque, clique em Vertex AI.

    5. Clique no card da solução Modelos da Vertex AI: federação do BigQuery.

    6. Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas e BigLake (recurso do Cloud).

    7. No campo ID da conexão, insira um nome para a conexão.

    8. Clique em Criar conexão.

    9. Clique em Ir para conexão.

    10. No painel Informações da conexão, copie o ID da conta de serviço para uso em uma etapa posterior.

    bq

    1. Em um ambiente de linha de comando, crie uma conexão:

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

      O parâmetro --project_id substitui o projeto padrão.

      Substitua:

      • REGION: sua região de conexão
      • PROJECT_ID: o ID do Google Cloud projeto
      • CONNECTION_ID: um ID para sua conexão

      Quando você cria um recurso de conexão, o BigQuery cria uma conta de serviço do sistema exclusiva e a associa à conexão.

      Solução de problemas: se você receber o seguinte erro de conexão, atualize o SDK Google Cloud:

      Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
      
    2. Recupere e copie o ID da conta de serviço para uso em uma etapa posterior:

      bq show --connection PROJECT_ID.REGION.CONNECTION_ID

      O resultado será assim:

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

    Terraform

    Use o recurso google_bigquery_connection.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    O exemplo a seguir cria uma conexão de recurso do Google Cloud chamada my_cloud_resource_connection na região 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 a configuração do Terraform em um projeto Google Cloud , siga as etapas nas seções a seguir.

    Preparar o Cloud Shell

    1. Inicie o Cloud Shell.
    2. Defina o projeto Google Cloud padrão em que você quer aplicar as configurações do Terraform.

      Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

    Preparar o diretório

    Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

    1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

      Copie o exemplo de código no main.tf recém-criado.

      Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

    3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
    4. Salve as alterações.
    5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
      terraform init

      Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção -upgrade:

      terraform init -upgrade

    Aplique as alterações

    1. Revise a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expectativas:
      terraform plan

      Faça as correções necessárias na configuração.

    2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
      terraform apply

      Aguarde até que o Terraform exiba a mensagem "Apply complete!".

    3. Abra seu Google Cloud projeto para ver os resultados. No console Google Cloud , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.

    Conceder acesso à conta de serviço

    Selecione uma das seguintes opções:

    Console

    1. Acesse a página IAM e administrador.

      Acessar IAM e administrador

    2. Clique em Conceder acesso.

      A caixa de diálogo Adicionar principais é aberta.

    3. No campo Novos principais, digite o ID da conta de serviço que você copiou anteriormente.

    4. Clique no campo Selecionar um papel e digite Cloud Speech Client em Filtro.

    5. Clique em Adicionar outro papel.

    6. No campo Selecionar papel, escolha Cloud Storage e, em seguida, Visualizador de objetos do Storage.

    7. Clique em Salvar.

    gcloud

    Use o comando gcloud projects add-iam-policy-binding (em inglês).

    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
    

    Substitua:

    • PROJECT_NUMBER: o número do projeto.
    • MEMBER: o ID da conta de serviço que você copiou anteriormente.

    Deixar de conceder a permissão resulta em um erro Permission denied.

    criar uma tabela de objetos

    Crie uma tabela de objetos sobre um conjunto de arquivos de áudio no Cloud Storage. Os arquivos de áudio na tabela de objetos precisam ser de um tipo compatível.

    O bucket do Cloud Storage usado pela tabela de objetos precisa estar no mesmo projeto em que você planeja criar o modelo e chamar a função ML.TRANSCRIBE. Se você quiser chamar a função ML.TRANSCRIBE em um projeto diferente que contém o bucket do Cloud Storage usado pela tabela de objetos, é preciso conceder o papel de Administrador do Storage no nível do bucket para a conta de serviço service-A@gcp-sa-aiplatform.iam.gserviceaccount.com.

    Criar um modelo

    Crie um modelo remoto com um 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'
    );

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • DATASET_ID: o ID do conjunto de dados para conter o modelo.
    • MODEL_NAME: o nome do modelo
    • REGION: a região usada pela conexão.
    • CONNECTION_ID: o ID da conexão. Por exemplo, myconnection.

      Quando você visualiza os detalhes da conexão no console do Google Cloud , o ID da conexão é o valor na última seção do ID da conexão totalmente qualificado, mostrado em ID da conexão, por exemplo, projects/myproject/locations/connection_location/connections/myconnection.

    • PROJECT_NUMBER: o número do projeto que contém o reconhecedor de fala. Esse valor está no card Informações do projeto na página Painel do console Google Cloud .
    • LOCATION: o local usado pelo reconhecedor de fala. Encontre esse valor no campo Local na página Listar reconhecedores do console do Google Cloud .
    • RECOGNIZER_ID: o ID do reconhecedor de fala. Encontre esse valor no campo ID na página Listar reconhecedores do console Google Cloud .

      Essa opção não é obrigatória. Se você não especificar um valor, um reconhecedor padrão será usado. Nesse caso, especifique um valor para o parâmetro recognition_config da função ML.TRANSCRIBE para fornecer uma configuração para o reconhecedor padrão.

      Só é possível usar o modelo de transcrição do chirp no valor recognition_config fornecido.

    Transcrever arquivos de áudio

    Transcreva arquivos de áudio com a função 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')
    );

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • DATASET_ID: o ID do conjunto de dados que contém o modelo.
    • MODEL_NAME: o nome do modelo
    • OBJECT_TABLE_NAME: o nome da tabela de objetos que contém os URIs dos arquivos de áudio a serem processados.
    • recognition_config: um recurso RecognitionConfig no formato JSON.

      Se um reconhecedor tiver sido especificado para o modelo remoto usando a opção SPEECH_RECOGNIZER, não será possível especificar um valor recognition_config.

      Se nenhum reconhecedor tiver sido especificado para o modelo remoto usando a opção SPEECH_RECOGNIZER, será necessário especificar um valor recognition_config. Esse valor é usado para fornecer uma configuração para o reconhecedor padrão.

      Só é possível usar o modelo de transcrição do chirp no valor recognition_config fornecido.

    Exemplos

    Exemplo 1

    O exemplo a seguir transcreve os arquivos de áudio representados pela tabela audio sem substituir a configuração padrão do reconhecedor:

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

    O exemplo a seguir transcreve os arquivos de áudio representados pela tabela audio e fornece uma configuração para o reconhecedor padrão:

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

    A seguir