Skip to content
cccskills
FreePublished on GitHub

xs:stackchan-atama

スタックチャン・アタマ(M5Stack単体版)をUSBシリアルまたはWiFi HTTP API経由で制御するスキル。テキスト読み上げ・表情変更・音量調整・カメラ撮影・WAV再生をPCからコマンド実行。パイプライン再生で高速応答。

borotの返答をスタックチャンに喋らせる連携にも対応。「スタックチャンに喋らせて」「stackchan-atama」で使用。

The English summary is being prepared. Showing the original description.

See how to install

Files included (10)

  • SKILL.md5.5 KB
  • .gitignore213 B
  • LICENSE1.0 KB
  • platformio.ini1.2 KB
  • README.md12.5 KB
  • src/main.cpp25.7 KB
  • tools/pyproject.toml159 B
  • tools/setup_piper.sh4.2 KB
  • tools/stackchan_atama.py20.8 KB
  • udev/99-stackchan.rules420 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

スタックチャン・アタマ制御スキル

USBシリアルまたはWiFi HTTP API経由でスタックチャン・アタマ(M5Stack単体、サーボ不要版)を制御する。

接続モード

USBシリアル(デフォルト)

ポート自動検出。--port で手動指定も可能。

WiFi HTTP API(--wifi)

IP: 環境変数 STACKCHAN_IP で指定(--host でも可)。

TTS(音声合成)

  • デフォルト: piper-plus(環境変数 STACKCHAN_TTS で変更可能)
  • piper-plus: サーバー不要、バイナリ単体で動作。tools/setup_piper.sh でセットアップ
  • VOICEVOX: --tts voicevox で切替。ローカルエンジン(port 50021)が必要

Step 0: 初回セットアップ(piper-plusのバイナリ・モデルが無い場合のみ)

cd [SKILL_DIR] && tools/setup_piper.sh

OS/ARCH を自動判定し、piper-plus の ネイティブC++版バイナリ(OpenJTalk辞書同梱)とつくよみちゃんモデルをダウンロード、tools/piper ラッパーを生成する。 macOS arm64・Linux arm64/x64/armv7 対応。インストール済みならスキップ。

注意: ayutaz/piper-plus には別途 C# CLI 版(piper-plus-cli-*)も存在するが、こちらは日本語を multilingual espeak phonemizer で処理するため発音が中国語風に崩れる。setup_piper.sh はネイティブC++版(piper-{macos,linux}-*)を選ぶこと。

say 実行時に piper failed: ... Opset 5 ... opset 3 only エラーが出たら: 初回実行で生成された最適化キャッシュが onnxruntime と互換性が無い状態。rm [SKILL_DIR]/models/*.cpu.opt.onnx* で解消。

実行フロー

Step 1: 接続確認

# USBシリアル
cd [SKILL_DIR] && uv run tools/stackchan_atama.py status

# WiFi
cd [SKILL_DIR] && uv run tools/stackchan_atama.py --wifi status

Step 2: テキスト読み上げ(TTS)

# 通常モード(全文を一括送信)
cd [SKILL_DIR] && uv run tools/stackchan_atama.py say "こんにちは"

# パイプラインモード(文を分割、最初のチャンクを即座に再生開始)— 長文推奨
cd [SKILL_DIR] && uv run tools/stackchan_atama.py say "こんにちは!今日もいい天気ですね。散歩に行きましたか?" --pipeline

# VOICEVOX で話者変更(VOICEVOX時のみ)
cd [SKILL_DIR] && uv run tools/stackchan_atama.py --tts voicevox say "おはよう" --voice 3

# WiFi経由
cd [SKILL_DIR] && uv run tools/stackchan_atama.py --wifi say "こんにちは" --pipeline

Step 3: 表情変更

cd [SKILL_DIR] && uv run tools/stackchan_atama.py face happy

表情一覧:

  • neutral / 0 — 普通
  • happy / 1 — 嬉しい
  • sleepy / 2 — 眠い
  • doubt / 3 — 疑問
  • sad / 4 — 悲しい
  • angry / 5 — 怒り

Step 4: 音量調整

cd [SKILL_DIR] && uv run tools/stackchan_atama.py volume 200

音量: 0〜255(デフォルト: 255)

Step 5: カメラ撮影(CoreS3のみ)

cd [SKILL_DIR] && uv run tools/stackchan_atama.py capture -o /tmp/photo.jpg
cd [SKILL_DIR] && uv run tools/stackchan_atama.py --wifi capture -o /tmp/photo.jpg

Step 6: WAVファイル直接再生

cd [SKILL_DIR] && uv run tools/stackchan_atama.py play /tmp/audio.wav
cd [SKILL_DIR] && uv run tools/stackchan_atama.py --wifi play /tmp/audio.wav

Step 7: WiFi設定(シリアル経由のみ)

cd [SKILL_DIR] && uv run tools/stackchan_atama.py wifi-config --ssid MyNetwork --password mypass
cd [SKILL_DIR] && uv run tools/stackchan_atama.py wifi-config --clear

borot連携

borotの返答をスタックチャンに喋らせたい場合:

  1. borotが返答テキストを生成
  2. テキストを stackchan_atama.py say --pipeline で送信
  3. 表情も文脈に合わせて変更

例: からあげに挨拶する

cd [SKILL_DIR]
uv run tools/stackchan_atama.py face happy
uv run tools/stackchan_atama.py say "からあげさん、おはよう!" --pipeline

例: 悲しいニュースを伝える

cd [SKILL_DIR]
uv run tools/stackchan_atama.py face sad
uv run tools/stackchan_atama.py say "残念だけど、雨みたいだよ"

例: WiFi経由で操作

cd [SKILL_DIR]
uv run tools/stackchan_atama.py --wifi face happy
uv run tools/stackchan_atama.py --wifi say "ケーブルなしで喋れるよ!" --pipeline
uv run tools/stackchan_atama.py --wifi capture -o /tmp/photo.jpg

注意点

  • 長文は --pipeline で分割送信すると体感速度が上がる
  • M5Stack Core(初代)はPSRAMがないため80KB超のWAVは不可 → --pipeline で回避
  • シリアル転送が失敗する場合: --serial-chunk 256 --serial-delay 0.02 で速度を落とす

使用例

スタックチャンにこんにちはって言って
スタックチャンを嬉しい顔にして
stackchan-atamaの状態確認して
スタックチャンに「今日もがんばろう」って喋らせて
スタックチャンで写真撮って
スタックチャンの音量上げて

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Report a problem with this skill