えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

AIでGPIOを操縦する(ChatGPT・Whisper・RESTuino)

LEDをRESTfull APIでチカチカさせる「RESTuino」をラズピコに移植 - えいあーるれいの技術日記 の続きです。

今回は、RESTuinoとAIがついに合体します!!


最近のAI(OpenAI)👀

最近のAIは半年前の事情とは異なるみたいです。

筆頭として挙げられるのはChatGPTです。

OpenAIが開発したGPT3の後継AIシステムでSNSを中心に爆発的な話題を呼びました。

Microsoftが巨額の投資を行い、BingにChatGPTの機能を搭載したことは大きなニュースになりました。

openai.com


ChatGPTは人間フィードバックに基づく強化学習でファインチューニング手法「RLHF」を導入することで、人間の価値観に近い入出力を達成することができるようです。

ChatGPTのベース自体は2022年初頭に学習終了したGPT3.5を使用しているそうです。(Introducing ChatGPT より)

え、1年前のモデルに我々は驚かされていたのですね…


ChatGPT以外にもOpenAIはWhisperを公開しています。

Whisperは、Webから収集された680,000時間分の多言語・マルチタスクの教師付きデータでトレーニングした自動音声認識システムです。

興味深いことに、Whisperに投入されているデータセットの1/3は英語以外の言語らしく、元の言語で書き起こしたり、英語に翻訳したりするタスクが交互に与えられるそうで、これが音声認識に効果的に働くそう(?)です。(Introducing Whisper


音声認識自体は他にも競合がいますが、ここからすごいプログラムが登場します。whisper.cppです。

github.com

マルチプラットフォーム・低消費電力なコンピュータで動作するようになり、オフライン音声認識の筆頭となりました。ラズパイでも動くらしい…


今回はこれらをRESTuinoに繋ぎ込みます。(whisper_cppは使いません!)


RESTuinoとの連携

以下にプログラムを示します。

github.com

メインのPythonプログラムからそれぞれWhisper、ChatGPT、RESTuino、に繋いでいます。

事前にOpenAIのAPIキーを環境変数OPENAI_API_KEYに登録する必要があります。

GPU環境は不要でしたが、Whisperがメモリをそこそこ食うので注意してください。(私の場合、10GBくらい食っていました)

テキストベースならWhisper不要なので、もう少しスペックを落とせそうです。


音声からモータ駆動までのプロセスを示します。

ChatGPTがcurlコマンドを喋るように事前にコントロールし、音声で操作しようとしています。

RESTful-APIでGPIOの確保・操作ができるので、ハードウェアのことを考えさせる必要はないです。

ただし、操作履歴をChatGPTに蓄積させないといけないので、操作指令は少し複雑になりそうな気もしますね…


結果

サーボモータをAIから操縦!?

動画 から確認してください。(私の声が流れます。音量注意!)

AIからちゃんと操作できました!


音声認識→ChatGPTに送信→受信の順にデータを送っており結構レスポンスは悪めです。

音声やめてLINEBot経由で操作するなどにした方がいいかもですね。


このプロジェクトは最もハードウェアがAIと接近できるポイントだと確信しています。

興味があれば皆さんも試してみてください!

github.com

なお、私の無料OpenAIキーはアクセスしすぎで制限かかってしまい…😇


RESTuinoについて

RESTuinoとは、ESP32にRESTful-APIを生やすプロジェクトです。

zenn.dev

github.com