Commit c3c7161
audio/topology: add multi-KPB WOV arbiter for 3-keyword DMIC capture
Adds a new WOV arbiter component and multi-KPB topology to support three
simultaneous wake-word detectors sharing a single DMIC, with exclusive
host PCM drain arbitration when any keyword fires.
New component: src/audio/wov_arbiter/
- 3 input pins (one per KPB host-sink), 1 output pin (to host copier)
- AMS subscriber for AMS_WOV_DETECT_MSG_UUID: activates the triggering
slot and broadcasts WOV_CTRL PAUSE to sibling detectors
- On trigger(STOP): deactivates and broadcasts WOV_CTRL RESUME so all
detectors return to listening
- Idle inputs are silently drained to prevent buffer stalls
- UUID 4a5b6c7d-8e9f-4a1b-2c3d-4e5f60718293 registered in uuid-registry
AMS additions (ams_msg.h):
- AMS_WOV_DETECT_MSG_UUID: detector -> arbiter on keyword detect
- AMS_WOV_CTRL_MSG_UUID: arbiter -> detectors for pause/resume control
detect_test extensions:
- IPC4_DETECT_TEST_SET_WOV_SLOT large-config param assigns a slot id (0-2)
- On detection: also sends AMS_WOV_DETECT_MSG_UUID with slot_id to arbiter
- AMS consumer for WOV_CTRL: sets paused flag; copy() drains buffer
without running the detector when paused
- The existing energy-threshold detector fires on a hand clap, making
detect_test a ready-to-use lab test stub for this topology
Topology: tools/topology/topology2/platform/intel/dmic-wov-multi.conf
- Pipeline 100 (Core 0): DMIC Copier -> Mixin (fan-out to 3 Mixouts)
- Pipelines 101-102 (Core 0): Mixout -> KPB -> detect_test (slots 0-1)
- Pipeline 103 (Core 1): Mixout -> KPB -> detect_test (slot 2)
- Pipeline 104 (Core 0): WOV Arbiter -> Host Copier (single PCM stream)
- KPB output_pin_binding: pin 0 -> detector (sel_sink),
pin 1 -> arbiter (host_sink)
Requires: CONFIG_COMP_WOV_ARBITER, CONFIG_COMP_KPB, CONFIG_COMP_MIXIN_MIXOUT,
CONFIG_AMS, CONFIG_COMP_KWD_DETECT
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 8c0c11b commit c3c7161
11 files changed
Lines changed: 1291 additions & 3 deletions
File tree
- src
- audio
- wov_arbiter
- include
- ipc4
- sof
- audio
- lib
- samples/audio
- tools/topology/topology2
- include/components
- platform/intel
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
107 | 107 | | |
108 | 108 | | |
109 | 109 | | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
110 | 113 | | |
111 | 114 | | |
112 | 115 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
105 | 117 | | |
106 | 118 | | |
107 | 119 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
0 commit comments