Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

呼びかけの言葉(wake word)で聞き取りを始め、話し終わりで止める

オープン
#11 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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 の本文から書いたものです。

説明

enhancement

やりたいこと

画面をタップせずに、呼びかけの言葉(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 を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

kan/stackchan-cli のほかの issue

kan/stackchan-cli の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。