robo8080さんのAIスタックチャンの仕組みを継承した基本的なAI会話機能(LLM、STT、TTSのWeb APIの連携によるAI会話)を利用する方法について解説します。
会話に必要な各種AIサービスの対応状況を示します。
どのAIサービスを利用するかは、SDカード上のYAMLファイルの設定で選択できます(APIキーは別途取得していただく必要があります)。
| ローカル実行 | 日本語 | 英語 | 備考 | |
|---|---|---|---|---|
| OpenAI ChatGPT | × | 〇 | 〇 | ・別途APIキーを取得していただく必要があります ・Function Callingに対応(詳細ページ) ・MCPに対応(詳細ページ) ・CoreS3のカメラ画像を入力可能(詳細ページ) |
| ModuleLLM | 〇 | 〇 | 〇 | ModuleLLMを使用する際の設定方法をご確認ください |
| ModuleLLM (Function Calling対応) | 〇 | × | 〇 | ModuleLLMを使用する際の設定方法及び、同ページの付録Bをご確認ください |
| ローカル実行 | 日本語 | 英語 | 備考 | |
|---|---|---|---|---|
| Google Cloud STT | × | 〇 | 〇 | 別途APIキーを取得していただく必要があります |
| OpenAI Whisper | × | 〇 | 〇 | 別途APIキーを取得していただく必要があります(OpenAI ChatGPTと共通のAPIキーを使用できます) |
| ModuleLLM ASR | 〇 | × | 〇 | ModuleLLMを使用する際の設定方法をご確認ください |
| ModuleLLM Whisper | 〇 | 〇 | 〇 | ModuleLLMを使用する際の設定方法及び、同ページの付録Cをご確認ください |
| ローカル実行 | 日本語 | 英語 | 備考 | |
|---|---|---|---|---|
| Web版VoiceVox | × | 〇 | × | 別途APIキーを取得していただく必要があります |
| ElevenLabs | × | 〇 | 〇 | 別途APIキーを取得していただく必要があります |
| OpenAI TTS | × | 〇 | 〇 | 別途APIキーを取得していただく必要があります(OpenAI ChatGPTと共通のAPIキーを使用できます) |
| AquesTalk | 〇 | 〇 | × | 別途ライブラリと辞書データのダウンロードが必要(詳細ページ) |
| ModuleLLM TTS | 〇 | 〇 | 〇 | ModuleLLMを使用する際の設定方法をご確認ください(日本語化する場合は同ページの付録Cもご確認ください) |
| ローカル実行 | 日本語 | 英語 | 備考 | |
|---|---|---|---|---|
| SimpleVox | × | 〇 | 〇 | 詳細ページ |
| ModuleLLM KWS | 〇 | × | 〇 | ・ModuleLLMを使用する際の設定方法をご確認ください ・"Hi Stack"等、日本語環境でも使いやすいワードにすることは可 |
| AI Service | Core2 | CoreS3 | AtomS3R | |
|---|---|---|---|---|
| LLM | OpenAI ChatGPT | 〇 | 〇 | 〇 |
| ModuleLLM | 〇 | 〇 | × | |
| STT | Google Cloud STT | 〇 | 〇 | 〇 |
| OpenAI Whisper | 〇 | 〇 | 〇 | |
| ModuleLLM | 〇 | 〇 | × | |
| TTS | Web版VoiceVox | 〇 | 〇 | 〇 |
| ElevenLabs | 〇 | 〇 | 〇 | |
| OpenAI TTS | 〇 | 〇 | 〇 | |
| AquesTalk | 〇 | 〇 | × | |
| ModuleLLM | 〇 | 〇 | × | |
| Wake Word | SimpleVox | 〇 | 〇 | × |
| ModuleLLM | 〇 | 〇 | × |
SDカードに保存するYAMLファイルで各種設定を行います。
YAMLファイルは次の3種類があります。
- SC_SecConfig.yaml
Wi-Fiパスワード、APIキーの設定。(扱いに注意が必要な情報) - SC_BasicConfig.yaml
サーボに関する設定。 - SC_ExConfig.yaml
その他、アプリ固有の設定。
AtomS3RはSDカード非対応のため、SPIFFSにこれらのファイルを書き込みます。書き込み方法はこちらを参照ください。
SDカードフォルダ:/yaml
ファイル名:SC_SecConfig.yaml
Wi-Fiパスワード、各種AIサービスのAPIキーを設定します。
wifi:
ssid: "********"
password: "********"
apikey:
stt: "********" # ApiKey of SpeechToText Service (OpenAI Whisper/ Google Cloud STT 何れかのキー)
aiservice: "********" # ApiKey of AIService (OpenAI ChatGPT)
tts: "********" # ApiKey of TextToSpeech Service (VoiceVox / ElevenLabs/ OpenAI 何れかのキー)
SDカードフォルダ:/yaml
ファイル名:SC_BasicConfig.yaml
サーボに関する設定をします。
servo:
pin:
# ServoPin
# Core1 PortA X:22,Y:21 PortC X:16,Y:17
# Core2 PortA X:33,Y:32 PortC X:13,Y:14
# CoreS3 PortA X:1,Y:2 PortB X:8,Y:9 PortC X:18,Y:17
# Stack-chanPCB Core1 X:5,Y:2 Core2 X:19,Y27
# When using SCS0009, x:RX, y:TX (not used).(StackchanRT Version:Core1 x16,y17, Core2: x13,y14)
x: 33
y: 32
center:
# SG90 X:90, Y:90
# SCS0009 X:150, Y:150
# Dynamixel X:180, Y:270
x: 90
y: 90
offset:
# Specified by +- from 90 degree during servo initialization
x: 0
y: 0
servo_type: "PWM" # "PWM": SG90PWMServo, "SCS": Feetech SCS0009
SC_BasicConfig.yamlには他にも様々な基本設定が記述されていますが、現状、本ソフトが対応しているのは上記の設定のみです。
SDカードフォルダ:/app/AiStackChanEx
ファイル名:SC_ExConfig.yaml
AIサービスの選択や、サービス毎のパラメータを設定します。
llm:
type: 0 # 0:ChatGPT 1:ModuleLLM
tts:
type: 0 # 0:VOICEVOX 1:ElevenLabs 2:OpenAI TTS 3:AquesTalk 4:ModuleLLM
model: "" # VOICEVOX, AquesTalk (modelは未対応)
#model: "eleven_multilingual_v2" # ElevenLabs
#model: "tts-1" # OpenAI TTS
#model: "melotts-ja-jp" # ModuleLLM (日本語) ※モデル指定なしの場合は英語
voice: "3" # VOICEVOX (ずんだもん)
#voice: "AZnzlk1XvdvUeBnXmlld" # ElevenLabs
#voice: "alloy" # OpenAI TTS
#voice: "" # AquesTalk (voiceは未対応)
stt:
type: 0 # 0:Google STT 1:OpenAI Whisper 2:ModuleLLM(ASR)
wakeword:
type: 0 # 0:SimpleVox 1:ModuleLLM(KWS)
keyword: "" # SimpleVox (初期設定は不可。ボタンB長押しで登録)
#keyword: "HI STUCK" # ModuleLLM(KWS)
# ModuleLLM
moduleLLM:
# Serial Pin
# Core2 Rx:13,Tx:14
# CoreS3 Rx:18,Tx:17
rxPin: 13
txPin: 14
事前にVSCodeとPlatformIO(VSCodeの拡張機能)、及びUSBドライバのインストールを済ませてください。
USBドライバはこちらのM5Stackのサイトから入手できます。使用するM5StackがUSBシリアル変換ICをCP210xとCH9102のどちらを実装しているかによって必要なドライバが異なりますが、両方のドライバをインストールしても問題ありません。
①本リポジトリを適当なディレクトリにクローンします。
git clone https://github.com/ronron-gh/AI_StackChan_Ex.git
パスが深いと、ライブラリのインクルードパスが通らない場合があります。なるべくCドライブ直下に近い場所でクローンしてください。(例 C:\Git)
②PlatformIOのHome画面でOpen Projectをクリックします。
③クローンしたプロジェクトのfirmwareフォルダ(platformio.iniがあるフォルダ)を選択してOpenをクリックします。
必要なライブラリのインストールが始まり、VSCodeの画面右下にこのような進捗が表示されるので、完了するまで待ちます。
④PCとM5StackをUSBケーブルで接続します。
⑤下図に示す手順でビルド環境(env)を選択し、ビルド&書き込みを実行します。
envは、基本はm5stack-xxx (xxxはデバイス名)ですが、例えばOpenAI Realtime APIを使用するときはm5stack-xxx-realtimeを選択します(各機能の解説に従ってください)。envを選択したときに手順③のときと同じようにライブラリのインストールが始まる場合があるので、その場合は完了まで待ってからビルド&書き込みしてください。
カスタム指示(いわゆるロール)、及びメモリー(長期記憶)により、AI会話機能をユーザーの属性に合わせてカスタマイズすることができます。
PCやスマートフォンのWebブラウザで http://(スタックチャンのIPアドレス) にアクセスすると次のような設定画面が開きます。(IPアドレスは起動時の画面に表示されます。また、Core2/CoreS3はCボタンまたはLCD右端をタッチするとアクセス用のQRコードが表示されます。)
メモリーを有効にするには SDカードの/app/AiStackChanEx/SC_ExConfig.yaml で enableMemory を true に設定してください。
現在、メモリーに対応しているLLMは、ChatGPT(Realtime API含む)、Gemini Liveです。
SC_ExConfig.yaml
llm:
type: 0 # 0:ChatGPT 1:ModuleLLM 2:ModuleLLM(Function Calling) 3:Gemini
enableMemory: true # true でメモリー有効(デフォルトはfalse)
メモリーを有効にすると、会話の中でユーザーの属性(趣味や仕事など)や印象的なエピソードがあれば要約してSPIFFSに保存されます。電源をOFFにしてもSPIFFSの内容は保持され、次回起動時に記憶情報として読み出されます。
記憶するかどうかはLLMが会話中に判断するため、ユーザーの期待通りに記憶されない場合があります(「今の会話内容をメモリーに保存して」と明示的に指示することも可能です)。また、一度記憶した情報も、要約を繰り返す過程で失われる可能性があります。




