mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-10-20 05:15:31 +00:00
fix(wake): route desktop control and select input devices
This commit is contained in:
parent
70411a6152
commit
94d1dff50d
11 changed files with 523 additions and 26 deletions
|
|
@ -20,7 +20,8 @@ to the agent.
|
|||
## How it works
|
||||
|
||||
1. With `wake_word.enabled: true` (or after `/wake on`), a lightweight hotword
|
||||
detector listens on your default microphone.
|
||||
detector listens on your configured input device, or the process default
|
||||
microphone when `wake_word.input_device` is unset.
|
||||
2. When it hears the wake phrase it pauses itself (freeing the mic), starts a new
|
||||
session, and records one utterance with voice mode's silence detection.
|
||||
3. Your speech is transcribed and sent to the agent. After it replies, the
|
||||
|
|
@ -80,6 +81,7 @@ wake_word:
|
|||
wake_word:
|
||||
enabled: false
|
||||
surface: auto # eligible surface: "auto" | "cli" | "tui" | "gui"
|
||||
input_device: null # PortAudio input index or device-name substring; null = process default
|
||||
provider: openwakeword # "openwakeword" (free, local) | "sherpa" (free, any phrase) | "porcupine"
|
||||
phrase: "hey hermes" # cosmetic label only — detection is keyed by the model/keyword below
|
||||
sensitivity: 0.6 # 0.0-1.0 — higher = stricter (fewer false triggers), consistent across all engines
|
||||
|
|
@ -95,6 +97,11 @@ wake_word:
|
|||
`sensitivity`, `phrase`, and `start_new_session` apply to both engines. The
|
||||
`openwakeword` and `porcupine` blocks select the actual detection model.
|
||||
|
||||
`input_device` is passed directly to the wake listener's PortAudio
|
||||
(`sounddevice`) stream. Use either a numeric device index or an unambiguous
|
||||
device-name substring. This setting only changes wake-word capture; desktop
|
||||
push-to-talk still uses the desktop application's microphone path.
|
||||
|
||||
### Reducing false triggers on ambient speech
|
||||
|
||||
openWakeWord scores one short (~80ms) audio frame at a time, so a stray phoneme
|
||||
|
|
@ -264,6 +271,27 @@ Fix: System Settings → Privacy & Security → Microphone → enable the Hermes
|
|||
backend (it may appear as your terminal, `python`, or Hermes), then toggle the
|
||||
wake word off and on.
|
||||
|
||||
### "Listening" but receives silence (Windows)
|
||||
|
||||
Desktop push-to-talk and wake-word capture use different microphone paths.
|
||||
Push-to-talk uses the desktop application's browser capture, while the
|
||||
wake-word listener opens a PortAudio stream in the Python backend. One can work
|
||||
while the other selects a silent or unusable Windows input.
|
||||
|
||||
`/wake status` reports the selected input device and Windows audio host API.
|
||||
When it reports silence, set `wake_word.input_device` to the numeric index or an
|
||||
unambiguous name of the working PortAudio input, then toggle the wake word:
|
||||
|
||||
```bash
|
||||
hermes config set wake_word.input_device "Microphone Array"
|
||||
```
|
||||
|
||||
Use `null` to return to the process default:
|
||||
|
||||
```bash
|
||||
hermes config set wake_word.input_device null
|
||||
```
|
||||
|
||||
## Notes & limits
|
||||
|
||||
- **Local surfaces only.** The wake word runs in the CLI, TUI, and desktop GUI —
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue