ポータブルお話aiを賢く表現豊かにしたい

ポータブルお話aiを賢く表現豊かにしたい

もっと色々賢く、そして表現豊かにしたい!
会話を通じてできる事は割とサクサク出来たが、体を作ろうとすると難しかった。

過去の記事はこちら
話せるaiを小型化したい

■天気予報

イメージはこうだ。
朝起きてリビングへ向かうと、AIが「おはようございます。今日の天気は晴れです。今朝のニュースはこうです」みたいに画面とか壁に映像を写してくれる、そんなSFな世界が少しでも出来たら面白そうではないか。実用的だし。

壁に映像を写すならプロジェクターを組み込む必要があるが、物理的な組み込みは現段階でやるべきではない。
まずは今回の本質となる天気情報を取得するところからやるべきだと思った。

結果、あれこれやってみたら、出来た。
実際に動かすと、このようになる。

■自然な会話

ここまで良くみている人なら気づいているかもしれないが、実はこのAIは直前に話した事を忘れている。
忘れているというより、毎回新しい会話として始めているのだ。
つまり、直前に話した話題を再び話しても、AIは「さっき同じ話ししたよね?」なんて思わずに回答してくれる。
そこは「先ほども話したとおり、こうだよ」みたいに回答して欲しい。

そこで、会話履歴を保持するようにした。
しかしこの仕組みには問題があった。
プログラムを終了すると記憶が消えてしまうのだ。
プログラムの終了という事は電源を切っても勿論消えてしまう。

次に起動して話した時は、前回の会話を覚えていないので毎回初めてのお話になるのだ。
そうなると私の好みなんて覚えてくれない。メロンソーダが好きとか、宮城出身だとか、そういう話をしても、次回には忘れているのだ。
それは悲しい。一期一会でなければ普通の人は覚えておいて喜ばれる事は覚えておく物だ。

そこで、会話の内容から、AIが自ら記憶すべきか否かを判断し、記憶すべきと判断した物はデータベースに記録する事にした。
記憶は消えてしまうが、記録はプログラム起動時に読み込めば復元できるので次回に引き継げるのだ。
併せて、会話履歴も記録する事にした。但し、記録する一方では記録領域を圧迫する為、閾値を設けて何日間か経過したら自動的に削除するようにした。
例えば、普通は今日とか明日とか昨日の話で、翌週や先週の話は少なく、来月や先月の話はもっと少なくて、来年や去年の話は滅多にしない、と私は考えた。
過去の会話履歴は1年も保持すれば充分だと思ったが、とりあえず今は開発段階なので1時間で削除されるようにした。

外見は殆ど変わっていないが、会話内容がより自然になっている。
実際に動かすと、このようになる。
AIなのに水着を着て海へ行こうとして会話の流れが自然になっている事がわかる。

■首と肩、調べ物

既に画面に顔が表示されて口パクもして、音声も感情に応じて変わる。
そこで、もう少し人間らしくしてみたくなった。
しかし脚は難易度が高い事を知っているし、指も難しいのは知っている。
そこで、首や肩を付ける事にした。
首があれば相槌ができるようになる。カメラは未搭載だが、重さや処理能力が足りれば顔認識して視線で追ってくれるようになるかもしれない。
肩があれば万歳が出来る。肘を増やせれば頬杖をついたりできるかもしれない。
まずは出来る事からやってみよう。
首をつけて上下左右の動きが出来るようになった。これで頷けるし、左右を見渡す事ができる。傾ける事ができれば悩んでいる様子もアピールできるかもしれない。
肩をつけて万歳できるようになった。プログラムを起動したら「やったー」と言わんばかり万歳するし、回答文が嬉しい内容であれば万歳するようになった。肘や指が実装できたら、照れた時にモジモジさせたいし、怒った時に腰に手を充ててプンプンさせたい。AIは怒りを現す回答文は指示しない限り生成しないのでプンプンさせるのは意外と難易度が高いかもしれない。

ここまでのAIは、AI自身のデータを基に話している。
よって、AIが基から学習していない事を質問すると分からないと答えたり、知ってる体裁ででたらめな事を答えてハルシネーションを起こす事もある。
そこで、分からない事は自分で調べて検索結果を基に回答文を生成するようにした。
予めテストの段階でAIは「ラッコが居る水族館」「キーウィが居る動物園」を未学習だと分かった。
なお、「ラッコが居る水族館」はこの動画の前に会話していたせいで会話履歴に残っていたため、鳥羽水族館に居る事を学習している。

■まとめ

AIに首と肩を付けて身体を与えたら、配線が露出するようになった。まるでロボットみたいだ。
博覧会とか科学館みたいな所で展示されるロボットはボディパーツが上手く組み込まれていて、配線は良い具合に収納されている。
あれは巨大プロジェクトの成果物なので実現可能なのだろう。個人だと、配線剥き出しとか、3Dプリンターでカバーやケースを印刷するのが現実的だろう。
3Dプリンターも材料となるフィラメントも思ったより高額で、どれを選んだらよいのか分からない。
まずはこの勉強をする必要がありそうだ。

他にも、タイヤとか脚を付けて自分で考えて動けるようにしたい。
理想はドローンみたいに飛ばしてみたいんだけどね。

開発カテゴリの最新記事