はじめに
はじめまして。昨年9月末に第一子が誕生した2年目パパです。
昨年のAdvent Calenderで記事を書いてから、はやくも1年が経過してしまいました。(昨年の記事はこちら)
さてさて話は変わり、
少し前にふと、いずれ来るであろう息子からの"なぜなぜ攻撃"にいかに向き合えば良いものだろうか?と思い悩みはじめました。思考を巡らせた結果、あ!ChatGPTに全て任せたらラクになるのでは!?という考えに至りました。
そしてせっかくなら、おもちゃへなぜなぜ質問し、おもちゃが回答してくれたら息子も喜ぶであろうなと思い、偉大なるyoutuber「よめ子」先生が出された動画でAIファービーを発見したわけです。
しかしながら、非エンジニアの「よめ子」先生と同様、私はIT業界に足を踏み入れて長いものの、分野的にプログラムを書くという営みには存分に慣れておりません。(VBAやCloudformation、Terraformとかくらい)
ついでに今回メインで利用するラズパイも初めて扱ったので、基本的にはほぼ初めての経験でした。
「とりあえずやってみる」精神で、ChatGPTに相談しながら試行錯誤してみた結果、完成しちゃいましたので、クリスマスに先駆けてご紹介したいと思います。
そもそもAIファービーとは?
↑ の「よめ子」先生の動画を閲覧すれば一目瞭然ですが、その名のとおり、一世風靡したおもちゃ"ファービー"をChatGPTと連携させた、おしゃべりAI魔改造人形です。
余談)ちょうど今年ファービーのNew版が出たようです。個人的には、旧型ファービー(今回使用したもの)が好みです。
この記事を読み進めるにあたって
この記事では、実際に作成したプログラムの紹介はしておりません。
(プログラムを書くという営みに深い経験がなくお見苦しすぎる状態であること、何だかんだイチから作りあげた喜びは得られるものが大きいと思うので、あえて紹介しておりません)
ChatGPTを活用していかにAIファービーを作成したかのプロセスをご紹介とさせて頂きます。
私はChatGPTの有料プランを利用していますが、ChatGPT関係なく生成系AIサービスを駆使すると無料でも何とか対応できると思います。ただし、連携するChatGPT APIには別途料金が発生したりしますのでご注意ください。
AIファービーの作り方
1.必要な材料を揃えよう
(実際に作ったプロセスとは若干前後してしまいますが、)まずは必要な材料集めです。
最終的には、部品等をファービーの体内に閉じ込めたおもちゃとして完成させたいという思いがありましたので、類似した海外の方の作品(ファービーとAmazon Alexaを連携したもの)を参考に、部品として何が必要かを確認しました。
しかし現在は、調達が難しいor高価な部品等も使われていたため、代替できる部品に置き換えたりしました。もちろん、材料選びでもChatGPTに相談しながら代替できる部品か?などの確認を行いながら調達しました。
No | 材料 | 説明 |
---|---|---|
1 | ファービー(旧型) | AIファービーの本体となるおもちゃです。旧型は、個人間フリマサイトやオークションでの調達になります。 |
2 | Rasberry Pi Zero W (ラズパイ) |
AIファービーの頭脳を入れ込む装置です。モーター制御の結線やmicroSDカード挿入口、wifiなどを備えています。最終的にファービー内に部品を収納したかったため、小さいこちらのZero Wを採用しました。 |
3 | DCモータードライバー | AIファービーの目や口を動かすためのモーター制御をする部品です。ラズパイに繋げます |
4 | オーディオアンプモジュール | スピーカーと繋ぐモジュールです。ラズパイに繋げます。 |
5 | マグネットスピーカー(0.5W 32 Ohm) | ファービーにつなぐスピーカーです。ファービーに元々存在するスピーカーを上手く使えば再利用できるかもしれませんが、私は新しいスピーカーに置き換えました。 |
6 | miroSDカード | ラズパイのOS、作成したプログラムを格納するためのSDカードです。ラズパイに差し込みます。 |
7 | USBマイク& USB to microUSB変換アダプタ |
なるべく小さくまとめたかったので、小さめのUSBマイク、ラズパイに接続するためにUSB-microUSB変換アダプタを購入しました。 |
8 | 部品を接続する道具類 | はんだごて、ジャンパーワイヤー、ワイヤーケーブル、ワイヤーストリッパー、ラジオペンチなどなど |
2.アーキテクチャ図を作成しよう
「よめ子」先生の動画内で作成されていたアーキテクチャ図を参考に、自分の持つ環境で、どのような構成にするか、何のサービスを利用するのかをざっくりと図に起こしました。「よめ子」先生は、Macbookで音声変換プログラムを動かしていましたが、私は自宅にIntel NUCを利用したESXiのプライベート仮想環境を作っているため、そこに仮想マシンを作って動かすように変更しています。
3.頭脳を作ろう
動画内では具体的にどんなプログラムを作成したかの詳細説明まではなかったため、「よめ子」先生のアーキテクチャ図をスクショし、ChatGPTに以下のようなざっくり質問で、おおよそ利用するであろうサービスを洗い出しました。
この質問だけでも、ざっくりとChatGPTはコードを作成してくれましたので、あとはちまちまと、どういったディレクトリ構成でプログラムを作成していけば良いか?どういったパッケージが必要か?など、何から何まで質問をしまくって作りました。(ものすごく端折ってますが、ラズパイ環境設定やVOICEBOXの環境準備やChatGPTのAPI登録作業など、諸々作業もこのプロセス内に含まれています)
ちなみにパッケージインストール時にエラーが出たりなど、エラーが頻発したりもしましたので、画面キャプチャをChatGPTに添付して送り、ChatGPT頼りに動くプログラムを作り上げました。
4.目と口を動かそう
↑ でざっくりとしてプログラムは出来上がっているものの、実際にプログラムと実物モーターの関係性や、ラズパイとどういう結線をしたら動くのかなど、全くもって知見がありません。
そこで、ラズパイとモーターを制御している良さげな結線図をキャプチャして、こちらもまたChatGPT頼りに諸々の仕組みを理解していきました。
理解しながら、実際にテスト結線して回答したり目や口が連動して動くことを確認していきました。
5.組み立てよう
テスト結線で動くものが完成したら、テスト結線から誤りのないよう、はんだづけして結線していきます。ファービーの体内に諸々の部品を収納するのに細かな作業が必要なため、火傷に細心の注意を払いながら作業し、なんとかファービー体内に収めることができました。おそらく中学生ぶり?にはんだづけするのは楽しかったです。
(ラズパイはどうにも体内に収めることができませんでしたが、某ダ〇ソーで、ファービーの土台兼ラズパイ収納に良さげなプラケースを発見し、穴をあけて結線コードを流したりして見た目的に良い感じに収納する工夫を施しています)
完成品のご紹介
「よめ子」先生の動画からは二番煎じになってしまい感動が薄れますが、完成したファービーをご紹介します。少しカスタマイズして、ウェイクワードっぽく『起動』と発言すると動き出すプログラムを追加したりしています。(逆にファービー体内へ部品を収納した弊害により、可愛いお辞儀動作はできなくなりました)
※動画は速度編集や繋ぎ合わせ等でスムーズに見えますが、AIファービーが回答してくれるまでの時間はものすごく遅いです。(当初の作成目的である、息子からのなぜなぜ攻撃を解消するには程遠い仕様ですが、作るの楽しかったので良しとします)
あとがき
本紹介では簡潔にまとめておりますが、実際に完成するまでに、様々なエラーの解消や、諸々な仕組みの理解にたくさんの時間を割いています。しかしながら、いずれもChatGPTを駆使することで、効率的な理解の手助けになってくれました。(私のプロンプトが悪いのか、ChatGPTでは、どうやってもエラーが解消しきれなかったものもあったため、そこは生成系AIのなかった時代と同様の調査等で乗り切ったりもしています)
AIファービーを作成したのは、2024年6月頃でしたので、この記事を書いた現在では、さらなるAIの進化も遂げているかと思います。今のタイミングでは、より良いAIファービーができるかもしれませんので、お気に入りのAIおもちゃの作成に本記事がお役立てると嬉しく思います。Merry Chirstmas