無駄ロボット研究所

退職するので返事するのもロボットにお任せ ~豪胆! お返事ロボ の巻

『無駄ロボット研究所』ではRPA(Robotic Process Automation)ツール「UiPath Studio」を使って役に立たない、無駄なロボットを作っていきます。業務を効率化するという本来RPAで実現すべき目的とは真逆のロボットたちをお楽しみください。

 毎日、毎日。毎回、毎回、もう返事をするのもめんどくさい――。そんな投げやりになる気持ちもわかります。上司への謝罪、同僚の無駄話など、どうでもいい会話は、もうロボットにまかせましょう。あなたの代わりに返事をしてくれますよ。

退職が決まったら

 今回のロボットは、我ながら、非常に画期的だと感心しています。単に労力を省くだけでなく、心の負担まで軽くしてくれるロボットなんて、そうはありません。

 しかし、やはり、実際に使うのは、退職が決まってからにすることを強くおすすめします。そうでないと、人間関係が壊れ、修復不可能になるかもしれません。

 そんな諸刃の剣のようなロボットが、今回、作るお返事ロボです。

 ファンクションキーに割り当てたメッセージをPCの音声合成機能を使って、あなたの変わりにしゃべってくれます。

 本研究所で用意したのは、会社でよく使う。『了解しました』『すみません気をつけます』『それって意味ありますか?』という3つのメッセージです。

 上司からの依頼があったとき、怒られたとき、どうでもよくなったとき、そんなときに使ってみましょう。

ワークフローのポイントをチェック

 さて、このロボットは、作るのにちょっと工夫が必要です。以下のように、ワークフロー自体は、それほど複雑ではありませんが、音声合成は「UiPath Studio」が標準ではサポートしてない機能となるので、ちょっとファイルを加工する必要があります。

今回作るワークフローの全体像。ワークフロー自体は、さほど複雑ではない

Main.xamlへの追記

 テキストを音声としてしゃべらせるための音声合成エンジンは、Windows 10であれば標準でインストールされていますが、「UiPath Studio」から、このクラスの名前空間を扱うにはプロジェクトファイル(Main.xaml)に以下の4つの記述を追加する必要があります。

 「UiPath Studio」でプロジェクトを新規作成後、一旦、「UiPath Studio」を閉じ、Main.xamlをテキストエディタなどで開いて、以下の4つを画像で示した場所に追記しましょう。

xmlns:sss="clr-namespace:System.Speech.Synthesis;assembly=System.Speech"
System.Speech.Recognition
System.Speech.Synthesis
System.Speech
それぞれの行を追記する場所。基本的に各セクションの末尾に追記すればいい

[代入]でインスタンスを作成

 さて、これでSpeechSynthesizerクラスを扱えるようになりました。[代入]を配置し、左辺に“speechSynth”、右辺に“New SpeechSynthesizer”と入力します。

 もちろん、このままではエラーが発生するので、“speechSynth”の型を変更します。[変数]パネルの[変数の型]で[型の参照]を選択し、“speechSynth”を検索して設定します。先ほどMain.xamlに情報を追記したおかげで、この名前空間を扱えるようになったわけです。

Main.xamlへの追記がないと表示されないので注意

[代入]でボリュームを設定

 続いて、[代入]の左辺に“speechSynth.Volume”、右辺に“100”としてボリュームをSpeechSynthesizerのプロパティに設定します。ここではボリュームしか設定していませんが、このほか“SpeechSynth.Rate”で読み上げ速度も設定できます。

[並列]

 ここから、キーボードの入力を待機する処理を記述します。ここでは、3つのメッセージをしゃべらせますが、このうちどれが実行されるかはユーザーの選択次第です。なので、どれが実行されても対応できるように、[並列]アクティビティの中に複数の処理を配置します。

イベントを監視

 ここでは、メッセージを[F1]、[F2]、[F3]のそれぞれのキーに割り当て、キーが押されたら設定されたメッセージをしゃべらせます。このため、キーが押されたことを検知するために“イベントを監視”アクティビティを使います。

 検知させるのはキー入力なので、[ホットキートリガー]アクティビティを“ここにトリガーアクティビティをドロップ”の部分に配置します。とりあえず、検出するキーは“f1”にします。

代入

 イベントを監視で実行する処理は[イベントハンドラー]の中に記述します。まずは、しゃべらせるメッセージをセットします。

 [代入]を使って、左辺に[Ctrl]+[K]キーで“speechWord”変数を作成し、変数パネルでString型に設定しておきます。右辺には、しゃべらせたいメッセージ(ここでは“"了解しました"”)を設定します。

メソッドを実行

 しゃべらせるために必要な情報が揃いましたので、いよいよしゃべらせます。クラスのメソッドを呼び出すには[メソッドを呼び出し]アクティビティを使います。TypeObjectに“speechSynth”を、MethodNameに“Speak”を選択します(要するに“speechSynth.Speak”)。

 そして、プロパティパネルの[パラメーター]の右側にある[...]をクリックします。ここで方向に“入力”、型に“String”、値に“speechWord”をセットします。ここでしゃべらせる言葉を設定するわけです。

並列にコピーして設定を変更

 ここまでできたら、後は並列で横に同じものを並べるだけです。アクティビティをコピーするなどして、[F2]キーを押した場合、[F3]キーを押した場合と、同じように作っていけばOKです。

 ワークフローを実行すると、キー入力を待機するので、[F1]キーや[F2]キーを押して、普段の返事に活用しましょう。

 Windows 10の標準の音声合成エンジンはHarukaなので、ちょっとぎこちないのが難点ですが、その分、聞かされた方の沸点の上がり具合も高くなります。Google Speech APIを使うと、かなりスムーズに話せるようになるので、次回、少し説明することにしましょう。