Google Cloud Text-to-Speech の使い方 日本語テキストを読み上げさせてみよう

Google Cloud Text-to-Speech の使い方 日本語テキストを読み上げさせてみよう
あぱーブログ
2018年5月9日  カテゴリー:WEB  タグ: , , ,
Pocket
LINEで送る

Google Cloud Text-to-Speech は、テキストを読み上げてくれる音声変換サービスです。日本語を含め複数の言語に対応し、機械学習を利用して自然な発音の音声を合成することができます。そこで今回は、日本語のテキストを Google Cloud Text-to-Speech に読み上げさせる手順をまとめてみました。

5秒で試せる Cloud Text-to-Speech

Google Cloud Text-to-Speech のページ にあるデモアプリに、適当な日本語のテキストを入力して言語「Japanese」を選択すれば日本語で読み上げてくれます、利用登録も必要ありません。

Google Cloud Platform の利用登録

Cloud Text-to-Speech API を直接使うには、まず初めに Google Cloud Platform の利用登録が必要になります。(Cloud Text-to-Speech は Google Cloud Platform が提供するサービスのひとつです)登録用のGoogleアカウントを1つ用意しましょう。

Google Cloud Platform トップページの「無料トライアル」をクリックし、Googleアカウントでログインします。

Google Cloud Platform の無料トライアルの登録画面が表示されますので、住んでいる国を選択し「同意して続行」をクリックします。

Google Cloud Platform の無料トライアルの登録画面

次の画面で「住所」「名前」「電話番号」「クレジットカード番号」(これらの項目は必須です)を入力し、「無料トライアルを開始」をクリックします。

項目の入力と「無料トライアルを開始」をクリック

以上で登録完了です。しばらくすると Google Cloud Platform のコンソール(管理画面)が表示されます。

Google Cloud Platform のコンソール

プロジェクトの作成

Cloud Text-to-Speech のテスト用に新しいプロジェクトを作成します。(テストが終わったらプロジェクトを削除するだけで片付けができます)

「プロジェクトを選択」(もしくは「My First Project」)をクリックします。

「+」ボタンをクリックします。

適当なプロジェクト名を入力して、「作成」をクリックします。

1分ほどでプロジェクトが作成されますので、選択します。(自動で選択されている場合もあります) 

Cloud Text-to-Speech API の有効化

続いて今回の本題、Cloud Text-to-Speech API を有効化します。Standard (non-WaveNet) voices は、月間400万文字までは無料で使えます。(より自然な発音を可能とする WaveNet voices は、現時点では日本語に対応していません。2018年5月9日現在)

参考資料:Pricing | Cloud Text-to-Speech API

左上のハンバーガー「≡」メニューから「APIとサービス」>「ライブラリ」を選択します。

かなりの数の APIがあるので「Text-to-Speech」を検索して選択します。(名前が似ている Cloud Speech API は "音声を" テキストに変換してくれるサービスです。 間違えないようにしましょう)

「有効」にするをクリックします。

以上で Cloud Text-to-Speech API が有効になりました。

Google Cloud SDK のインストール

Cloud Text-to-Speech API の認証情報を作成するのに Google Cloud SDK が必要になりますので、インストールします。

SDKのインストールの前に、システムに Python 2.7 がインストールされていることを確認します。最近のmacOSやCentOS7であれば、Python2.7がインストールされていると思います。(今回はmacOS10.13のマシンにインストールしました)

$ python -V
Python 2.7.10 ← インストールされている

ローカルPCがWindowsの場合は「Windows 用のクイックスタート | Cloud SDK のドキュメント」ページから、インストーラをダウンロードできます。

SDKをインストールしたいディレクトリに移動して、以下のコマンドを実行します。

$ cd ~
$ curl https://sdk.cloud.google.com | bash

SDKのインストール先ディレクトリの指定です。よければそのままエンターを押してください。SDKのダウンロードが始まります。

Installation directory (this will create a google-cloud-sdk subdirectory) (/Users/foo): <そのままエンター>

SDKがクラッシュした場合に、匿名化された使用データをGoogleに送ってもいいか聞かれます。(ここはお好みで選択してください)

Do you want to help improve the Google Cloud SDK (Y/n)?

シェルの設定ファイルに SDKコマンドへのパスを追加してもいいか聞かれますので「Y」を入力してください。

Modify profile to update your $PATH and enable shell command
completion?
Do you want to continue (Y/n)? Y

シェルの設定ファイルのパスの確認です。よければそのままエンターを押してください。

Enter a path to an rc file to update, or leave blank to use
[/Users/foo/.bash_profile]:

シェルの設定ファイルを再読み込みして「gcloud」コマンドが実行できることを確認します。

$ source ~/.bash_profile
$ gcloud help
(ヘルプが表示されればOKです)

続いて Google Cloud SDK の初期化を行います。

Google Cloud SDK の初期化

Google Cloud SDK の認証

Googleアカウントで Google Cloud SDK をアプリ認証します。以下のコマンドを実行してください。

$ gcloud init

Googleアカウントにログインしていいですか? と聞いてきますので「Y」を入力します。(WEBブラウザが開きます)

You must log in to continue. Would you like to log in (Y/n)? Y

Google Cloud Platform で使っている Googleアカウントを選択します。

Google Cloud SDK のリクエストを許可します。(この許可はGoogleアカウントの管理画面でいつでも取り消すことができます)

「Google Cloud SDK の認証が完了しました」が表示されたら、ターミナル(コマンドプロンプト)に戻ります。

プロジェクトIDの選択

ターミナルに戻ったら、先ほど作成したプロジェクトのIDを選択しておきます。

Pick cloud project to use:
[1] my-first-project-203409
[2] text-to-speech-test-203409
[3] Create a new project
Please enter numeric choice or text value (must exactly match list
item): 2

(捕捉)Google Cloud SDK の設定情報は「/<ホームディレクトリ>/.config/gcloud/」以下に保存されます。

以上で Google Cloud SDK を使う準備ができました。

認証情報の作成

Cloud Text-to-Speech API の認証情報を作成します。

「IAM と管理」>「サービスアカウント」を選択します。

「+サービスアカウントを作成」をクリックします。

適当なサービスアカウント名を入力し、役割「Project オーナー」を選択します。続いて「新しい秘密鍵の提供」にチェックを入れて「保存」をクリックします。(キーのタイプは「JSON」のままでOKです)

サービスアカウントが作成されると、キーファイルがダウンロードされます。(メッセージの通りキーファイルの取り扱いには注意しましょう!)

以下のコマンドを実行して、認証情報を指定します。

gcloud auth activate-service-account --key-file=<キーファイルのパス>

環境変数「GOOGLE_APPLICATION_CREDENTIALS」にもキーファイルのパスを追加しておきます。

export GOOGLE_APPLICATION_CREDENTIALS=<キーファイルのパス>

Cloud Text-to-Speech API へのリクエスト実行

かな〜り下準備が長くなりましたが、いよいよ Cloud Text-to-Speech API へのリクエスト実行です。

まずリクエスト用の JSON ファイルを作成します。(ファイル名はなんでもかまいません)「text」フィールドに読み上げてほしいテキストを入力します。

vi synthesize-input.json

参考資料:Cloud Text-to-Speech API | APIs & Reference

curl コマンドで Cloud Text-to-Speech API にリクエストを投げます。-d オプションで先ほど作成した、リクエスト用の JSON ファイルを指定します。(パスの先頭に「@」をつけるのを忘れずに!)

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @<JSON ファイルのパス> \
https://texttospeech.googleapis.com/v1beta1/text:synthesize > synthesize-output.txt

下のような内容が「synthesize-output.txt」に出力されます。「audioContent」フィールドの値が base64 でエンコードされた音声データです。(メチャクチャ長いです)
cat synthesize-output.txt

{
"audioContent": "//NAxAAR4EooAAjGJBwAABE(略)
}

音声ファイルにデコードしますので「audioContent」の値を「synthesize-output-base64.txt」というファイルにコピーします。(ファイル名はなんでもかまいません)
vi synthesize-output-base64.txt

//NAxAAR4EooAAjGJBwAABE(略)

最後に base64 コマンドで音声ファイルにデコードします。

base64 synthesize-output-base64.txt --decode > synthetic-audio.mp3

読み上げてもらった音声サンプル

Google Cloud Text-to-Speech で読み上げてもらった音声がこちらです。

こちらは同じテキストを IBMクラウドの Watson Text to Speech で読み上げてもらった音声です。どちらも個性がありますね(^^)

おわりに

日本語も WaveNet Voices に対応してくれるといいですね。次回は、競合となる IBM Cloud の 音声合成サービス Watson Text to Speech を試してみたいと思います。

スポンサーリンク
Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です