最新のスマートディスプレイではなく、あえて1980年代の5インチCRT TVを使う選択をする人は少ないだろう。しかし、Web開発者Andrew Schmelyun氏は、まさにその組み合わせでAIアシスタント「Artie」を製作した。
Artieは、Raspberry Pi 4とバニラJavaScriptで完全に構築されたデスクトップAIアシスタントだ。ディスプレイには1980年代のソニー製5インチ白黒CRT TVを採用し、ASCII顔文字で感情を表現する。音声認識から音声合成まで、ブラウザの実験的APIを活用してローカル処理を実現している。
最大の技術的課題は、1980年代のCRT TVとRaspberry Pi 4の接続だった。TVは固定アンテナで地元ニュースを見るために設計されており、入力オプションは極めて限定的だ。しかし、背面の外部アンテナポートが標準3.5mmジャック対応だったことから、HDMI-同軸変換器と同軸-3.5mm RFアダプターを組み合わせた35ドルの変換システムで接続を実現した。
画面調整は極めて繊細で、ダイヤルをわずかに動かすだけで映像が乱れるという。しかし、5インチCRTに表示されるRaspbian デスクトップの調整に成功し、ハードウェア基盤が完成した。
Andrew氏は、PythonやCのGUIライブラリではなく、Web開発者としての背景からバニラJavaScriptを選択した。フルスクリーンブラウザウィンドウをCRT TVに表示し、HTML要素、CSS、CSSアニメーションで顔と感情を制御する仕組みだ。
当初は手描きのアニメーションと表情を計画したが、時間がかかりすぎたため、ASCIIアートによる表情システムに切り替えた。目が上下に動くハッピーフェイス、まばたきして唇が動くフラストレーションフェイスなど、複数の感情表現を実装している。
音声入力には、実験的なSpeech Recognition APIを使用している。ChromeやEdge、Safariで利用可能で、ブラウザによってはローカル処理、あるいはGoogle/Appleのサーバーで文字起こしを行う。これにより、Whisper APIへの追加呼び出しやWhisper CPPのローカルインストールが不要となった。
音声合成にはSpeech Synthesis APIを使用し、ブラウザに組み込まれた音声でローカル処理を実現している。最高品質ではないが、すべてローカルかつ無料だという。
LLM応答にはOpenAI APIを使用し、JSON形式でemotion(感情コンポーネント対応)とテキスト応答を返す。Artieは各応答をループし、テキストを読み上げながら画面上の感情アニメーションを切り替える。
Artieの真価は、物理デバイスとの連携にある。ドットマトリックスプリンターにネットワーク経由でテキストを送信し、レシピや報告書を印刷できる。LLMにツール機能を追加することで、Artieは印刷関数をペイロードとともに呼び出せる。
さらに、ダミーAPIから暗号通貨や業務取引データを取得し、「今年最悪の5件の取引を見つけてフォーマットして」といった命令に応答する。将来的には、Twilio経由のテキスト送信、WhatsAppメッセージ、カレンダーイベントのレシートプリンター出力など、さらなる拡張が可能だという。
プロジェクトはGitHubでオープンソース化されており、Andrew氏はOLEDスクリーンやLEDマトリックスなど別のディスプレイでの製作を奨励している。