音声を文字に変換する

Google Distributed Cloud(GDC)エアギャップ上の Vertex AI の Speech-to-Text サービスは、音声ファイルから音声を認識します。Speech-to-Text は、検出された音声を事前トレーニング済みの API を使用してテキストに変換します。

Speech-to-Text には、数百万時間の音声データと数十億の文章でトレーニングされた音声用の高度なモデルである Chirp が含まれています。このモデルは、各言語固有の教師ありデータを大量に使用していた従来の音声認識技術とは異なります。これらの技術により、ユーザーは音声による言語や方言に対応できるようになり、認識と音声文字変換が改善されます。

このページでは、Distributed Cloud で Speech-to-Text API を使用して音声ファイルをテキストに変換する方法について説明します。

始める前に

Speech-to-Text API の使用を開始するには、Speech-to-Text API が有効になっているプロジェクトと適切な認証情報が必要です。また、API の呼び出しを支援するクライアント ライブラリをインストールすることもできます。詳細については、音声認識プロジェクトを設定するをご覧ください。

デフォルト モデルで音声を文字変換する

Speech-to-Text は音声認識を実行します。音声認識を行う音声ファイルを、API リクエストのコンテンツとして直接送信します。システムは、API レスポンスで文字起こしされたテキストを返します。

音声認識リクエストを行う場合は、RecognitionConfig 構成オブジェクトを指定する必要があります。このオブジェクトは、API に音声データの処理方法と想定される出力の種類を伝えます。この構成オブジェクトでモデルが明示的に指定されていない場合、Speech-to-Text はデフォルトのモデルを選択します。

詳細については、Speech API ドキュメントをご覧ください。

次の例では、デフォルトの Speech-to-Text モデルを使用して音声ファイルから音声を文字に変換します。

Python

Python スクリプトから Speech-to-Text サービスを使用して音声ファイルから音声を文字に変換する手順は次のとおりです。

  1. Speech-to-Text クライアント ライブラリの最新バージョンをインストールします

  2. Python スクリプトに必要な環境変数を設定します

  3. API リクエストを認証します

  4. 作成した Python スクリプトに次のコードを追加します。

    import base64
    
    from google.cloud import speech_v1p1beta1
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience="https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def get_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return speech_v1p1beta1.SpeechClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
        print("Got token: ")
        print(creds.token)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def speech_func(creds):
      tc = get_client(creds)
    
      content="BASE64_ENCODED_AUDIO"
    
      audio = speech_v1p1beta1.RecognitionAudio()
      audio.content = base64.standard_b64decode(content)
      config = speech_v1p1beta1.RecognitionConfig()
      config.encoding= speech_v1p1beta1.RecognitionConfig.AudioEncoding.ENCODING
      config.sample_rate_hertz=RATE_HERTZ
      config.language_code="LANGUAGE_CODE"
      config.audio_channel_count=CHANNEL_COUNT
    
      metadata = [("x-goog-user-project", "projects/PROJECT_ID")]
      resp = tc.recognize(config=config, audio=audio, metadata=metadata)
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      speech_func(creds)
    

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

    • ENDPOINT: 組織で使用する Speech-to-Text エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。
    • PROJECT_ID: プロジェクト ID。
    • BASE64_ENCODED_AUDIO: Base64 表現でエンコードされた音声データバイト。この文字列は ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv に似た文字で始まります。詳細については、RecognitionAudio をご覧ください。
    • ENCODING: リクエストで送信される音声データのエンコード(LINEAR16 など)。詳細については、AudioEncoding をご覧ください。
    • RATE_HERTZ: リクエストで送信される音声データのサンプルレート(ヘルツ単位)。例: 16000。詳細については、RecognitionConfig をご覧ください。
    • LANGUAGE_CODE: 提供された音声の言語を、BCP-47 言語タグで表したもの。サポートされている言語とその言語コードのリストをご覧ください。
    • CHANNEL_COUNT: 入力音声データのチャンネル数(1 など)。詳細については、RecognitionConfig をご覧ください。
  5. Python スクリプトを保存します。

  6. Python スクリプトを実行して音声を文字起こしします。

    python SCRIPT_NAME
    

    SCRIPT_NAME は、Python スクリプトに付けた名前に置き換えます(例: speech.py)。

Chirp による音声文字変換

Speech-to-Text のデフォルト モデルと同様に、音声認識リクエストを行うときに RecognitionConfig 構成オブジェクトを指定する必要があります。Chirp を使用するには、model フィールドの値を chirp に設定して、この構成オブジェクトでこのモデルを明示的に指定する必要があります。

次の例では、Chirp モデルを使用して音声ファイルから音声を文字に変換します。

Python

Python スクリプトから Chirp を使用して音声ファイルから音声を文字に変換する手順は次のとおりです。

  1. Speech-to-Text クライアント ライブラリの最新バージョンをインストールします

  2. Python スクリプトに必要な環境変数を設定します

  3. API リクエストを認証します

  4. 作成した Python スクリプトに次のコードを追加します。

    import base64
    
    # Import the client library.
    from google.cloud import speech_v1p1beta1
    from google.cloud.speech_v1p1beta1.services.speech import client
    from google.api_core.client_options import ClientOptions
    
    api_endpoint="ENDPOINT:443"
    
    def get_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return client.SpeechClient(credentials=creds, client_options=opts)
    
    # Specify the audio to transcribe.
    tc = get_client(creds)
    content = "BASE64_ENCODED_AUDIO"
    
    audio = speech_v1p1beta1.RecognitionAudio()
    audio.content = base64.standard_b64decode(content)
    
    config = speech_v1p1beta1.RecognitionConfig(
        encoding=speech_v1p1beta1.RecognitionConfig.AudioEncoding.ENCODING,
        sample_rate_hertz=RATE_HERTZ,
        audio_channel_count=CHANNEL_COUNT,
        language_code="LANGUAGE_CODE",
        model="chirp"
    )
    
    # Detect speech in the audio file.
    metadata = (("x-goog-user-project", "projects/PROJECT_ID"),)
    response = tc.recognize(config=config, audio=audio, metadata=metadata)
    
    for result in response.results:
        print("Transcript: {}".format(result.alternatives[0].transcript))
    

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

    • ENDPOINT: 組織で使用する Speech-to-Text エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。
    • BASE64_ENCODED_AUDIO: Base64 表現でエンコードされた音声データバイト。この文字列は ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv に似た文字で始まります。詳細については、RecognitionAudio をご覧ください。
    • ENCODING: リクエストで送信される音声データのエンコード(LINEAR16 など)。詳細については、AudioEncoding をご覧ください。
    • RATE_HERTZ: リクエストで送信される音声データのサンプルレート(ヘルツ単位)。例: 16000。詳細については、RecognitionConfig をご覧ください。
    • CHANNEL_COUNT: 入力音声データのチャンネル数(1 など)。詳細については、RecognitionConfig をご覧ください。
    • LANGUAGE_CODE: 提供された音声の言語を、BCP-47 言語タグで表したもの。サポートされている言語とその言語コードのリストをご覧ください。
    • PROJECT_ID: プロジェクト ID。
  5. Python スクリプトを保存します。

  6. Python スクリプトを実行して音声を文字起こしします。

    python SCRIPT_NAME
    

    SCRIPT_NAME は、Python スクリプトに付けた名前に置き換えます(例: speech.py)。