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

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 {}
}        
次のように置き換えます。

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

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

コンソール

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

次のステップ