Commit Graph
42 Commits
Author SHA1 Message Date
SpiliosDmk 69a4fd3098 docs: add realtime scheduling tuning for constrained hardware (#376)
The core problem in #164 (config fully overriding pipewire.conf) was
already fixed by switching to pipewire.conf.d. This adds the
remaining performance-tuning recommendation (libpipewire-module-rt)
from the issue thread that never made it into the docs, to reduce
audio dropouts on hardware like the Raspberry Pi 3B.

Closes #164
2026-07-26 16:01:33 +02:00
aryanhasgithubandFlorian Asche 2eb29470f9 Colored Debug Logging and move Voice Event to Info level in logger (#271)
* Added Colored Debug logging and arhument and changes voice event log to info

---------

Co-authored-by: Florian Asche <github@florian-asche.de>
2026-07-22 01:09:13 +02:00
maximilianovermeyer d3874f6a2f Update install.md - Fixed log path (#372)
Fixed a typo in the path of the log dir.
2026-07-21 19:39:52 +02:00
Willian WangandFlorian Asche a66c0e4f28 feat: add --listen-during-wake-sound argument (#273)
* feat: add --listen-during-wake-sound argument

---------

Co-authored-by: Florian Asche <github@florian-asche.de>
2026-07-18 19:16:11 +02:00
Omar Amin 2d460b6728 Leds and buttons events (#266)
Use events and commands to control custom onboard leds and buttons. Can be used to communicate with an external Python script via a WebSocket API running in a container alongside LVA.
2026-07-03 19:58:45 +03:00
Omar Amin 49b0937a13 Document continue-conversation-delay 2026-07-01 02:48:25 +03:00
Omar Amin 19c6322c28 Add audio input channels env 2026-06-24 22:57:31 +03:00
Omar Amin 32f6de6222 Enhance wake word documentation (#336)
Added more detailed section for both MicoWakeWord&OpenWakeWord.
2026-06-09 01:29:42 +03:00
aryanhasgithub ec70b3b58d Add volume arg to parser (#335)
This PR adds the mic volume to the arg parser and makes the value range from 1-100
2026-06-07 18:15:05 +03:00
Omar Amin 2a4a08a55b Add webrtc library links in audio options documentation
Updated documentation to include links to the webrtc library for gain and noise suppression features.
2026-05-28 18:24:58 +03:00
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
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 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
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
Florian Asche 8b060d7346 docs(config): document timer max ring seconds configuration (#277) 2026-03-31 01:33:07 +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
Florian Asche 0130d2241f Fix link to AEC enabling documentation 2026-03-23 16:33:39 +01:00
aryanhasgithub fbc4e05fbd Add Instructions for enabling AEC (#254)
* Added AEC instructions to documentation
2026-03-23 02:05:59 +01:00
Florian Asche d6b803e6d6 fix(config): remove unix: prefix from default pulseaudio socket path … (#221)
* fix(config): remove unix: prefix from default pulseaudio socket path in .env.example and docs
* docs: update install documentation
2026-03-10 02:03:07 +01:00
Florian Asche b53678e0f3 fix: cookie error (#127) (#210)
* Add support for custom PulseAudio cookie configuration
2026-03-07 17:33:48 +01:00
Florian Asche efbad18275 docs: add documentation for low power device setup and improve setup script (#206) 2026-03-05 23:59:41 +01:00
Florian Asche 43f7cd3e7d added default sample rate to pulse documentation (#190) 2026-03-02 16:15:45 +01:00
Florian Asche 80e0d6254e Fix: Suppress spurious end-file event when starting playback and tts.speak (#179)
* bugfix: supress first end of file event and only callback on second one
* add some notes on testing
* fixed tts.speak
* fix unduck after timer end
* use custom docker-entrypoint on dev container
* change mv to copy in the docs when using .env file
2026-02-26 01:31:18 +01:00
Florian Asche 5a732f8421 docs: add info about reboot (#175) 2026-02-22 21:18:34 +01:00
Florian AscheandFlorian Asche 70fab99c9f Feature/custom paths (#165)
* add possibility to add own wake words and sounds
* improve documentation

---------

Co-authored-by: Florian Asche <git@florian-asche.de>
2026-02-20 19:05:38 +01:00
Florian AscheandFlorian Asche 033ff45baf Documentation (#162)
* docs: add info about permission and fix variable name
* docs(install): simplify systemd service user setup
* docs: Remove LVA_USER_ID and LVA_USER_GROUP environment variables from the systemd unit example. The User directive is sufficient for defining the service user. Consolidated installation notes regarding user permissions.

---------

Co-authored-by: Florian Asche <git@florian-asche.de>
2026-02-19 23:00:03 +01:00
Elia Giacobazzi e1670ba5cf Correct LVA_USER_ID variable name where wrong 2026-02-17 17:26:26 +01:00
Elia Giacobazzi 358e02afd5 Add missing code block characters 2026-02-14 01:13:32 +01:00
Elia Giacobazzi ffabc7d9fd Update documentation, correcting typo
- Fix typo where variable LVA_USER_ID was written as USERLVA_
- Remove "sudo ln -sf" from descriptive text
- Add missing sudo command from two code blocks
- Add characters probably missign due to typos
2026-02-13 23:55:52 +01:00
Florian Asche 725c39013a Improve documentation (#141)
* add new parameter overview
* change download link for docker-compose setup to latest version
2026-02-13 19:58:15 +01:00
Florian Asche 4052daae01 hotfix for mac-detection and various variable names (#139)
* Change Client-Name: The client name inside LVA is not capable of having spaces in the name. Fixed the example.
* Add first version of Docker-Compose for developers
* Add variable for network-interface and auto detection by default
* Added autodetection for the MAC-Address based on the detected or specified network-interface.
* Switched from listening on all IP-Addresses to the IP of the default interface, usually u set the correct network-interface and it will automatically detect the right IP-Address.
* Added missing variables, fixed variables names
* Fixed not working variables for example sound-files.
* Moved the auto-name creation from shell to python. The name is no longer mandatory, it will be generated if no name is given.
2026-02-13 19:50:20 +01:00
Florian Asche 54aaad7a15 rename variables to prevent override by os 2026-02-08 15:01:26 +01:00
Florian Asche e83b17b565 documentation: fixed typo 2026-02-02 02:49:18 +01:00
Florian Asche acc0dc01d0 documentation: fixed typo 2026-02-02 02:48:32 +01:00
Florian Asche c132a2680b documentation: changed filename 2026-02-02 02:47:03 +01:00
Florian Asche 098ab56d4f Added GROUP_ID to the documentation 2026-02-02 02:30:03 +01:00
Florian Asche 3ec38e9283 improve documentation 2026-02-01 21:29:48 +01:00
Florian Asche 7655d9e398 improved documentation 2026-02-01 20:20:46 +01:00