GASでGeminiAPIで音声をテキストデータに文字起こし

こんにちは、くのへです!
GAS(GoogleAppScript)からGeminiAPIを使い、音声をテキストデータに成功しました。
その内容についてこの記事で紹介致します。

なお、GeminiAPIを使う方法(APIキーの取得など)はこちらの記事を御参照ください。

サンプルコード

次のコードで音声ファイルからテキストデータに文字起こし可能です。
なお、音声ファイルはwavデータで検証済みです。

function convertAudioToText() {

  // APIキーを設定
  const apiKey = 'あなたのGEMINI_API_KEY'; 

  // リクエストURLを設定
  const apiUrl = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=' + apiKey;


  // 音声ファイルのBase64エンコード
  const audioFile = DriveApp.getFileById('データファイルのID');
  const audioData = Utilities.base64Encode(audioFile.getBlob().getBytes());

  // APIリクエストの設定
  const payload = {
    contents: [
      {
        parts: [
          {
            text: "音声を文字起こししてください。"
          },
          {
            inlineData: {
              mimeType: audioFile.getMimeType(),
              data: audioData
            }
          }
        ]
      }
    ]
  };

  const options = {
    method: 'post',
    headers: {
      'Content-Type': 'application/json'
    },
    payload: JSON.stringify(payload)
  };

  // APIリクエストの送信
  const response = UrlFetchApp.fetch(apiUrl, options);
  const result = JSON.parse(response.getContentText());

  // 結果の出力
  Logger.log(result.candidates[0].content.parts[0].text);

  // トークン消費量の計算と出力(以下のコードを使うかどうかはお好みで)
  if (result.usageMetadata) {
    const promptTokens = result.usageMetadata.promptTokenCount || 0;
    const candidateTokens = result.usageMetadata.candidatesTokenCount || 0;
    const totalTokens = promptTokens + candidateTokens;

    Logger.log('トークン消費量:');
    Logger.log('  プロンプトトークン: ' + promptTokens);
    Logger.log('  生成トークン: ' + candidateTokens);
    Logger.log('  合計トークン: ' + totalTokens);
  } else {
    Logger.log('トークン消費量の情報が利用できません。');
  }
}

留意事項

今回は音声データはGoogleドライブに保存したものを使う前提で記事を記載しています。
Googleドライブに保存した音声データのIDの取得方法は、
対象の音声ファイルの点々メニュ(下図①)⇒共有(下図②)⇒リンクをコピー(下図③)とし、まずはファイルのURLを取得します。

そして、メモ帳やアドレスバーに張り付けた時に表示されるアドレスの中の「d/」と「/view」で囲まれた間の文字列が音声ファイルIDになります(下図参照)

さいごに

今日はGeminiAPIで音声データからの文字起こしするコードを紹介しました。
これをGoogleAppSheetと組み合わせると、議事録アプリとかを作れそう!!
とてもワクワクします!

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
Contents