任意のメタバースで音声対話が可能なAIアバターの作り方
概要
メタバース上で、悩みやビジネスの相談ができるようなAIアバターのつくり方の例をここでは取り上げます。たとえば、下図のようにWebフォームで質問を行うと、返答をフォームに表示するとともに、メタバース上のアバターが音声で話してくれる仕組みです。図書館やオフィス内で学習する際に、パートナーとして使うことができます。
図書館やオフィス内で自分の声で質問することはほとんどないでしょうから、そうした環境では、Webフォームによるテキスト入力が向いています。
もう1つは音声入力の場合です。VRゴーグルを装着していたり、パソコン等からメタバースに接続しているものの、キーボードを使ってテキスト入力が難しい場合に向きます。
この2つのタイプについて、実際に動く様子を見たい場合は下記のYouTube上のデモ動画をご覧ください。
用意するもの
サーバーの用意
音声入力対応の場合は、Node-REDがインストールされたサーバー(仮想とベアメタルどちらでも可)を2台用意してください。
Webフォームから入力する前提の場合は、Node-REDがインストールされたサーバー(仮想とベアメタルどちらでも可)を1台用意してください。
Node-REDのインストール手順
Nod-REDで必要なノード(ノードとは、Node-REDで使用する箱状の部品のこと)
https://flows.nodered.org/node/node-red-contrib-simple-chatgpt
https://flows.nodered.org/node/node-red-contrib-simple-chatgpt-instruct
フロー等のNode-RED用語は、公式ドキュメント をご覧ください。
AI部分に、生成AIとシナリオベース(ルールベース)のどちらを使うべきか
生成AIは、ChatGPTやWatsonx.aiのような仕組み、シナリオベース(ルールベース)はWatson AssistantやBotpressのように予め決められた会話の流れに従って応対する仕組みのどちらを使うべきか、1つの判断基準として、それぞれの仕組みで考える方法があります。
「○○について申請方法をガイドしてほしい」という利用者の質問に対して、
生成AIの場合
回答の精度は、質問毎に生成するので、その都度異なる。
都度返答を作成し、利用者に回答します。したがって、同じ質問でも、回答毎に異なる返答文になるため、利用者の読解力が必要です。
回答毎に回答が異なるので、それが人間味があって好ましいと感じることがあるかもしれません。
シナリオベース(ルールベース)の場合
決められた会話に従うので、常に同じ回答になる。
常に同じ文章を返答します。したがって、同じ質問であれば、常に同じ回答になります。生成AIのように、利用者の読解力を試すようなことはしません。
常に同じ回答を返すので、それが機械的だと感じるかもしれません。
どちらの場合でも、Node-REDに組み込むことは可能です。
シナリオベース(ルールベース)で回答不可の場合に、生成AI で回答する仕組みをNode-REDで作ることができます。
音声入力の仕組み作り
概要としては下図のような仕組みになります。IoTデバイス開発の知識が必要になります。例としてNode-REDを使っています。Node-REDを使うことは必須ではありませんが、非エンジニアには、コードを書くよりは、Node-REDを使った方が機能拡張やメンテナンスが行いやすいです。
Node-REDでフローを実装すると、次のようになります。下図は、Amazon EchoやAlexaアプリをインストールしたスマートフォンから音声入力を行う場合のフローです。使用するスマートスピーカーに合わせて、Node-REDでフローを用意します。
このフローは、各スマートスピーカーメーカーごとに少しずつ異なるので、音声入力の場合は、上記はAmazon関係用であるように、各デバイスに合わせたものを作成する必要があります。
MQTT Brokerの用意
サーバー間でメッセージを送信する仕組みとして、MQTTを使うため、MQTT Brokerを用意します。無料で使えるものであれば、 があります。MQTTは、IoT分野では枯れた技術のため市販のソフトウェアやオープンソースソフトウェアを使って自分で用意してもよいです。
音声出力の仕組み作り
「音声入力の仕組み」と同様に、Node-REDを使って、「音声入力対応の音声出力の仕組み」や「Webフォームを含めた音声出力の仕組み」を作ります。2つの違いは、MQTT Brokerからメッセージを受け取る仕組みの有無です。音声入力の場合は、MQTT Brokerからメッセージを受け取る仕組みが必要になります。
音声入力に対応する音声出力の仕組み
<ChatGPT APIを採用した場合>
を使うことで、ChatGPTの呼び出しに対応しています。音声出力は、ChatGPTの返答を「IBM Watson」の「Text to speech」に渡すことで、音声を生成し、「play audio」ノードで音声を再生します。
Webフォーム入力に対応する音声出力の仕組み
<ChatGPT APIを採用した場合>
を使うことで、ChatGPTの呼び出しに対応しています。音声出力は、ChatGPTの返答を「IBM Watson」の「Text to speech」に渡すことで、音声を生成し、「play audio」ノードで音声を再生します。
AIアバター用サーバーの起動とメタバース接続
例として、「AIアバター用サーバー」として、Windowsマシンを使っている場合について説明します。また「AIアバター用サーバー」ではディスプレイ付きのマシンを用意しましょう。ディスプレイがあることで、「音声出力の仕組み」のNode-RED環境で処理されている会話をモニタリングすることができるとともに、必要に応じて、AIアバターに人間が介入することができます。人間が介入できる仕組みは、もともと医療系の利用を想定したものになります。
(1)「音声出力の仕組み」のNode-RED環境をWebブラウザで開きます。Google Chromeを使っているものとします。
(2) メタバースには、WebブラウザのMicrosoft Edge を使ってアクセスしているものとします。
(3) (1)のWebブラウザの音声出力を、(2)のWebブラウザの音声入力となるように、Windows環境では「アプリの音量とデバイスの設定」を使って制御します。
異なるWebブラウザ間の音声の受け渡しには、WindowsおよびMacに対応するVB-CABLE Virtual Audio Deviceを使っています。
「AIアバター用サーバー」がLinux環境の場合は、「Pulse Audio」を使って、(1)と(2)の異なるWebブラウザ同士の音声入出力を制御することができます。
下図では、Node-REDの表示が(1)に該当し、メタバースの表示が(2)に該当します。Node-REDには音声認識結果のメッセージやWebフォームからの入力と、AIからの返答の出力が表示されるため、どのような情報が入力し、返答として出力されるか、わかりやすく表現されています。
今後の展開予定(開発中を含む)
生成AIとシナリオベース(ルールベース)のAIを混在させた仕組みの開発
アバターカスタマイズ
よりのめり込みそうな空間デザイン