GCPでテキストを音声にするAPIを実行する

5月 1, 2020

みなさんこんにちは。
先日は音声をテキストにするAPIを試しました。
本日はその逆の挙動を確認してみます。
Google CloudのText-to-Speechでそれは実現できます。

GCPのナビゲーションメニューからAPIとサービス→ライブラリと進みます。

検索窓にtextとかspeachと入力すると見つかります。
クリックして次に進みましょう。


次の画面で「有効にする」ボタンを押さないと始まらないのでクリックして有効にします。

その後サービス アカウントキーの作成、Cloud SDKのインストールが必要となりますが前回作成したので省略します。
https://minokamo.xyz/?p=1188の「音声をテキストにする記事」で説明してます。

クライアントがwindowsであることが前提ですが、インストールしたCloudツール(PowerShell)で下記のコマンドを入力します。PAHTの部分にサービス アカウントキーの作成の時ダウンロードした.jsonファイルの場所を指定します。

$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
例
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\minok\OneDrive\ドキュメント\gcp\XXXXXXXXXXXX.json"

続いてリクエストの承認トークンを取得するコマンドを入力します。

gcloud auth application-default print-access-token

まだ作業は続きます。APIにリクエストするJSONファイルを作成しなければなりません。今回使用するものが下記のものとなります。ファイル名はsample.jsonとしました。

{
  "input":{
    "text":"こんにちは。新型コロナで世界中が危機的状態です。"
  },
  "voice":{
    "languageCode":"ja-JP",
    "name":"ja-JP-Wavenet-A",
    "ssmlGender":"FEMALE"
  },
  "audioConfig":{
    "audioEncoding":"MP3"
  }
}

https://cloud.google.com/text-to-speech?hl=jaでJSONを表示すれば大体意味があかるのではないでしょうか。textの所にあった英語は削除して、自分で考えた日本語にしてあります。


それではPowerShellで順に下記のコマンドを3つ入力していきましょう。

$cred = gcloud auth application-default print-access-token

$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest   -Method POST   -Headers $headers   -ContentType: "application/json; charset=utf-8"   -InFile C:\Users\minok\OneDrive\ドキュメント\gcp\sample.json   -Uri "https://texttospeech.googleapis.com/v1/text:synthesize" | Select-Object -Expand Content

出力結果は
{
“audioContent": “//NExAASCCIIAAhEAGAAEMW4kAYPnwwIKw/BBTpwTvB+IAxIfghUfW.."
}

の形式であり、JSON出力には、合成された音声がbase64エンコード形式で格納されています。下が結果のスクショとなります。


audioContentの値を「123.txt」というファイルで名前を付けて保存しておきます。かなり長い文字列なので色々なショートカットキーを駆使してコピペしましょう。

次にbase64のデコードの作業を行いますが、windowsに搭載されているcertutilコマンドを使ってファイルをBase64でエンコード/デコードできます。
簡単に作業できるように123.txtファイルがあるフォルダにCDコマンドで移動します。コマンドプロンプトでもPowerShellでもOKです。

cd C:\Users\minok\OneDrive\ドキュメント\gcp

あとはデコードすればOKです。jsonファイルの中身でmp3と指定しているので下記のコマンドを入力しましょう。123.txtと同じフォルダにファイルが作成されます。

certutil -decode -f 123.txt decoded.mp3

次のファイルがテキストを音声にした結果となります。

教育

Posted by admin