こんにちは、くのへです!
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と組み合わせると、議事録アプリとかを作れそう!!
とてもワクワクします!