🍶

M5 Atom Echoを使ってOpen Interpreter 01 Lightを試してみた

2024/05/06に公開

はじめに

Open Interpreter01 の01 Lite Lightって米国でしか販売してないんだなー。と思ってたら、ハードウェアの構成とかも公開されてて、M5 Atom Echoあればとりあえず試せそうだったのでやってみました。
https://x.com/wmoto_ai/status/1774656367472836670
※2024/05/07追記 ずっとLiteって書いてましたがLightが正しいです

当初は以下からあげ大先生の記事をもとにDocker内GUI環境で動作させようと思ってましたが、執筆時点では01自体がMacでの操作がメインっぽいことやDocker環境と01 Lightの通信部分の調整がめんどくさそうだったのでMac本体に直入れしました。
01を直入れする場合、PC内の環境が汚れたり、マイコン工作チックなことするので、試される方はセキュリティや安全に十分配慮ください。
https://zenn.dev/mkj/articles/292a70b4f4e5e8

01とは?

01(おーわん)と呼ぶらしいです。Open Interpreterが出してる、PCを音声操作できるように特化した?OSSです。
https://github.com/OpenInterpreter/01
AtomEcho等ESP32を使わずPCから直接音声入力する方法は下記ニケちゃんさんの記事がわかりやすいです。
https://note.com/nike_cha_n/n/n521a403bb5de
↓とは別物みたいです。
https://github.com/OpenInterpreter/open-interpreter
で、以下動画でOpenInterpreterのkillianさんが持ってる白い丸っこいやつが01 Lightと呼ばれているESP32端末です。ハードもソフトもオープンにしてくれてるんだから、太っ腹ですね。
https://x.com/OpenInterpreter/status/1770821439458840846

動機

子供できてからマジでパソコン触れる時間が限られるんですよね。子供の面倒みながら自然言語音声でパソコン遠隔操作できたらいいな、と単純に思ったのがきっかけです。
Macの音声コントロールとかもありますけどね、01がどんなもんか試してみたったんです。

検証環境

  • PC: M2 MacBook
  • OS: macOS Sonoma 14.4.1
  • Python: 3.11.5

実装

0. M5 Atom Echo等諸々部品調達

私は以下の公式部品構成に書いてあるやつを勢いで全部買い揃えましたが、とりあえず動かすだけならM5 Atom Echoさえあれば何とかなります。
https://github.com/OpenInterpreter/01/blob/main/hardware/light/BOM.md
それ以外はモバイルで動かすためのバッテリーやスイッチ、あとはマイクやスピーカーの拡張用のアンプ等です。実用的に使うならアンプと別のスピーカーは欲しいな、とは思います。
なお、私はMouserマルツで↑に書いてある部品は一通り揃えられました。全部買って1万くらいでした。バッテリーだけは全く同じものはなかったので類似品を購入しました。(2024/4/1時点)

1.環境準備

基本的な流れは下記のYoutube動画がわかりやすかったです。
https://youtu.be/Y76zed8nEE8?si=cMzKoQwiQgv72Eyu

まず公式ドキュメントに従ってMacに必要なライブラリをターミナルからインストールしていきます。
brewはインストールされてる前提で進めます。

$ brew install portaudio ffmpeg cmake

んで、01のGithubリポジトリをクローンしてsoftwareというディレクトリに移動しときます。

$ git clone https://github.com/OpenInterpreter/01.git
$ cd software

とりあえここまでで次のM5 Atom Echo側の設定に進みます。

2. M5 Atom echo側(01クライアント)の設定

Arduino IDEから自身のマシンにあったファイルをダウンロード&インストールを行い、Arduino IDEを起動します。

・ツール > ボード > ボードマネージャーに行き、「ESP32」を検索してインストールします。
・ツール > ライブラリ > ライブラリマネージャーに行き、「M5Atom」、「WebSockets by Marcus Sattler」、「Async TCP」をインストールします。
・ツール > ボード > ESP32 Arduino>M5Stack Atomを選択します。

M5 Atom Echo(ESP32)をコンピュータに接続し、
手順1.でクローンした01のフォルダの中の"01/software/source/clients/esp32/src/client.ino"ファイルをArduino IDEで開き、検証(チェックマーク)を押して「コンパイル完了」となったのちに
書き込み(→のマーク)をクリックします。
このへんで色々躓いたらclaudeOpusやGPT4、Gemini1.5Pro等に聞いてみてください。環境によってはアップロードスピードとか調整必要になるかもです。

「書き込み完了」となってたら成功です。Atom側のUSBケーブル外して大丈夫です。

3. Macbook側(01サーバー)設定

んでターミナルに戻ってサーバーの設定に移ります。
手順1.で行ったsoftwareというディレクトリにいる状態で
以下のコマンドを行いPoetryが管理する仮想環境に、依存関係とともにプロジェクトをインストールします。

$ poetry install

上記のYoutube動画では口頭でサラッと言ってるだけですが、
openai APIを設定していきます。"自身のOpenAI API KEYを入力します。
※ローカルLLMとかclaudeとかも使えるみたいですがまだ試してないです。

$ export OPENAI_API_KEY=sk-xxxxxxxxxxx

あ、そうそう、このあと01サーバーを立ち上げるのですがIPアドレスを参照する必要があるので以下のコマンドを使ってIPアドレスを確認します。

ifconfig

実行するとen0:というところのinetってところにipアドレスがあるのでこれをメモしときます。
動画のこの部分ですね。

そしたらいよいよ01サーバーを立ち上げます。

$ poetry run 01 --server --server-host [さっきメモしたIPアドレス] --server-port 10001 --model gpt-4-turbo  --stt-service openai

これで以下のような状態になればサーバーの準備はOKです。

4.クライアントとサーバーの接続

手順2でクライアント側の準備が終わったM5 Atom Echoを電源に繋ぎます。
この時MacにUSB接続する必要はなく、電源が取れるUSBに繋ぐかバッテリーに接続します。
これ以降のMacとM5 Atom Echoの通信はWifi接続で行います。
サーバー側の設定をしたMacとは別のPCまたはスマホから、Wifi接続画面に移ると、「01-Light」というのがあると思うのでそれに接続します。

そうすると以下のような画面が出るので、サーバー側の設定をしたMacが繋がっているWifiのSSID&パスワードを入力し「Connect」を押し、

次の画面で手順3.でメモしたIPアドレス+ポート番号(デフォルト10001)を入力し「Connect」!

これで無事に M5 Atom EchoのLEDがピンク色から青に変わり、Mac側のターミナルに「connection open」と書かれていれば無事セットアップ完了です!

動作確認

上記まで上手く行ったらいよいよ動作確認してみましょう。
Atom Echoの大きいボタンを押しながら、「今日の日付は?」とか「現在の時刻は?」とか聞いてみましょう。
日本語だと上手く聞き取ってくれない時が多いので英語に自信ある人は英語でやった方が多少成功しやすいと思います。
以下のようにターミナル上で01がスクリプトを実行して日時を表示&Atom Echoで音声で返答してくれたら成功です!お疲れ様です。ctrl+cを押せば01サーバーを終了できます。

自分はこのあと「ミュージックを開いて」とか言ってアプリ立ち上げようとしたところ、01自体はターミナル上は何か実行してるのに目的の動作をしてくれませんでした。(エラー無しに)
その時はMacの設定>プライバシー&セキュリティ>アクセシビリティに移動し、「ターミナル」のところでコンピュータの制御を許可、をONにしてください。私の場合はMac再起動したりターミナルを再起動したりしてアプリ立ち上げとか各種音声操作ができました。
とはいえ執筆時点では01自体英語前提の仕様になってるので日本語指示だと上手くいかないことの方が多いです。色々試行錯誤してたらAPI代が一気に20ドルくらいいかかりましたw
https://x.com/wmoto_ai/status/1785601215759560816

おわりに

私自身Arduino IDEとか初めて触りましたがGPT-4やClaude3に聞いたり、Discordで情報調べたりして勉強になりましたし、何とか動かすことができました。
正直現段階ではMacの音声コントロールを駆使した方がコスパ的にいい気がしますが、以下の通りOpenInterpreterの中のMike Birdさんが、もうすぐスペシャルな発表してやるぜ!、的な熱いコメントくれてるのでちょっと期待してみます。
https://x.com/MikeBirdTech/status/1786878534633271711
あと、仕組み的には自然言語からLLMでPyAutoGUI等のコードを作らせて実行させているような感じなので、これを参考にラズパイとかIoT機器を自然言語で操作するとか結構応用できそうだなーとか妄想してます。
あと、M5とか初めて扱ったのでもし色々ツッコミどころあればぜひご連絡ください!
ではお疲れ様です。乾杯!!🍺

Discussion