WebSocketでStackChanを制御するためのサーバーアプリケーションと、そのファームウェアです。
StackChanをフロントにし、メインのロジック処理をPC上のPythonで実現することで、Pythonライブラリを使った外部サービスとの連携などが実装しやすくなることを狙っています。
Caution
This is work in progress. The API and functionality may change without notice.
Caution
これはスタックチャンを楽しむための個人のコミュニティプロジェクトです。M5Stack社や、その他のスタックチャン関連プロダクトとは関係ありません。
サンプルアプリケーション example_apps/
以下の関数で、wake word を起点に対話セッションを実装できます。
@app.talk_session
async def talk_session(proxy: WsProxy):
text = await proxy.listen()
await proxy.speak(text)uv sync --group example-gemini
app = StackChanApp()
client = genai.Client(vertexai=True).aio
@app.setup
async def setup(proxy: WsProxy):
logger.info("WebSocket connected")
@app.talk_session
async def talk_session(proxy: WsProxy):
chat = client.chats.create(
model="gemini-3-flash-preview",
config=types.GenerateContentConfig(
system_instruction="あなたは親切な音声アシスタントです。音声で返答するため、マークダウンは記述せず、簡潔に答えてください。だいたい3文程度で答えてください。",
),
)
while True:
text = await proxy.listen()
if not text:
return
logger.info("Human: %s", text)
# AI応答の取得
resp = await chat.send_message(text)
# 発話
logger.info("AI: %s", resp.text)
if resp.text:
await proxy.speak(resp.text)stackchan_server/ と example_apps/ を対象に、uv で Ruff と ty を実行できます。
uv sync --group dev --group example-gemini
uv run ruff check stackchan_server example_apps
uv run ty check stackchan_server example_apps- 本体: M5Stack CoreS3 SE
- 音声認識: Google Cloud Speech-to-Text
- 音声合成: VOICEVOX No.7
- ファームウェア firmware/
- Pythonサーバのライブラリ stackchan_server/
- サンプルアプリケーション example_apps/
- Google Cloudのプロジェクトとサービスアカウント
- Dockerエンジン
- Python 3.13 以上
- PlatformIO
Warning
あくまで最低限のことしか書いていません。各自で環境構築を行ってください。
WiFi設定、接続先サーバをfirmware/include/config.hに記述します。
#define WIFI_SSID_H "__SSID__"
#define WIFI_PASSWORD_H "__PASSWORD__"
// WebSocket サーバ設定
#define SERVER_HOST_H "192.168.1.179" // 例: サーバのIP
#define SERVER_PORT_H 8000 // 例: FastAPIのポート
#define SERVER_PATH_H "/ws/stackchan" // WebSocketパスStackChanのファームウェアをPlatformIOでビルドして、CoreS3に書き込みます。
PC上で、Google Cloudのログインをしてください。
gcloud auth application-default loginVOICEVOXをdockerで起動します。
docker compose run --rm --service-ports voicevoxPythonサーバを起動します。
uv sync
uv run uvicorn app.gemini:app.fastapi --host 0.0.0.0 --port 8000