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
- オブジェクト テーブルに対する
準備
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Speech-to-Text APIs.
認識ツールを作成する
Speech-to-Text は、認識ツールと呼ばれるリソースをサポートしています。認識ツールは、保存され再利用可能な認識構成を表します。認識ツールを作成して、アプリケーションの音声文字変換やトラフィックを論理的にグループ化できます。
音声認識ツールの作成は任意です。音声認識ツールを作成する場合は、CREATE MODEL
ステートメントで使用する認識ツールのプロジェクト ID、ロケーション、認識ツール ID をメモします(SPEECH_RECOGNIZER
を参照)。音声認識ツールを作成しない場合は、ML.TRANSCRIBE
関数の recognition_config
引数に値を指定する必要があります。
使用できるのは、指定した音声認識ツールまたは recognition_config
値の chirp
音声文字変換モデルのみです。
接続を作成する
クラウド リソース接続を作成し、接続のサービス アカウントを取得します。
次のオプションのいずれかを選択します。
コンソール
BigQuery ページに移動します。
接続を作成するには、[
追加] をクリックし、続いて [外部データソースへの接続] をクリックします。[接続タイプ] リストで、[Vertex AI リモートモデル、リモート関数、BigLake(Cloud リソース)] を選択します。
[接続 ID] フィールドに接続の名前を入力します。
[接続を作成] をクリックします。
[接続へ移動] をクリックします。
[接続情報] ペインで、後の手順で使用するサービス アカウント ID をコピーします。
bq
コマンドライン環境で接続を作成します。
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id
パラメータは、デフォルト プロジェクトをオーバーライドします。以下を置き換えます。
REGION
: 接続のリージョンPROJECT_ID
: 実際の Google Cloud プロジェクト IDCONNECTION_ID
: 接続の ID
接続リソースを作成すると、BigQuery は、一意のシステム サービス アカウントを作成し、それを接続に関連付けます。
トラブルシューティング: 次の接続エラーが発生した場合は、Google Cloud SDK を更新します。
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
後の手順で使用するため、サービス アカウント 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 リソース接続を作成します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行う必要があります。
terraform init
必要に応じて、最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行し、プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
サービス アカウントへのアクセスを許可する
次のオプションのいずれかを選択します。
コンソール
[IAM と管理] ページに移動
[
アクセス権を付与] をクリックします。[プリンシパルを追加] ダイアログが開きます。
[新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。
[ロールを選択] フィールドをクリックし、[フィルタ] に「
Cloud Speech Client
」と入力します。[別の役割を追加] をクリックします。
[ロールを選択] フィールドで、[Cloud Storage] を選択し、続いて [Storage オブジェクト閲覧者] を選択します。
[保存] をクリックします。
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_V2
の REMOTE_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": {}}') );
次のステップ
- BigQuery ML でのモデルの推論については、モデルの推論の概要をご覧ください。
- 各モデルタイプでサポートされている SQL ステートメントと関数については、各モデルのエンドツーエンドのユーザー ジャーニーをご覧ください。