無駄ロボット研究所
Googleのクラウドと連携してロボットが自然にしゃべる ~饒舌! お返事ロボ2 の巻
2019年6月20日 11:30
『無駄ロボット研究所』ではRPA(Robotic Process Automation)ツール「UiPath Studio」を使って役に立たない、無駄なロボットを作っていきます。業務を効率化するという本来RPAで実現すべき目的とは真逆のロボットたちをお楽しみください。
暴言は、なるべく丁寧に、しかもきれいな発音で浴びせかけた方が、より相手にダメージを与えることができますよね。そこで、前回、作成したお返事ロボをバージョンアップしてみました。今度は、音声合成エンジンにGoogleの“Cloud text-to-Speech API”を使います。Google Cloud PlatformのAPIと「UiPath Studio」のパッケージは、本連載でもたびたび使うので、この機会に使い方を詳しく説明しておくことにします。
GCPのT2S APIを呼び出す
せっかくクラウドサービスを使うので、ちょっとそれっぽい小見出しを立ててみました。
Text-to-Speech APIを“T2S”と略すかどうかは知りませんが、渋谷のスタバだとメッキが剥がれてしまう恐れがあるので、大手町の地下街あたりで、呪文のように唱えてみると、ロボ仲間が増えるかもしれません。
さて、前回作成したお返事ロボは、ぎこちない発音がロボ的に魅力的ではありましたが、やはり少し物足りない印象がありました。ロボとは言え、もう少しスムーズにしゃべらせてみたいところです。
そこで、今回は、“Google Cloud Platform”で提供されている“Cloud text-to-Speech API”を使って、しゃべらせてみます。
この方法のメリットは、音声合成エンジンがPC側になくてもかまわないこと、名前空間を扱うためにMain.xamlを書き換える必要がないことです。
もちろん、デメリットもあります。“Google Cloud Platform”でAPIの有効化やアクセス用の秘密鍵ファイルの作成が必要なこと、「UiPath Studio」にパッケージを追加する必要があることです。
これらの準備さえ整えてしまえば、ワークフローの改変は簡単です。それでは、早速、準備を進めていきましょう。
“Google Cloud Platform”を使う
“Google Cloud Platform(GCP)”は、Googleが提供しているクラウドサービスです。コンピューティングやデータベース、機械学習、AI関連のAPI、G SuiteのAPIなどを利用できます。
Gmailを使っている人はたくさんいらっしゃるかと思いますが、同じアカウントで、無料トライアルを開始でき、すぐに利用できます(課金情報の登録は必要)。
今回利用するText-to-Speechもそうですが、GCPで提供されているサービスのいくつかは、利用頻度が一定数以下なら料金はかかりません。ロボットの作成やテストといった目的なら、気軽に使えるので、この機会にアカウントを作成しておきましょう。
なお、クラウドサービスなので、画面構成やサービス名が変わる可能性があります。ただし、似たような項目は必ずどこかにあるので、根気よく探してみましょう。
APIの追加
続いて、利用するAPIを追加します。左上のメニューアイコンから[APIとサービス]-[ライブラリ]を選択すると、利用可能なサービスの一覧が表示されます。今回は、“Cloud Text-to-Speech API”を使うので、これを検索して有効化します。価格なども記載されていますので、事前にチェックしておきましょう。2019年4月26日時点では、月間4Mカウントまで無料で使えますね。
認証情報の作成
APIを登録できたら、このAPIにアクセスするための認証情報を作成します。[認証情報]をクリックして、認証情報を作成します。
認証情報は3種類あります。ざっくり説明すると、API キーはアクセス用の文字列を使って認証する方式、OAuthはWebサービス経由で許可を与える方式、サービス アカウント キーはファイルに保存した認証情報を使う方式です。
今回はサービス アカウント キーを作成します。新しいサービスアカウントを指定して、任意の名前を設定。役割は、本来細かく設定すべきですが、ここでは権限の大きい“オーナー”を選択します。最後にファイルにJSON形式を指定して[作成]をクリックすると、ファイルが出力されます。ダウンロードしておきましょう。
このファイルを使って、「UiPath Studio」からGCPにアクセスしますので、大切に保管しておきましょう。
「UiPath Studio」にパッケージを追加する
続いて、「UiPath Studio」にパッケージを追加します。「UiPath Studio」は、パッケージと呼ばれる拡張機能が用意されていて、これを利用することで、いろいろな自動化に対応できます。
通常パッケージの追加
ツールバーにある[パッケージを管理]をクリックし、左側の一覧で[すべてのパッケージ]を選択します。この状態で、テキストボックスから検索すると、追加のパッケージをダウンロードできます。
今回は「UiPath.GoogleSpeech.Activities」をダウンロードしたいので、“speech”で検索し、項目を選択。[インストール]ボタンをクリックして、[保存]を選択すると、「UiPath Studio」にパッケージが追加され、この機能を使えるようになります。
“UiPath Go!”のパッケージの追加
なお、“UiPath Go!”に掲載されているパッケージを追加したい場合は、現状、少々、手間がかかります。先行公開されているベータ版ではGo!からのダウンロードが簡単にできるようになっているのですが、現行バージョンではレポジトリの手動追加が必要です。
“UiPath Go!”のパッケージの追加方法はオンラインとローカルの2種類があるのですが、とりあえず、ここでは簡単なローカルの方法を説明します。
先ほどと同じ方法でパッケージを管理画面を起動し、左側のメニューから[設定]を選択します。ここに、[ソース]として、PC上の任意のフォルダーを登録し、[ユーザーが定義したパッケージソース]に登録しておきます。
その後、“UiPath Go!”からダウンロードしたパッケージをこのフォルダーに保存すれば、パッケージを管理画面から導入が可能になります。
ワークフローを書き換える
さて、前回作ったお返事ロボをCloud Text-to-Speech API版に変更してみましょう。変更点は以下の通りです。
SpeechSynthesizerクラスは使いませんので、このための2つの代入アクティビティは削除します。
続いて、[イベントハンドラー]の中に配置していた[メソッドを呼び出し]をパッケージとして追加した[Text to Speech]アクティビティに置きかえます。
最後に、[Text to Speech]アクティビティのプロパティを構成します。[LanguageCode]に“"Ja-JP"”を設定、[ServiceAccountFile]にダウンロードしたGCPのアカウント キーファイル(サービス アカウント キーとしてダウンロードしたJSONファイル"。ワークフローと同じフォルダーに保存しておけばパス指定は不要)を指定します。[Text]にしゃべらせたい言葉を格納した変数(ここでは“speechWord”)を指定します。
標準ではMaleが設定されていますが、これがお勧めです。ジェントルで、おだやか。『それって意味がありますか?』なんて言われても、腹が立ちません。