編集履歴一覧に戻る
Ketunorobioのアイコン画像

Ketunorobio が 2023年04月01日16時42分24秒 に編集

初版

タイトルの変更

+

ChatGPTとM5Stackを連携させて会話できるスタックチャンを邪道な方法で作ってみました

タグの変更

+

AI

+

M5Stack

+

Bluetooth

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

製作品

本文の変更

+

ChatGPTのえげつなさ(語彙..)がものすごい勢いで世間に広まっていますね。Al元年だとよく耳にしますが全くその通りだと思います。 なんでも知ってるパーフェクトヒューマン(語彙..)がメンターとして傍にいる感じですよね。分からない事を何も調べずに何回聞いても怒らないスーパーハイエキスプレス超キャリア組デキる上司(語彙..)みたいなものです。 本当にこれから数年で世界ががらりと変わるんじゃないかと凡人の私でも分かります。そして人間がどんどん廃れていく恐ろしさも合わせて感じますよね。。自分で考える、が無くなりそう。そこんとこはほんと気を付けながら上手いことAIを活用していかなきゃならんでしょうね。 前置きをだらだら書いちゃいましたが本題、今巷で密かなムーブメントを起こしている「AIスタックチャン」をご存じでしょうか? スタックチャンはTwitterの電子工作界で有名なあのししかわさんが考え出した、M5Stackを使った可愛い手乗りサイズロボットです。で、それにChatGPTのAPIを利用し、連携させて会話できるAIスタックチャンを考えたのがrobo8080さんです。 @[twitter](https://twitter.com/robo8080/status/1631224076005179393?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1633816169848389633%7Ctwgr%5E1f78fdcd52554748f95cf9475fd06b7a3fd326b0%7Ctwcon%5Es2_&ref_url=https%3A%2F%2Fdenkenmusic.com%2Fchat-gpte381a8m5stacke38292e980a3e690bae38195e3819be381a6e4bc9ae8a9b1e381a7e3818de3828befbdbdefbe80efbdafefbdb8efbe81efbdacefbe9de38292%2F) これがバズってさらにスタックチャンの知名度が上昇しています。 このAIスタックチャン、開発したrobo8080さんがプログラムをgithubやm5burnerにアップしているみたいですので、誰でも比較的簡単に作ることができるようです。 ところが情けない話、多少はC言語(アルディーノideかな)に関する知識はいりますので、開発環境やらが揃っていない私には真似が出来ませんでした。 なので初めはmicropythonでの実装を試みましたが、いかんせんモジュールが少なく、スタックチャンを喋らせることすらまままりませんでした。 ググっても有益な情報がなけりゃスーパーハイエキスプレス超キャリア組デキる上司 に聞いても使えない回答ばっかりでお手上げ状態でした(恐らくweb上でm5stackに関するmicropythonの情報が少なすぎるせいだと思われる) ということで、邪道ですが裏技を使ってAIスタックチャンを作ってみました。API使ってテキスト変換とか音声合成とかChatGPT連携とかの手順はすっ飛ばして実現します。 ## プログラムで喋らせられないからハードウェアで喋らせる M5Stackにはスピーカーが付いています。これから単音を鳴らすのはmicropythonでも容易に出来るのですが、音楽とかの音声を鳴らすのにはデータの伸張処理とか、D/A変換させるプログラムが必要になってきます。 Cだとそのへんのライブラリが豊富にありますが、micropython(UIFLOW含む)では無いんですよね。多分。(uiflowもesp32のmicropythonファームウェアでも試した感じ無理でした。) なので、そこは強制的にすっ飛ばします。そうです、要はスピーカーを直接駆動させてやればいいのです。 つまり、D/A変換された音声をM5Stackのパワーアンプ入力に入れてやればいいのです。 しかし有線で音入れるのはナンセンスなので、そこは無線での実装を考えます。 そこで考えたのが、bluetoothイヤホンの移植です。 ## イヤホン分解と基板の移植 モノラルになっちゃいますがとりあえず片方の無線イヤホンを分解します。今回はスリーコインのbluetoothイヤホンを使いました。 分解後、基板を取り出して充電端子とバッテリーを取り外します。基板の電源電圧は3.7Vですので、M5StackのLipoから引き回すことで解決できます。 その後はM5Stackに基板を取り付ける作業です。 配線は簡単で電源は上記の通りLipoと直結させます。音声信号に関してはイヤホン基板内でD/A変換が行われているので、あとはM5Stackのスピーカーを駆動できるレベルまで信号を増幅させる必要があります。 ![キャプションを入力できます](https://camo.elchika.com/7d4d998bee2530087f2eb2b8ccb2e03fd19c109d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34653664313436612d363231302d343032322d393337642d3336306465323666623861662f31326439636333312d663463302d343835662d613162612d653539333265636634316431/) GPIO25がパワーアンプの音声入力端子につながっていますので、GPIO25にイヤホン基板からの音声出力のホット側(+)を繋ぎます。GND側はアンプの端子4につなぐっぽいですが、引き回しが困難だったので通常のGNDにつなぎました(あんまりよくはないみたいですのでちゃんと4番ピンにつなぐのが良いと思われます) @[twitter](https://twitter.com/ketunorobio/status/1638136588189454337?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1638136588189454337%7Ctwgr%5E1f78fdcd52554748f95cf9475fd06b7a3fd326b0%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fdenkenmusic.com%2Fchat-gpte381a8m5stacke38292e980a3e690bae38195e3819be381a6e4bc9ae8a9b1e381a7e3818de3828befbdbdefbe80efbdafefbdb8efbe81efbdacefbe9de38292%2F) ※写真では電源を5Vから間違って取っていますが後でlipo から直接引きました。 ## スピーカーテスト この状態でM5Stackの電源を投入すると、スマホからペアリングが出来ました。 その後スマホから音楽を再生させてみると、良い感じで音声が再生されています。   @[twitter](https://twitter.com/ketunorobio/status/1638145371884126209?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1638145371884126209%7Ctwgr%5E1f78fdcd52554748f95cf9475fd06b7a3fd326b0%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fdenkenmusic.com%2Fchat-gpte381a8m5stacke38292e980a3e690bae38195e3819be381a6e4bc9ae8a9b1e381a7e3818de3828befbdbdefbe80efbdafefbdb8efbe81efbdacefbe9de38292%2F) これで準備は整いました。 あとはスマホ側でChatGPTに音声認識させて、喋らせればいい訳です!(でた超他力本願!!) 探せばそんなアプリは一瞬で何個も見つかりました。(ありがとう賢い人達!!) ## AIスタックチャン・邪道、完成 @[twitter](https://twitter.com/ketunorobio/status/1638150842321883136?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1638150842321883136%7Ctwgr%5E1f78fdcd52554748f95cf9475fd06b7a3fd326b0%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fdenkenmusic.com%2Fchat-gpte381a8m5stacke38292e980a3e690bae38195e3819be381a6e4bc9ae8a9b1e381a7e3818de3828befbdbdefbe80efbdafefbdb8efbe81efbdacefbe9de38292%2F) スマホアプリでChatGPTに音声をテキスト変換して入力してもらい、テキスト回答を音声変換してもらってます。 それをbluetoothでスタックチャンに渡しています。