Categories: 工作・開発

ハード開発経験ゼロのエンジニアが、自分の誕生日パーティーでAIキャラと話せる電話機を自作

ソフトウェア開発者のAustin Mutschler氏が、29歳の誕生日パーティーの目玉として、AI搭載の固定電話機を使った「多次元電話機」を自作した。AIキャラクターが電話を通じてゲストと会話し、家中に隠された謎を解いて脱出を目指すゲーム(エスケープルーム)の進行役を担う仕組みとなっている。開発記録はブログプラットフォーム「Medium」で詳細に公開された。

このプロジェクトでは、ゲストがAIキャラクターに電話をかけて会話したり、AIキャラクターからゲストに電話がかかってきて冒険に誘導したりする。また、AIキャラクターが家中のスマートスピーカーなどを制御することも可能で、音楽配信サービスSpotifyと連携して実際に音楽をリクエストできるDJキャラクターなども実装された。

複数のAIキャラクターで謎解きゲーム体験

Mutschler氏はハードウェア経験がほとんどなかったため、開発全体でChatGPTやGeminiなどの生成AIを活用した。同氏は「AIチャットボットやエージェントが1〜2年以内にソフトウェアエンジニアリングの作業の多くを置き換える可能性があるという話があり、自分がほとんど知らないソフトウェア分野で使えるものを構築するのにLLMが役立つかを確かめたかった」と説明している。

最初のアプローチは、AT&T Trimline 210固定電話機の内部電子回路をRaspberry Pi Zero 2に置き換える方法だった。基板のキーパッド マトリックス回路を解析し、GPIO接続でボタン押下を検出する仕組みを構築した。音声入出力用にWaveshare WM8960オーディオハットやSparkFunのオーディオコーデック基板を試したが、マイク入力の問題で挫折した。

パーティー開催6日前になって、VoIP(Voice over IP)ネットワーク構築に方針を転換した。Raspberry Pi 4上でAsteriskとFreePBXを使ったVoIPサーバーを構築し、FlyingVoice FTA1101 VoIPアダプタで固定電話機を接続する構成に変更した。

メインストーリーは、多次元研究をするヘンダーソン博士が周波数異常を調査中に空き家で不思議な固定電話機を発見するという設定。博士がゲストに電話をかけ、「現実世界に戻る」ためのチャレンジを与える仕組みとなっている。

実装されたAIキャラクターにはヘンダーソン博士(メインストーリー進行役)のほか、108.3ラジオ局の90年代ヒット曲を流すDJ、レンタルビデオ店ブロックバスター、レストランのビーツ・ア・ハット、ITサポート、緊急サービスなど多彩な設定が用意された。各キャラクターは独自の性格と台本を持ち、ゲストとの自然な会話を実現している。

技術的にはOpenAI Realtime API(リアルタイム音声対話サービス)を使用し、音声は直接g711 ulaw コーデック(音声圧縮規格)でやり取りした。AIキャラクターは会話を終了するための「電話を切る」機能や、DJキャラクターがSpotify API(音楽配信サービスの制御インターフェース)を使って実際に音楽をキューに追加する機能なども実装された。

パーティーは成功を収め、ゲストはエスケープルームゲームとAIキャラクターとの会話を楽しんだようだ。会場の騒音で時々音声が途切れる以外は、技術的な問題は発生しなかったという。

Mutschler氏は「LLMが馴染みのない分野を教えてくれる効果を実感できた。完璧ではなく、時には間違った方向に導かれることもあったが、最終的に動作する電話機を作ることができた」と振り返っている。

プロジェクトのソースコードはGitHubで公開されており、VoIPサーバーのセットアップ手順も詳細にドキュメント化されている。

関連情報

How I built an AI-powered Interdimensional Phone(Medium)

FabScene編集部

FabScene編集部