* add possibility to add own wake words and sounds * improve documentation --------- Co-authored-by: Florian Asche <git@florian-asche.de>
80 lines
5.9 KiB
Markdown
80 lines
5.9 KiB
Markdown
# Linux-Voice-Assistant
|
|
|
|
[](https://github.com/OHF-Voice/linux-voice-assistant/actions/workflows/docker-build-release.yml) [](https://github.com/OHF-Voice/linux-voice-assistant/pkgs/container/linux-voice-assistant) [](https://github.com/OHF-Voice/linux-voice-assistant/blob/main/LICENSE.md) [](https://github.com/OHF-Voice/linux-voice-assistant/commits) [](https://github.com/OHF-Voice/linux-voice-assistant/pkgs/container/linux-voice-assistant)
|
|
|
|
Experimental Linux-Voice-Assistant for [Home Assistant](https://www.home-assistant.io/) that uses the [ESPHome](https://esphome.io/) protocol/API (via [aioesphomeapi](https://github.com/esphome/aioesphomeapi)).
|
|
|
|
[](https://www.openhomefoundation.org/)
|
|
|
|
## Features:
|
|
|
|
- Works with [Home Assistant](https://www.home-assistant.io/integrations/esphome/)
|
|
- Local wake word detection using integrated [OpenWakeWord](https://github.com/dscripka/openWakeWord) or [MicroWakeWord](https://github.com/kahrendt/microWakeWord)
|
|
- Supports multiple architectures (linux/amd64 and linux/aarch64)
|
|
- Automated builds with artifact attestation for security
|
|
- Supports multiple wake words and languages
|
|
- Supports announcments, start/continue conversation, and timers
|
|
- Tested with Python 3.13 and Python 3.11.
|
|
- Prebuild docker image available on [GitHub Container Registry](https://github.com/OHF-Voice/linux-voice-assistant/pkgs/container/linux-voice-assistant)
|
|
- Prebuild Raspberry Pi image
|
|
|
|
|
|
## Usage:
|
|
|
|
### Hardware:
|
|
|
|
You can for example use the Raspberry Pi Zero 2W with the [Satellite1 Hat Board](https://futureproofhomes.net/products/satellite1-top-microphone-board), the [Respeaker Lite](https://wiki.seeedstudio.com/reSpeaker_usb_v3/) or the [Respeaker 2Mic_Hat](https://wiki.seeedstudio.com/ReSpeaker_2_Mics_Pi_HAT/). A list for possible compatible hardware can be found in the [PiCompose documentation](https://github.com/florian-asche/PiCompose) but basically any microphone that works with [Pipewire](https://pipewire.org/) can be used with the prebuild image.
|
|
|
|
### Software:
|
|
|
|
#### Installation:
|
|
|
|
We have different installation methods available (Docker, systemd), each with its own dedicated instructions.
|
|
|
|
See [Linux-Voice-Assistant - Installation](docs/install.md).
|
|
|
|
#### Parameter overview:
|
|
|
|
💡 **Note:** There is a [environment variable](docs/install_application.md#environment-variables-reference) for each parameter if you use docker or systemd based setup.
|
|
|
|
``` sh
|
|
usage: __main__.py [-h] [--name NAME] [--audio-input-device AUDIO_INPUT_DEVICE] [--list-input-devices] [--audio-input-block-size AUDIO_INPUT_BLOCK_SIZE] [--audio-output-device AUDIO_OUTPUT_DEVICE] [--list-output-devices] [--wake-word-dir WAKE_WORD_DIR]
|
|
[--wake-model WAKE_MODEL] [--stop-model STOP_MODEL] [--download-dir DOWNLOAD_DIR] [--refractory-seconds REFRACTORY_SECONDS] [--wakeup-sound WAKEUP_SOUND] [--timer-finished-sound TIMER_FINISHED_SOUND] [--processing-sound PROCESSING_SOUND]
|
|
[--mute-sound MUTE_SOUND] [--unmute-sound UNMUTE_SOUND] [--preferences-file PREFERENCES_FILE] [--host HOST] [--network-interface NETWORK_INTERFACE] [--port PORT] [--enable-thinking-sound] [--debug]
|
|
```
|
|
|
|
| Parameter | Description | Default |
|
|
|-----------|-------------|---------|
|
|
| `--name` | Name of the voice assistant device (required) | Autogenerated (`lva-MAC-ADDRESS`) |
|
|
| `--audio-input-device` | Soundcard name for input device | Autodetected |
|
|
| `--audio-input-block-size` | Audio input block size in samples | 1024 |
|
|
| `--audio-output-device` | mpv name for output device | Autodetected |
|
|
| `--wake-word-dir` | Directory with wake word models (.tflite) and configs (.json) | `wakewords/` |
|
|
| `--wake-model` | ID of active wake word model | `okay_nabu` |
|
|
| `--stop-model` | ID of stop model | `stop` |
|
|
| `--download-dir` | Directory to download custom wake word models, etc. | `local/` |
|
|
| `--refractory-seconds` | Seconds before wake word can be activated again | 2.0 |
|
|
| `--wakeup-sound` | Sound file played when wake word is detected | `sounds/wake_word_triggered.flac` |
|
|
| `--timer-finished-sound` | Sound file played when timer finishes | `sounds/timer_finished.flac` |
|
|
| `--processing-sound` | Sound played while assistant is processing | `sounds/processing.wav` |
|
|
| `--mute-sound` | Sound played when muting the assistant | `sounds/mute_switch_on.flac` |
|
|
| `--unmute-sound` | Sound played when unmuting the assistant | `sounds/mute_switch_off.flac` |
|
|
| `--preferences-file` | Path to preferences JSON file | `preferences.json` |
|
|
| `--host` | IP-Address for ESPHome server, use 0.0.0.0 for all | Autodetected |
|
|
| `--network-interface` | Network interface for ESPHome server | Autodetected |
|
|
| `--port` | Port for ESPHome server | 6053 |
|
|
| `--enable-thinking-sound` | Enable thinking sound on startup | False |
|
|
| `--debug` | Print DEBUG messages to console | False |
|
|
|
|
## Build Information:
|
|
|
|
Image builds can be tracked in this repository's `Actions` tab, and utilize [artifact attestation](https://docs.github.com/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds) to certify provenance.
|
|
|
|
The Docker images are built using GitHub Actions, which provides:
|
|
|
|
- Automated builds for different architectures
|
|
- Artifact attestation for build provenance verification
|
|
- Regular updates and maintenance
|
|
|
|
The documentation for the build process can be found in the [GitHub Actions Workflows](.github/workflow.md) file.
|