呼びかけの言葉(wake word)で聞き取りを始め、話し終わりで止める
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- go
- 領域
- embedded-iot
調査の方向性
Start with docs/avatar-build-wsl.md to check whether its v1.8 firmware build steps still work for v1.17, and inspect the firmware’s on_vad_change handling and StopListening() path. Verify whether esp-sr ~2.3.0 includes wn9l_histackchan_tts3, then evaluate wake word recognition, voice activity timeout behavior, and the listed transcription and false-trigger concerns. Done means choosing and implementing a firmware approach that starts listening by wake word and stops after speech ends, with a defined timeout.
索引モデルが issue の本文から書いたものです。
説明
やりたいこと
画面をタップせずに、呼びかけの言葉(wake word)で音声コマンドを聞いてもらう。Amazon Echo の「アレクサ」のような使い方にする。
今の動き(2026-10-22 に実機で確認)
- プリビルドのファーム(stackchan-mcp)は、ESP32-S3 で WakeNet を有効にしてビルドされている。言葉は中国語の「你好小智(ニーハオ・シャオジー)」(
sdkconfig.defaults.esp32s3のCONFIG_SR_WN_WN9_NIHAOXIAOZHI_TTS)。 - 「ニーハオシャオジー」と話しかけると、本体は聞き取りを始めた。ただし、画面をタップするまで聞き取りが終わらなかった。
聞き取りが終わらない理由
- wake word で始まった聞き取りは自動終了のモード(
kListeningModeAutoStop)になる。xiaozhi では、話し終わりを判定して聞き取りを止めるのはサーバーの役目。 - stackchan-mcp の gateway は、本体が始めた聞き取りでは本体からの
listenのstopを待つだけで、話し終わりを判定しない。止める命令を送るツールも無いので、daemon からも止められない。 - 止まるのは画面のタップか、タップで始めた聞き取り用の 30 秒の安全装置(upstream の kisaragi-mochi/stackchan-mcp#233。wake word の聞き取りにも働く)だけ。
案(どちらもファームのビルドが要る)
- 呼びかけの言葉を「Hi, Stack Chan」にする。esp-sr に
wn9l_histackchan_tts3(CONFIG_SR_WN_WN9L_HISTACKCHAN_TTS3)がある。ファームが使う esp-sr(~2.3.0)に含まれているかは、ビルドで確かめる。- 日本語のモデルは「こんにちは ESP」「アイリス」だけで、esp-sr 2.5 以降にしか無い。好きな言葉を設定できる MultiNet は中国語と英語だけ。
- 話し終わりで聞き取りを止める。本体の AFE はすでに声の有無を判定している(
on_vad_change。今は LED を変えるだけ)。自動終了のモードで、声が出たあと 1 秒ほど途切れたらStopListening()を呼ぶ。上限の時間(10 秒など)も設ける。 - gateway で判定する方法もあるが、gateway は改造しない方針なので採らない。
検討すること
- ビルドの手順:
docs/avatar-build-wsl.mdは v1.8 のもの。今の v1.17 で同じ手順が通るか。書き込みはアプリ(0x20000)だけにして、NVS を残す。 - 文字起こしの先頭に呼びかけの言葉が入る(
SEND_WAKE_WORD_DATAが既定で有効)。照合は部分一致なので大きな問題は無いはずだが、精度への影響を試す。無効にするかも決める。 - テレビや動画の音声での誤反応。夜の睡眠中は wake word を止めるか(タッチセンサーと同じく)。
- 話している最中に wake word を聞くと発話が止まる(
AbortSpeaking)。#8(読み上げの途中で止める)の手段にも使えるか。 - 話し終わりの判定は upstream に提案できる内容。提案するかは別に決める。
- 主要言語
- Go
- スター
- 1
- フォーク
- 0
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
kan/stackchan-cli のほかの issue
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
kan/stackchan-cli#12 ·
-
enhancement
難易度 3/5 1〜2日 初心者へのやさしさ 57/100
kan/stackchan-cli#10 ·
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
kan/stackchan-cli#9 ·
-
読み上げの途中で発話を止めるオープンenhancement
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
kan/stackchan-cli#8 ·
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
kan/stackchan-cli#2 · コメント 1 件 ·
kan/stackchan-cli の issue をすべて見る
似ている issue
-
Project submission:オープン
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
slavakurilyak/awesome-ai-agents#845 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
JakeChampion/lang#13132 ·
メンテナーはふだん 1 日以内に返信
-
[BUG] deploy.restart_policy without condition drops the restart policy対応中かも @akshat-lakhera が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
docker/compose#14383 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信