短い音声ファイルの音声文字変換

このページでは、同期音声認識を使用して、短い音声ファイルをテキストに変換する方法を説明します。

同期音声認識は、短い音声(60 秒未満)で認識されたテキストを返します。

音声コンテンツは、ローカル ファイルから Speech-to-Text に直接送信できます。また、Speech-to-Text では Cloud Storage バケットに保存された音声コンテンツを処理できます。同期音声認識リクエストの制限については、割り当てと上限のページをご覧ください。

始める前に

  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. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Speech-to-Text API を有効にします。

    API を有効にする

  5. プロジェクトに次のロールがあることを確認します。 Cloud Speech Administrator

    ロールを確認する

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動
    2. プロジェクトを選択します。
    3. [プリンシパル] 列で、自分のメールアドレスを含む行を見つけます。

      自分のメールアドレスがその列にない場合、ロールは割り当てられていません。

    4. 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうかを確認します。

    ロールを付与する

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動
    2. プロジェクトを選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、自分のメールアドレスを入力します。
    5. [ロールを選択] リストでロールを選択します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。
  6. Google Cloud CLI をインストールします。
  7. gcloud CLI を初期化するには:

    gcloud init
  8. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  9. Google Cloud プロジェクトで課金が有効になっていることを確認します

  10. Speech-to-Text API を有効にします。

    API を有効にする

  11. プロジェクトに次のロールがあることを確認します。 Cloud Speech Administrator

    ロールを確認する

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動
    2. プロジェクトを選択します。
    3. [プリンシパル] 列で、自分のメールアドレスを含む行を見つけます。

      自分のメールアドレスがその列にない場合、ロールは割り当てられていません。

    4. 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうかを確認します。

    ロールを付与する

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動
    2. プロジェクトを選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、自分のメールアドレスを入力します。
    5. [ロールを選択] リストでロールを選択します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。
  12. Google Cloud CLI をインストールします。
  13. gcloud CLI を初期化するには:

    gcloud init
  14. クライアント ライブラリは、アプリケーションのデフォルト認証情報を使用することによって、Google API で簡単に認証を行い、これらの API にリクエストを送信できます。アプリケーションのデフォルト認証情報を使用すると、ベースとなるコードを変更することなく、ローカルでのアプリケーションのテストやアプリケーションのデプロイが可能です。詳しくは、<atrack-type="commonincludes" l10n-attrs-original-order="href,track-type,track-name" l10n-encrypted-href="WDE63JFVMK0YqIWBqG8nCycgwkRfOeEqRvzYs1N+2tJUEhcZvE5VtDH5LoWw0lj/" track-name="referenceLink">クライアント ライブラリを使用して認証する</atrack-type="commonincludes">をご覧ください。

  15. Google アカウントのローカル認証情報を作成します。

    gcloud auth application-default login

また、クライアント ライブラリがインストールされていることを確認してください。

ローカル ファイルで同期音声認識を実行する

ローカル音声ファイルに対して、同期音声認識を行う例を次に示します。

Python

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech

def transcribe_file_v2(
    project_id: str,
    audio_file: str,
) -> cloud_speech.RecognizeResponse:
    # Instantiates a client
    client = SpeechClient()

    # Reads a file as bytes
    with open(audio_file, "rb") as f:
        content = f.read()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="long",
    )

    request = cloud_speech.RecognizeRequest(
        recognizer=f"projects/{project_id}/locations/global/recognizers/_",
        config=config,
        content=content,
    )

    # Transcribes the audio into text
    response = client.recognize(request=request)

    for result in response.results:
        print(f"Transcript: {result.alternatives[0].transcript}")

    return response

リモート ファイルで同期音声認識を実行する

Speech-to-Text API は、リクエストの本文で音声ファイルのコンテンツを送信しなくても、Cloud Storage にある音声ファイルに対して直接同期音声認識を実行できるようになっています。

Speech-to-Text は、サービス アカウントを使用して Cloud Storage 内のファイルにアクセスします。デフォルトでは、サービス アカウントは同じプロジェクト内の Cloud Storage ファイルにアクセスできます。

サービス アカウントのメールアドレスは次のとおりです。

service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com

別のプロジェクトの Cloud Storage ファイルを音声文字変換するには、このサービス アカウントにもう一方のプロジェクトの Speech-to-Text サービス エージェント ロールを付与します。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
    --role=roles/speech.serviceAgent

プロジェクトの IAM ポリシーの詳細については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

サービス アカウントにさらにきめ細かくアクセス権を付与するには、特定の Cloud Storage バケットへの権限を付与します。

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com:admin \
    gs://BUCKET_NAME

Cloud Storage へのアクセスの管理の詳細については、Cloud Storage ドキュメントのアクセス制御リストの作成と管理をご覧ください。

Cloud Storage に保存されたファイルに対して同期音声認識を行う例を次に示します。

Python

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech

def transcribe_gcs_v2(
    project_id: str,
    gcs_uri: str,
) -> cloud_speech.RecognizeResponse:
    """Transcribes audio from a Google Cloud Storage URI.

    Args:
        project_id: The GCP project ID.
        gcs_uri: The Google Cloud Storage URI.

    Returns:
        The RecognizeResponse.
    """
    # Instantiates a client
    client = SpeechClient()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="long",
    )

    request = cloud_speech.RecognizeRequest(
        recognizer=f"projects/{project_id}/locations/global/recognizers/_",
        config=config,
        uri=gcs_uri,
    )

    # Transcribes the audio into text
    response = client.recognize(request=request)

    for result in response.results:
        print(f"Transcript: {result.alternatives[0].transcript}")

    return response

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の操作を行います。

  1. 作成した認証情報を取り消して、ローカル認証情報ファイルを削除します。

    gcloud auth application-default revoke
  2. (省略可)gcloud CLI から認証情報を取り消します。

    gcloud auth revoke

コンソール

  • Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  • プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  • ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
  • gcloud

    Google Cloud プロジェクトを削除します。

    gcloud projects delete PROJECT_ID

    次のステップ