本記事では、Google Cloud Speech-to-Text APIをGoogle Apps Script (GAS)と組み合わせて、音声認識機能を実装する方法を紹介します。

  1. Google Cloud Speech-to-Text APIの概要
  2. Speech-to-Textの機能
  3. Speech-to-Textの高度な機能
  4. Speech-to-Textの利用方法
  5. GASとの連携方法
  6. GASプロジェクトを作成
  7. まとめ

Google Cloud Speech-to-Text APIの概要

Google Cloud Speech-to-Text APIは、音声をテキストに変換するための強力な機械学習サービスです。

このAPIは、多様な言語や方言に対応し、リアルタイムでの音声認識が可能です。

 

 

Speech-to-Textの機能

主な特徴は以下の通りです。

  • 多言語対応: 100以上の言語と方言をサポート
  • リアルタイム認識: ストリーミング音声のリアルタイム処理が可能
  • カスタマイズ機能: 特定の単語や語句の認識精度を向上させるモデル適応機能
  • 自動フォーマット: 句読点の自動挿入や数字の変換機能

Speech-to-Textの高度な機能

  • 話者分離: 複数の話者を識別し、発話者ごとに文字起こしを行う機能
  • ノイズ耐性: 様々な環境でのノイズに対応
  • ドメイン特化モデル: 音声制御、電話通話、ビデオ転写など、用途に応じた最適化モデルを提供

Speech-to-Textの利用方法

Google Cloud Speech-to-Text APIは、3つの主要な方法で音声認識を実行します。

1. 同期認識

  • 1分以内の音声データに適しています
  • 音声データを送信し、処理が完了するまで待機します
  • 結果はすぐに返されます

2. 非同期認識

  • 最大480分の音声データに対応
  • 長時間実行操作を開始し、定期的に結果を確認します
  • 大量の音声データに適しています

3. ストリーミング認識

  • リアルタイムの音声入力に適しています
  • マイクからの入力など、ストリーミング音声を処理します

GASとの連携方法

  1. Google Cloud Platformでプロジェクトを設定し、Speech-to-Text APIを有効にします
  2. サービスアカウントを作成し、認証情報を取得します
  3. GASでOAuthライブラリを使用してJWTトークンを生成します
  4. APIリクエストを送信するコードを実装します

GASプロジェクトを作成

GASプロジェクトを作成し、以下のようなコードを実装します。

APIキーとフォルダIDを適切な値に置き換えます。

 

function transcribeAudio() {
  const folderId = 'あなたのフォルダID'; // 音声ファイルがあるフォルダID
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();
  
  while (files.hasNext()) {
    const file = files.next();
    if (file.getMimeType().indexOf('audio/') > -1) {
      const audioContent = Utilities.base64Encode(file.getBlob().getBytes());
      const transcript = callSpeechToTextAPI(audioContent);
      
      // 文字起こし結果を新しいドキュメントとして保存
      DocumentApp.create(file.getName() + ' - 文字起こし')
        .getBody()
        .appendParagraph(transcript);
    }
  }
}

function callSpeechToTextAPI(audioContent) {
  const apiKey = 'あなたのAPIキー';
  const url = 'https://speech.googleapis.com/v1/speech:recognize?key=' + apiKey;
  
  const payload = {
    config: {
      encoding: 'LINEAR16',
      sampleRateHertz: 16000,
      languageCode: 'ja-JP'
    },
    audio: {
      content: audioContent
    }
  };
  
  const options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload)
  };
  
  const response = UrlFetchApp.fetch(url, options);
  const result = JSON.parse(response.getContentText());
  return result.results[0].alternatives[0].transcript;
}

 

スクリプトを実行すると、指定したフォルダ内の音声ファイルが文字起こしされ、結果が新しいGoogle ドキュメントとして保存されます。

※APIの使用量制限と課金に注意してください。