ガイド

Googleスプレッドシートの読み上げ:各行をMP3に

スプレッドシートは、商品名、単語、お知らせ、ゲームや講座のせりふなど、たくさんの短いテキストを置くのに向いています。Googleスプレッドシート自体は読み上げられませんが、各スプレッドシートに組み込まれたApps Scriptなら、音声合成APIを呼び出して音声をGoogleドライブに保存できます。

このガイドでは、SuperClonicaの音声合成APIを使って、選択した行を読み上げ、MP3を保存し、テキストの横にリンクを書き込む短いスクリプトを紹介します。

必要なもの

GoogleアカウントとSuperClonicaのAPIキーです。GoogleかGitHubでSuperClonicaにログインし、ワークスペースの音声合成APIセクションでキーを作成してください。無料プランは1日1分の音声で、数行を試すには十分です。

  • A列にテキスト、B列にはスクリプトが音声ファイルのリンクを書き込みます。
  • シートで「拡張機能」→「Apps Script」を開きます。
  • 「プロジェクトの設定」→「スクリプト プロパティ」にSUPERCLONICA_KEYとしてキーを追加し、コードにキーを書かないようにします。

スクリプト

次の関数をApps Scriptエディタに貼り付けて保存します。選択した行のテキストをAPIに送り、MP3をドライブに保存して、ファイルのリンクをB列に書き込みます:

function voiceRow() { const sheet = SpreadsheetApp.getActiveSheet(); const row = sheet.getActiveCell().getRow(); const text = sheet.getRange(row, 1).getValue(); const key = PropertiesService.getScriptProperties().getProperty("SUPERCLONICA_KEY"); const answer = UrlFetchApp.fetch("https://superclonica.com/api/v1/speech", { method: "post", contentType: "application/json", headers: { Authorization: "Bearer " + key, "Idempotency-Key": "row-" + row }, payload: JSON.stringify({ text: text, voice: "F1", language: "ja", format: "mp3" }), muteHttpExceptions: true }); if (answer.getResponseCode() !== 200) throw new Error(answer.getContentText()); const file = DriveApp.createFile(answer.getBlob().setName("row-" + row + ".mp3")); sheet.getRange(row, 2).setValue(file.getUrl()); }

まずエディタから一度実行して、シート、ドライブ、外部リクエストへのアクセスを許可します。その後は行を選んでvoiceRowを実行します。Idempotency-Keyにより、同じ行を再実行しても同じ音声を待つだけで、二重に読み上げることはありません。

多くの行をまとめて

列全体を読み上げるには、行をループで回し、すでにリンクがある行は飛ばします。Apps Scriptの実行には時間制限があるので、1回の実行で数十行ずつ処理し、残りは再実行してください。APIが429を返したらプランの10分枠を使い切っています。Retry-Afterヘッダーが何秒後に続けられるかを示します。声はSuperClonicaのカタログで選べます。有料プランでは、声のページの「APIで使う」に表示されるIDで、カタログのどの声も使えます。

料金とプライバシー

無料プランは1日1分の音声、月5ドルの「スタート」は10分ごとに3分、休まず使えば月最大216時間です。APIではテキストがSuperClonicaのサーバーに送られ、音声はGoogleドライブに保存されます。パソコンの外に出せないテキストは、無料のSuperClonicaエンジンをローカルで動かしてください。