feat(voice): add on-device Miao Zhang Gui wake word

Add an optional local wake response prompt configuration. The prompt asset is intentionally not included yet.
This commit is contained in:
chenjintao
2026-08-10 16:54:42 +08:00
parent d9660164a6
commit e5c1564130
21 changed files with 2010 additions and 56 deletions
+113 -3
View File
@@ -879,6 +879,99 @@ menu "Example Configuration"
help
Leave disabled for the default active-low Button 2 wiring.
config TQ_LOCAL_WAKE_ENABLE
bool "Enable local wake-word listener"
default y
help
Use the on-device Chinese MultiNet model to detect 喵掌柜.
The physical PTT button remains enabled as a parallel entry.
config TQ_LOCAL_WAKE_RESPONSE_PROMPT_ENABLE
bool "Enable local wake response prompt"
depends on TQ_LOCAL_WAKE_ENABLE
default n
help
Play a short acknowledgement after 喵掌柜 is detected and
before the normal single-turn dialog starts. Keep disabled
until the placeholder Opus asset has been supplied.
config TQ_LOCAL_WAKE_RESPONSE_PROMPT_FILE
string "Local wake response prompt file"
depends on TQ_LOCAL_WAKE_ENABLE
default "/littlefs/audio_prompts/local_wake_response.opus"
help
Reserved LittleFS path for the future wake acknowledgement.
Add local_wake_response.opus under
components/platform/assets/audio_prompts before enabling it.
config TQ_LOCAL_WAKE_RETRY_MS
int "Local wake startup retry delay (ms)"
depends on TQ_LOCAL_WAKE_ENABLE
default 5000
range 500 60000
config TQ_LOCAL_WAKE_STOP_WAIT_MS
int "Local wake lifecycle wait (ms)"
depends on TQ_LOCAL_WAKE_ENABLE
default 1000
range 100 5000
config TQ_LOCAL_WAKE_TASK_STACK_BYTES
int "Local wake control task stack (bytes)"
depends on TQ_LOCAL_WAKE_ENABLE
default 6144
range 4096 32768
config TQ_LOCAL_WAKE_TASK_PRIORITY
int "Local wake control task priority"
depends on TQ_LOCAL_WAKE_ENABLE
default 4
range 1 10
config TQ_LOCAL_WAKE_TASK_CORE
int "Local wake control task core (-1 for no affinity)"
depends on TQ_LOCAL_WAKE_ENABLE
default 0
range -1 1
config TQ_LOCAL_COMMAND_TASK_STACK_BYTES
int "MultiNet inference task stack (bytes)"
depends on TQ_LOCAL_WAKE_ENABLE
default 8192
range 6144 32768
config TQ_LOCAL_COMMAND_TASK_PRIORITY
int "MultiNet inference task priority"
depends on TQ_LOCAL_WAKE_ENABLE
default 7
range 1 10
config TQ_LOCAL_COMMAND_TASK_CORE
int "MultiNet inference task core (-1 for no affinity)"
depends on TQ_LOCAL_WAKE_ENABLE
default 0
range -1 1
config TQ_LOCAL_COMMAND_CONTROL_TIMEOUT_MS
int "MultiNet control acknowledgement timeout (ms)"
depends on TQ_LOCAL_WAKE_ENABLE
default 1000
range 100 5000
config TQ_LOCAL_COMMAND_DETECTION_TIMEOUT_MS
int "MultiNet utterance detection timeout (ms)"
depends on TQ_LOCAL_WAKE_ENABLE
default 6000
range 1000 15000
config TQ_LOCAL_COMMAND_DETECTION_THRESHOLD_X10000
int "MultiNet detection threshold (x10000)"
depends on TQ_LOCAL_WAKE_ENABLE
default 1200
range 1 9999
help
Initial threshold is 0.12 and must be tuned with device audio.
config MULTIMODAL_HEARTBEAT_INTERVAL_MS
int "Heartbeat interval (ms)"
default 50000
@@ -966,10 +1059,11 @@ menu "Example Configuration"
config MULTIMODAL_AUDIO_CODEC_CHANNELS
int "Codec channels"
default 1
range 1 1
default 2
range 2 2
help
Fixed at 1 for the raw-opus 16kHz mono voice contract.
Two physical ES8311 slots are captured: microphone and DAC
playback reference. The external Opus contract remains mono.
config MULTIMODAL_AUDIO_CODEC_BITS_PER_SAMPLE
int "Codec bits per sample"
@@ -1051,6 +1145,22 @@ menu "Example Configuration"
speech. Use 0 for the default left/first channel, or 1 if
level logs show speech energy on raw_ch1 instead of raw_ch0.
config MULTIMODAL_AUDIO_AEC_REFERENCE_CHANNEL
int "AEC playback reference channel"
default 1
range 0 1
help
Interleaved ES8311 slot carrying the DAC playback reference.
It must differ from the microphone channel.
config MULTIMODAL_AUDIO_AEC_FILTER_LENGTH
int "AEC filter length"
default 4
range 1 8
help
ESP-SR synchronous AEC filter length. Four is the recommended
starting point for ESP32-S3.
config MULTIMODAL_AUDIO_LOG_UPLINK_LEVELS
bool "Log microphone uplink audio levels"
default n