Commit Graph
245 Commits
Author SHA1 Message Date
Omar Amin 3ea32895ee Wake word sensitivity (#207)
## Summary
- Introduces configurable wake word and stop word sensitivity
- Adds UI-controllable thresholds for wake word detection
- Refactors wake word loading and handling logic
- Improves audio preprocessing and runtime behavior

## Key Features
- Per-wake-word sensitivity configuration (Wake Word 1 & 2)
- Configurable stop word sensitivity
- Fine-grained numeric control (0.0 – 1.0, step 0.001)
- Sensitivity values exposed as Number Entities for Home Assistant
- Persistent storage of user-defined sensitivity values

## Wake Word Handling
- Support for model-specific default thresholds (`probability_cutoff`)
- Automatic fallback to defaults if no user value is set
- Separate thresholds for:
  - Wake Word 1
  - Wake Word 2
  - Stop Word
- Unified handling for MicroWakeWord and OpenWakeWord models

## UI / API Integration
- Adds new Home Assistant entities:
  - `WakeWord1SensitivityNumberEntity`
  - `WakeWord2SensitivityNumberEntity`
  - `StopWordSensitivityNumberEntity`
- Entities support:
  - Live updates
  - Persistence via preferences
  - Synchronization with runtime state
- Pushes updated values to Home Assistant on startup

## Refactoring
- Extracted wake word logic into `wake_word.py`
  - Model discovery
  - Model loading
  - Stop word handling
- Simplified `__main__.py` by delegating wake word responsibilities
- Improved separation between configuration and runtime state

## Additional Changes
- Improved debug logging across initialization and runtime

## Impact
- Enables fine-tuning of wake word detection accuracy
- Reduces false positives and missed triggers
- Improves usability via UI-based configuration
- Provides better flexibility across different environments and microphones
2026-04-21 02:04:11 +02:00
Omar Amin 0de631160e Fix formatting issues in README.md 2026-04-21 00:46:01 +02:00
genericJE 48d9868d1d docs(install): clarify linger is required on headless systems (#299)
* docs(install): clarify linger is required on headless systems
2026-04-20 03:02:36 +02:00
Omar Amin 4c9d92f499 Fix audio cuts and playback issues (#296)
Increase the audio-buffer seconds to initialise the sink stream.
2026-04-17 18:43:32 +02:00
Omar Amin a21d217d45 Fix duplicate MIC_VOLUME entry in install_application.md
Removed duplicate MIC_VOLUME entry from documentation.
2026-04-17 17:40:02 +02:00
Florian Asche d2c2e6fbb9 docs(install): add missing MIC_VOLUME entry in env config table 2026-04-17 15:39:03 +02:00
Omar Amin 0722c40f67 Fix typo in Environment variable for MIC_VOLUME 2026-04-17 02:32:01 +02:00
Omar Amin 72311bf58a Fix spelling and document MIC_VOLUME in installation guide
Corrected spelling of 'Environment' and added documentation for MIC_VOLUME.
2026-04-17 02:30:07 +02:00
Omar Amin 995da72569 Add mic-volume option to README 2026-04-16 23:52:38 +02:00
Omar Amin 79dde095b0 Add mic volume argument to entrypoint script 2026-04-16 23:50:52 +02:00
Omar Amin c284806b73 Add the ability to control microphone volume (#287)
Control microphone volume via UI in device page. Set to the maximum by default and saved in preferences to restore upon restarts.
2026-04-10 01:33:34 +02:00
aryanhasgithub 4ee7bb04bc Add support for WebRTC Auto Gain and Noise Suppression (#250)
## WebRTC Auto Gain & Noise Suppression
 
This PR adds support for WebRTC Auto Gain and Noise Suppression as previously implemented in the Wyoming Satellite project.
 
### What's New
 
Two new entities have been created a number slider for gain and another one for noise suppression. The processing happens inside of the `webrtc.py` file and is implemented in the `__main__.py` file's `process_audio` function. The slider for gain has a limit of 0-31 and noise suppression has a limit of 0-4.
 
The Auto Gain and Noise Suppression persist through restarts and are saved as preferences. The values are dynamically chnged without needing a restart.
 
CLI flags called `--mic-auto-gain` and `--mic-noise-suppression` have also been added.
 
>  When both values are 0, WebRTC processing is bypassed entirely with no performance overhead.

Closes #25 
 
### Testing
 
When saving the audio recorded by LVA there is a noticeable increase. The following two files have been recorded with similar audio being played through them with these results (Gain-31 and NS-4):
 
| Metric | With AGC+NS | Without |
|---|---|---|
| Max amplitude | 0.329 | 0.054 |
| RMS amplitude | 0.008905 | 0.002862 |
| Volume adjustment needed | 3.034x | 13.479x |
| Rough frequency | 916 Hz | 705 Hz |
2026-04-09 00:43:11 +02:00
Florian Asche 341e3dcb9c Output only satellite - part 2 (#278)
Introduce a new `--output-only` command-line flag and corresponding `ENABLE_OUTPUT_ONLY` environment variable. This allows users to run the assistant in output-only mode, where it only supports announcements. The change includes updates to configuration examples, documentation, and the Docker entrypoint script.
2026-03-31 01:57:47 +02:00
JaminandFlorian Asche 7732be0de8 Output only satellite (#182)
Output only satellite for nodes with only speakers and no microphone.
Supports announcements and playing media only.

---------

Co-authored-by: Florian Asche <github@florian-asche.de>
2026-03-31 01:56:16 +02:00
Florian Asche 8b060d7346 docs(config): document timer max ring seconds configuration (#277) 2026-03-31 01:33:07 +02:00
Florian Asche 943c56161f fix(docker): simplify PulseAudio cookie file creation (#276)
Breaking Change: From now on the cookie file will be created in the configured directory/file. There will be no alternative directory where we try to create and touch the file. You need to make sure that the configured directory is writeable from the application.
2026-03-31 01:17:09 +02:00
Omar Amin 88fb2c5a49 Start listening after stopping ringing timer using wake word (#275)
Wake-up after stopping ringing timer using wake words such as "Okay Nabu", "Hey Jarvis" rather than "Stop" to get another command instead of the need to repeat the wake word.
2026-03-31 00:11:25 +02:00
Martin WeineltandFlorian Asche 9067648c87 Expose linux-voice-assistant console script (#268)
Co-authored-by: Florian Asche <github@florian-asche.de>
2026-03-30 21:04:01 +02:00
95323553a5 Fixed PipeWire setup (#258)
* Updated Config and Entrypoint to check for both PA and PW and removed no longer needed additional settings

---------

Co-authored-by: Omar Amin <65174210+omaramin-2000@users.noreply.github.com>
Co-authored-by: Florian Asche <github@florian-asche.de>
2026-03-30 20:57:19 +02:00
Martin WeineltandFlorian Asche 0081f2edee Discover project version from Git tags (#270)
Co-authored-by: Florian Asche <github@florian-asche.de>
2026-03-30 02:16:39 +02:00
b3cd3ec7cf Update package inclusion to include subpackages: Python Module Hotfix (#245)
* Update package inclusion to include subpackages

---------

Co-authored-by: Florian Asche <github@florian-asche.de>
Co-authored-by: Omar Amin <65174210+omaramin-2000@users.noreply.github.com>
2026-03-30 02:13:07 +02:00
Florian Asche 47e617fcab fix PR build pipeline typo 2026-03-30 01:48:11 +02:00
Florian Asche 7a62a75aa6 fix PR build pipeline 2026-03-30 01:30:49 +02:00
Florian Asche c1906a3f20 3 2026-03-30 01:21:07 +02:00
Hedda 0dce320db2 Update README removing colon signs section headers (#265)
Update README to remove the colon sign from all section headers to make formatting consistant with other projects from the Open Home Foundation.
2026-03-26 16:56:44 +01:00
Omar Amin 412035e6b2 Fix lint formatting (#262) 2026-03-26 14:54:40 +02:00
Omar Amin 4194aa42ec Add maximum seconds for ringing timer (#261)
Auto stop ringing timer if the determined time (default 15 mins) has passed without manually stopping. This max time can be modified using the command `--timer-max-ring-seconds`.
2026-03-25 01:46:53 +02:00
Vlad Gaevsky ede3785539 Add debug logging for stop word detection (#257) 2026-03-23 16:35:06 +01:00
Florian Asche 0130d2241f Fix link to AEC enabling documentation 2026-03-23 16:33:39 +01:00
Vlad GaevskyandOmar Amin 96fd54a008 Fix double _tts_finished() call when stop word interrupts TTS (#256)
tts_player.stop() already invokes its done_callback which is
_tts_finished(), so the explicit self._tts_finished() call immediately
after was a duplicate. This caused double 'Unducking music' and double
'TTS response finished' log entries on every stop-word-triggered stop.

Also move _pipeline_active = False inside the 'if not self._tts_played'
branch in VOICE_ASSISTANT_RUN_END, so it is not cleared while TTS is
still playing.

Co-authored-by: Omar Amin <65174210+omaramin-2000@users.noreply.github.com>
2026-03-23 16:24:38 +01:00
aryanhasgithub fbc4e05fbd Add Instructions for enabling AEC (#254)
* Added AEC instructions to documentation
2026-03-23 02:05:59 +01:00
NP v/d Spek 8bb118b411 Cleanup mac address (#249) 2026-03-19 02:27:32 +01:00
Florian Asche abf6cd07b7 changed from review to environment 2026-03-19 01:48:27 +01:00
Florian Asche a5c37de4ec change workflow requirement 2026-03-19 01:41:32 +01:00
Florian Asche 9ddb929423 Hotfix/build pipeline (#253)
* move pr build into its own package
* build code used is from main only for security reasons
2026-03-19 01:30:01 +01:00
Jamin c3885a494b Move examples out of tests directory (#193) 2026-03-15 05:53:49 +01:00
Omar Amin d4f5b549da Update CHANGELOG.md 2026-03-15 05:46:06 +02:00
NP v/d Spek 9d19ffe6da init (#235) 2026-03-14 22:35:54 +01:00
Hedda 496cd90a8c Revise intro to Linux-Voice-Assistant in README (#223)
* Revise intro to Linux-Voice-Assistant in README
2026-03-11 21:41:03 +01:00
Florian Asche 043e8fb1ff Cookie file and other default parameters (#231)
* adding a more robust system around the cookie file and add other default values for parameters
* removed duplicate PulseAudio running message
v1.1.9
2026-03-11 21:03:21 +01:00
Omar Amin 735731b63e Fix typo in line 176 2026-03-11 03:01:00 +02:00
Florian Asche a57b13b2d6 Add changelog generator based on release information (#226) v1.1.8 2026-03-11 01:39:32 +01:00
Florian Asche bfabc232c7 add changelog file generator 2026-03-11 01:34:00 +01:00
Florian Asche 3027b33f51 remove cliff.toml v1.1.7 2026-03-11 01:29:25 +01:00
Florian Asche cddec7709c add changelog based on release notes (#225) 2026-03-11 01:27:17 +01:00
Hedda be9c1220cd Enhance hardware compatibility details in README (#222)
* Enhance hardware compatibility details in README
2026-03-11 01:15:25 +01:00
Omar Amin 893476ebf2 Merge pull request #224 from omaramin-2000/main
Update the changelog file automatically on each release
2026-03-11 01:42:25 +02:00
Omar Amin 50f6fef860 Create cliff.toml 2026-03-11 01:11:49 +02:00
Omar Amin cd453b685a Merge branch 'main' into main 2026-03-11 01:08:49 +02:00
Omar Amin 79c34cf0b3 Update CHANGELOG.md 2026-03-11 01:06:29 +02:00