golang で Google の Text-to-Speech を使う

Go

Google Home mini に任意の文章を読み上げさせるために https://github.com/ikasamah/homecast をいじって使ってましたが、これは https://translate.google.com/translate_tts?client=tw-ob&ie=UTF-8&q=テスト&tl=ja といった Google 翻訳の非公式(?) API にアクセスしていました。その後、Google は Cloud Text-to-Speech サービスを発表したので Go でこの API を使ってみます。

cloud.google.com/go/texttospeech/apiv1 を使えば良さそうです。これを使った例もあったので参考にさせていただきました。

Google Cloud Developer Console でプロジェクトを作成し、Cloud Text-to-Speech API を有効にし、サービスアカウントを作って JSON 形式の秘密鍵をダウンロードします。
GOOGLE_APPLICATION_CREDENTIALS という環境変数にこの JSON ファイルへの PATH を設定します。(アプリケーションに認証情報を提供する)

go get
go build
echo "テキストメッセージ" | ./tts

このようにすることで speech.mp3 というファイル(出力先ファイルは -o オプションで指定可能)が作成されます。-v で voice name を指定できます、日本語は ja-JP-Wavenet-A or ja-JP-Standard-A の2つが指定可能で、Wavenet はより高品質らしいが料金も高い (料金体系)