GCPのCloud Text-to-Speech APIを利用する簡単な方法(cURLを利用)


はじめに

GCP(Google Cloud Platform)には、Cloud Text-to-Speechというテキストから音声に変換するサービスがあります。
今回は、cURLを利用し、とりあえず難しいことを考えずにサクッと使ってみます。

事前準備

Cloud Text-to-Speech APIドキュメントの「クイックスタート: コマンドラインの使用」の『始める前に』を参考に環境の準備を進めます。
https://cloud.google.com/text-to-speech/docs/quickstart-protocol

Cloud SDKは下記よりダウンロード可能です。
https://cloud.google.com/sdk/docs/

コマンド

次のコマンドを実行します。

curl \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
--data "`cat <入力ファイル名> | sed 's/"/@@@/g' | sed "s/@@@/'/g"`" \
"https://texttospeech.googleapis.com/v1/text:synthesize" | \
jq -r '.audioContent' | \
base64 --decode  > <出力ファイル名>.mp3

入力ファイル

次のような内容のJSONファイルを指定します。(絶対パスまたは相対パス)
囲み文字はダブルクォート、シングルクォートどちらでもOK(コマンド側で差異を吸収)

※文字列にシングルクォートやダブルクォートが存在する場合の考慮はしていないので、そのような文章を処理する(sedで加工する)必要がある場合は、適宜調整が必要となります。sedで加工するのが面倒な場合は、予めテキストエディタ等でダブルクォートをシングルクォートに置換しておきます。

{
   'input':{
      'text':'Android is a mobile operating system developed by Google,
         based on the Linux kernel and designed primarily for
         touchscreen mobile devices such as smartphones and tablets.'
   },
   'voice':{
      'languageCode':'en-gb',
      'name':'en-GB-Standard-A',
      'ssmlGender':'FEMALE'
   },
   'audioConfig':{
      'audioEncoding':'MP3'
   }
}

なお、下記URLの「試してみましょう」で文章と条件を設定し、「Show JSON」をクリックすると、上記フォーマットと同様のJSONテキストを取得することができます。非常に便利です。

Cloud Text-to-Speech
https://cloud.google.com/text-to-speech/?hl=ja

以下の出力結果を、ファイルとして保存します。

出力ファイル

任意のファイル名を指定します。拡張子はmp3とします。

参考情報

Cloud Text-to-Speech API ドキュメント
https://cloud.google.com/text-to-speech/docs/?hl=ja