ML.TRANSCRIBE 関数を使用して音声ファイルを音声文字変換する

このドキュメントでは、リモートモデルML.TRANSCRIBE 関数を使用して、オブジェクト テーブルから音声ファイルを文字変換する方法について説明します。

サポートされているロケーション

この手順で使用するリモートモデルは、次のいずれかのロケーションに作成する必要があります。

  • 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

ML.TRANSCRIBE 関数は、リモートモデルと同じリージョンで実行する必要があります。

必要な権限

  • Speech-to-Text 認識ツールを使用するには、次のロールが必要です。

    • speech.recognizers.create
    • speech.recognizers.get
    • speech.recognizers.recognize
    • speech.recognizers.update
  • 接続を作成するには、次のロールのメンバーが必要です。

    • roles/bigquery.connectionAdmin
  • BigQuery ML を使用してモデルを作成するには、次の権限が必要です。

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • 推論を実行するには、次の権限が必要です。

    • オブジェクト テーブルに対する bigquery.tables.getData
    • モデルに対する bigquery.models.getData
    • bigquery.jobs.create

準備

  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

認識ツールを作成する

Speech-to-Text は、認識ツールと呼ばれるリソースをサポートしています。認識ツールは、保存され再利用可能な認識構成を表します。認識ツールを作成して、アプリケーションの音声文字変換やトラフィックを論理的にグループ化できます。

音声認識ツールの作成は任意です。音声認識ツールを作成する場合は、CREATE MODEL ステートメントで使用する認識ツールのプロジェクト ID、ロケーション、認識ツール ID をメモします(SPEECH_RECOGNIZER を参照)。音声認識ツールを作成しない場合は、ML.TRANSCRIBE 関数の recognition_config 引数に値を指定する必要があります。

使用できるのは、指定した音声認識ツールまたは recognition_config 値の chirp 音声文字変換モデルのみです。

接続を作成する

クラウド リソース接続を作成し、接続のサービス アカウントを取得します。

次のオプションのいずれかを選択します。

コンソール

  1. BigQuery ページに移動します。

    [BigQuery] に移動

  2. 接続を作成するには、[追加] をクリックし、続いて [外部データソースへの接続] をクリックします。

  3. [接続タイプ] リストで、[Vertex AI リモートモデル、リモート関数、BigLake(Cloud リソース)] を選択します。

  4. [接続 ID] フィールドに接続の名前を入力します。

  5. [接続を作成] をクリックします。

  6. [接続へ移動] をクリックします。

  7. [接続情報] ペインで、後の手順で使用するサービス アカウント ID をコピーします。

bq

  1. コマンドライン環境で接続を作成します。

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

    --project_id パラメータは、デフォルト プロジェクトをオーバーライドします。

    以下を置き換えます。

    接続リソースを作成すると、BigQuery は、一意のシステム サービス アカウントを作成し、それを接続に関連付けます。

    トラブルシューティング: 次の接続エラーが発生した場合は、Google Cloud SDK を更新します。

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. 後の手順で使用するため、サービス アカウント ID を取得してコピーします。

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    出力は次のようになります。

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

Terraform

google_bigquery_connection リソースを使用します。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

次の例では、US リージョンに my_cloud_resource_connection という名前の Cloud リソース接続を作成します。


# 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 {}
}

Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行う必要があります。
    terraform init

    必要に応じて、最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行し、プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

サービス アカウントへのアクセスを許可する

次のオプションのいずれかを選択します。

コンソール

  1. [IAM と管理] ページに移動

    [IAM と管理] に移動

  2. [ アクセス権を付与] をクリックします。

    [プリンシパルを追加] ダイアログが開きます。

  3. [新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。

  4. [ロールを選択] フィールドをクリックし、[フィルタ] に「Cloud Speech Client」と入力します。

  5. [別の役割を追加] をクリックします。

  6. [ロールを選択] フィールドで、[Cloud Storage] を選択し、続いて [Storage オブジェクト閲覧者] を選択します。

  7. [保存] をクリックします。

gcloud

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

次のように置き換えます。

  • PROJECT_NUMBER: プロジェクトの番号
  • MEMBER: 先ほどコピーしたサービス アカウント ID。

権限を付与しないと、Permission denied エラーが発生します。

データセットを作成する

モデルとオブジェクト テーブルを含むデータセットを作成します。

オブジェクト テーブルを作成する

Cloud Storage 内の一連の音声ファイルにオブジェクト テーブルを作成します。オブジェクト テーブルの音声ファイルはサポートされているタイプである必要があります。

オブジェクト テーブルで使用する Cloud Storage バケットは、モデルを作成し、ML.TRANSCRIBE 関数を呼び出すプロジェクトに含まれている必要があります。オブジェクト テーブルで使用される Cloud Storage バケットを含むプロジェクトとは異なるプロジェクトで ML.TRANSCRIBE 関数を呼び出す場合は、service-A@gcp-sa-aiplatform.iam.gserviceaccount.com サービス アカウントにバケット レベルでストレージ管理者ロールを付与する必要があります。

モデルを作成する

CLOUD_AI_SPEECH_TO_TEXT_V2REMOTE_SERVICE_TYPE を使用してリモートモデルを作成します。

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'
);

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • DATASET_ID: モデルを格納するデータセットの ID。
  • MODEL_NAME: モデルの名前
  • REGION: 接続で使用されるリージョン。
  • CONNECTION_ID: 接続 ID(例: myconnection)。

    Google Cloud コンソールで接続の詳細を表示する場合、接続 ID は接続 ID に表示される完全修飾接続 ID の最後のセクションの値です。例: projects/myproject/locations/connection_location/connections/myconnection

  • PROJECT_NUMBER: 音声認識ツールを含むプロジェクトのプロジェクト番号。この値は、Google Cloud コンソールの [ダッシュボード] ページにある [プロジェクト情報] カードで確認できます。
  • LOCATION: 音声認識ツールで使用されるロケーション。この値は、Google Cloud コンソールの [リスト認識機能] ページの [ロケーション] フィールドで確認できます。
  • RECOGNIZER_ID: 音声認識機能 ID。この値は、Google Cloud コンソールの [リスト認識機能] ページの [ID] フィールドで確認できます。

    このオプションは必須ではありません。値を指定しない場合、デフォルトの認識ツールが使用されます。その場合は、デフォルトの認識ツールの構成を指定するために、ML.TRANSCRIBE 関数の recognition_config パラメータに値を指定する必要があります。

    指定する recognition_config 値で使用できるのは、chirp 音声文字変換モデルのみです。

音声ファイルを音声文字変換する

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')
);

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • DATASET_ID: モデルを格納するデータセットの ID。
  • MODEL_NAME: モデルの名前
  • OBJECT_TABLE_NAME: 処理する音声ファイルの URI を含むオブジェクト テーブルの名前。
  • recognition_config: JSON 形式の RecognitionConfig リソース

    SPEECH_RECOGNIZER オプションを使用してリモートモデルに認識機能を指定した場合は、recognition_config 値を指定できません。

    SPEECH_RECOGNIZER オプションを使用してリモートモデルに認識機能を指定していない場合は、recognition_config 値を指定する必要があります。この値は、デフォルトの認識ツールの構成を提供するために使用されます。

    指定する recognition_config 値で使用できるのは、chirp 音声文字変換モデルのみです。

例 1

次の例では、認識機能のデフォルト構成をオーバーライドせずに、audio テーブルで表示される音声ファイルを文字変換します。

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

次の例では、audio テーブルで表される音声ファイルを文字変換し、デフォルトの認識ツールの構成を指定します。

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

次のステップ