Raspberry Pi 5で動くAI音声アシスタント、プライバシー重視で完全ローカル動作

FabScene(ファブシーン)

あるMakerがRaspberry Pi 5上で完全ローカル動作するAI音声アシスタントを開発し、その詳細をブログとGitHubで公開した。音声で起動し、複数のタスクを順次実行できるシステムで、外部サービスに依存せずプライバシーを保護しながら動作する。

開発者のSimoneは、2023年にOpenAI APIを使用した際の高額な利用料金と、外部サービスへのデータ送信への懸念から、完全ローカルでのAIエージェント構築を目指した。約4か月前、Raspberry Pi 5で最新のオープンソースモデルを使用したシステム構築に着手した。

2つのモデルを組み合わせた設計

Max HeadboxはReact ViteのフロントエンドとSinatraのバックエンドで構成される。音声認識にはOpenAIのWhisperを再実装したfaster-whisperを使用し、ウェイクワード検出にはVoskを採用している。

LLMの管理にはOllamaを使用し、エージェント用にQwen3 1.7b、会話用にGemma3 1bの2つのモデルを搭載した。3bパラメータ以上のモデルはRaspberry Pi 5では実用的でなかったという。

システムは構造化出力を活用し、モデルからの応答を定義されたJSON形式で受け取る。これにより、曖昧な解析ロジックなしで関数を確実に呼び出せるようになった。

エージェント機能の実装では、推論機能をオフにしたQwen3 1.7bを使用し、ユーザーリクエストを一連の関数呼び出しに分解する。ループは最大5回実行され、モデルが無限に動作することを防ぐ。利用可能な関数のリストをシステムプロンプトに直接注入し、モデルが使用可能なツールを認識できるようにしている。

各ツールの出力は次のツール呼び出しに渡され、ユーザータスクが完了するまで処理が続く。この方法により、推論モデルや公式のツールコールAPIを使用せずにタスクの連鎖実行を実現した。

テストでは、4〜5回の関数呼び出しまでは正常に動作したが、それを超えるとモデルが幻覚を起こすことが確認された。より高性能なモデルや推論モデルを使用すれば改善されるが、処理速度が大幅に低下するトレードオフがある。

ツールの作成は、4つのプロパティ(ツール名、パラメータ、説明フィールド、実行本体)を持つオブジェクトをエクスポートするJavaScriptモジュールを作成するだけで完了する。これらのモジュールは起動時にアプリに動的にインポートされ、システムプロンプトに注入される。

会話モデルには「感情」機能を追加した。Gemma3 1bが応答テキストとともに、laugh、happy、sad、interested、boredなどの感情配列から選択した「感情」を返す。この感情は画面隅に絵文字で表示される。

FabScene(ファブシーン)
画像出典元:GitHub

応答はストリーミング形式で表示される。JSON解析の課題に対し、messageセグメントを検出するとすぐにテキストを表示し、feeling値が選択されると画面隅に表示する仕組みを実装した。感情をメッセージの後に配置することで、初期トークンが応答の方向性に強く影響するのを避けている。

UIはシンプルな設計で、キャラクターの頭部周りの帯の色と動きで状態を示す。青い回転帯はウェイクワード待機中、赤い脈動帯は音声録音中、虹色の帯はLLM実行中を表す。画面タップでもウェイクワードの代わりに録音開始と停止が可能で、LLMの応答生成中も中断できる。

キャラクターの緑の笑顔はMicrosoftのFluent Emojisを編集して作成された。プロジェクト名の「Max Headbox」は、1980年代のテレビキャラクター「Max Headroom」へのオマージュだ。

テストでは、3回の関数呼び出しチェーンで約1分30秒、4〜5回の呼び出しで2分強を要した。Wikipedia検索など大きな出力を生成するツールではさらに時間がかかる。

開発者は、このプロジェクトについて「真剣なものを作るつもりはなく、ただのおもちゃだ」としながらも、AIエージェントの仕組みを理解する良い機会になったと述べている。プロジェクトはオープンソースとしてGitHubで公開されている。

必要なハードウェアはRaspberry Pi 5(8GBまたは15GBモデルで動作確認済み)、マイク、約6GBの空き容量。オプションでGeeekPiのスクリーン、ケース、クーラーのバンドルを使用できる。

ソフトウェア要件はRuby 3.3.0、Node 22、Python 3、Ollama。セットアップはリポジトリのクローン、依存関係のインストール、Ollamaでのモデル取得、環境変数の設定で完了する。

関連情報

Max Headbox – GitHub

関連商品(広告)

Raspberry Pi
¥12,700 (2025/10/01 09:32時点 | Amazon調べ)

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!