### Run Wyoming Satellite Installer Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_installer.md Navigate into the newly cloned wyoming-satellite directory and execute the Python installer script to begin the interactive setup process for the satellite. ```sh cd wyoming-satellite/ python3 -m installer ``` -------------------------------- ### Clone Wyoming Satellite Repository Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_installer.md Once system dependencies are installed, clone the official wyoming-satellite repository from GitHub to obtain all necessary project files for the voice satellite. ```sh git clone https://github.com/rhasspy/wyoming-satellite.git ``` -------------------------------- ### Install System Dependencies for Wyoming Satellite Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_installer.md After connecting to the Raspberry Pi via SSH, update the package list and install essential system dependencies like git and python3-venv, which are required for the Wyoming satellite setup. ```sh sudo apt-get update sudo apt-get install --no-install-recommends \ git \ python3-venv ``` -------------------------------- ### Install System-Wide Python GPIO and SPI Packages Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command installs `python3-spidev` and `python3-gpiozero` system-wide using `apt-get`. These packages are required if they are not already pre-installed on your system and you are using the `--system-site-packages` argument with your virtual environment. ```sh sudo apt-get install python3-spidev python3-gpiozero ``` -------------------------------- ### Verify Wyoming Satellite Installation Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Executes the `script/run` command with the `--help` flag to confirm that the `wyoming-satellite` application has been successfully installed and is executable within its virtual environment. ```sh script/run --help ``` -------------------------------- ### Enable and Start Wyoming Satellite Systemd Service Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command enables the `wyoming-satellite.service` to start automatically at boot and immediately starts it. It ensures the service is active and persistent across reboots. ```sh sudo systemctl enable --now wyoming-satellite.service ``` -------------------------------- ### Install openWakeWord System Dependencies Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command updates package lists and installs necessary system libraries for openWakeWord, specifically `libopenblas-dev`, which is required for numerical operations. ```sh sudo apt-get update sudo apt-get install --no-install-recommends \ libopenblas-dev ``` -------------------------------- ### Set Up Python Virtual Environment and Install Wyoming Satellite Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Navigates back to the `wyoming-satellite` directory, creates a Python virtual environment, upgrades essential Python tools (pip, wheel, setuptools), and then installs the `wyoming-satellite` project along with all its dependencies into the isolated environment. ```sh cd wyoming-satellite/ python3 -m venv .venv .venv/bin/pip3 install --upgrade pip .venv/bin/pip3 install --upgrade wheel setuptools .venv/bin/pip3 install \ -f 'https://synesthesiam.github.io/prebuilt-apps/' \ -e '.[all]' ``` -------------------------------- ### Clone and Setup openWakeWord Wyoming Service Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md These commands clone the `wyoming-openwakeword` repository from GitHub and then execute its setup script. This prepares the openWakeWord service for local wake word detection. ```sh git clone https://github.com/rhasspy/wyoming-openwakeword.git cd wyoming-openwakeword script/setup ``` -------------------------------- ### Install LED Service Python Dependencies for ReSpeaker HATs Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command sequence installs the necessary Python packages for the Wyoming satellite LED service, including `wyoming` itself. It uses a Python virtual environment to manage dependencies, ensuring isolation from system-wide packages. ```sh cd wyoming-satellite/examples python3 -m venv --system-site-packages .venv .venv/bin/pip3 install --upgrade pip .venv/bin/pip3 install --upgrade wheel setuptools .venv/bin/pip3 install 'wyoming==1.5.2' ``` -------------------------------- ### Install System Dependencies on Satellite Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Updates package lists and installs necessary system dependencies like git and python3-venv on the Raspberry Pi satellite, which are required for cloning the repository and setting up the Python environment. ```sh sudo apt-get update sudo apt-get install --no-install-recommends \ git \ python3-venv ``` -------------------------------- ### Install ReSpeaker HAT Drivers Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Navigates into the `wyoming-satellite` directory and executes a script to recompile and install specific drivers for ReSpeaker 2Mic or 4Mic HATs. This process is crucial for proper audio functionality and can take a significant amount of time. ```sh cd wyoming-satellite/ sudo bash etc/install-respeaker-drivers.sh ``` -------------------------------- ### Reboot Satellite After Driver Installation Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Reboots the Raspberry Pi satellite to ensure that the newly installed ReSpeaker HAT drivers are properly loaded and active, which is a necessary step before continuing the software setup. ```sh sudo reboot ``` -------------------------------- ### Systemd Service Unit Template for 2Mic LEDs Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This template defines a systemd service for controlling the 2Mic LEDs. It specifies the service type, the executable path for the Python script, the working directory, and the restart policy. Users must adjust the `/home/pi` path and script arguments to match their specific setup. ```text [Unit] Description=2Mic LEDs [Service] Type=simple ExecStart=/home/pi/wyoming-satellite/examples/.venv/bin/python3 2mic_service.py --uri 'tcp://127.0.0.1:10500' WorkingDirectory=/home/pi/wyoming-satellite/examples Restart=always RestartSec=1 [Install] WantedBy=default.target ``` -------------------------------- ### Install pixel-ring for ReSpeaker USB 4mic Array v2.0 Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md If you are using a ReSpeaker USB 4mic array v2.0, this command installs the `pixel-ring` library. This library is specifically required for controlling the LEDs on that particular hardware model. ```sh .venv/bin/pip3 install 'pixel-ring' ``` -------------------------------- ### Client-Side Wyoming Timer Management with JavaScript WebSockets Source: https://github.com/rhasspy/wyoming-satellite/blob/master/examples/websocket-service/timers.html This JavaScript code implements the client-side logic for a Wyoming timer application. It connects to a WebSocket server, processes incoming timer events (start, cancel, update, finish), and dynamically renders and updates timer elements in the HTML. It includes functions for DOM manipulation, timer state management (active, paused, finished), and visual feedback like blinking animations and audio alerts. ```JavaScript let socket = new WebSocket("ws://localhost:8675") var timers = [] var finished_timers = 0 function q(selector) {return document.querySelector(selector)} socket.onopen = function(e) { console.log("Connected") }; socket.onmessage = function(event) { wyo_event = JSON.parse(event.data) if (wyo_event.type == "timer-started") { let timer_info = wyo_event.data timer_info.is_active = true console.log(timer_info) timers.push(timer_info) let timers_elem = q("#timers") let timer_div = document.createElement("div") timer_div.id = "timer-" + timer_info.id timer_div.classList.add("timer") let message_div = document.createElement("div") message_div.classList.add("message") if (timer_info.name) { message_div.innerHTML = timer_info.name } else { if (timer_info.start_hours) { message_div.innerHTML += timer_info.start_hours + " hr " } if (timer_info.start_minutes) { message_div.innerHTML += timer_info.start_minutes + " min " } if (timer_info.start_seconds) { message_div.innerHTML += timer_info.start_seconds + " sec " } } timer_div.appendChild(message_div) let time_div = document.createElement("div") time_div.classList.add("time") let hours = timer_info.start_hours ?? 0 let minutes = timer_info.start_minutes ?? 0 let seconds = timer_info.start_seconds ?? 0 time_div.innerHTML = hours.toString().padStart(2, 0) + ":" + minutes.toString().padStart(2, 0) + ":" + seconds.toString().padStart(2, 0); timer_div.appendChild(time_div) timers_elem.appendChild(timer_div) setTimeout(update_timer, 1000, timer_info) } else if (wyo_event.type == "timer-cancelled") { let timer_info = wyo_event.data timers = timers.filter(t => t.id != timer_info.id) let timer_div = q("#timer-" + timer_info.id) if (timer_div) { timer_div.remove() } } else if (wyo_event.type == "timer-updated") { let timer_info = wyo_event.data for (i = 0; i < timers.length; i++) { if (timers[i].id == timer_info.id) { timers[i].is_active = timer_info.is_active timers[i].total_seconds = timer_info.total_seconds break } } let timer_div = q("#timer-" + timer_info.id) if (timer_div) { if (timer_info.is_active) { timer_div.classList.remove("paused") } else { timer_div.classList.add("paused") } } } else if (wyo_event.type == "timer-finished") { let timer_info = wyo_event.data for (i = 0; i < timers.length; i++) { if (timers[i].id == timer_info.id) { timers[i].total_seconds = 0 finished_timers += 1 if (finished_timers == 1) { q("#audio-finished").play() } break } } timers = timers.filter(t => t.id != timer_info.id) let timer_div = q("#timer-" + timer_info.id) if (timer_div) { timer_div.classList.add("finished") timer_div.classList.add("blink") timer_div.onclick = function() { timer_div.remove() finished_timers = Math.max(0, finished_timers - 1) if (finished_timers == 0) { let audio = q("#audio-finished") audio.pause() audio.currentTime = 0 } }; } let time_div = q("#timer-" + timer_info.id + " .time") if (time_div) { time_div.style.opacity = 0 } } }; socket.onclose = function(event) { console.log("Disconnected") }; socket.onerror = function(error) { }; function update_timer(timer_info) { if (timer_info.total_seconds < 0) { return } let time_div = q("#timer-" + timer_info.id + " .time") if (!time_div) { return } if (!timer_info.is_active) { // Paused setTimeout(update_timer, 1000, timer_info) return } if (timer_info.total_seconds > 0) { timer_info.total_seconds -= 1 } let total_minutes = Math.floor(timer_info.total_seconds / 60) let hours = Math.floor(total_minutes / 60) let minutes = total_minutes % 60 let seconds = timer_info.total_seconds % 60 time_div.innerHTML = hours.toString().padStart(2, 0) + ":" + minutes.toString().padStart(2, 0) + ":" + seconds.toString().padStart(2, 0) setTimeout(update_timer, 1000, timer_info) }; ``` -------------------------------- ### Check Wyoming Satellite Service Logs Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_installer.md After applying all configuration settings, use this command to continuously monitor the logs of the wyoming-satellite service, which helps in debugging and verifying its operation. ```sh sudo journalctl -f -u wyoming-satellite.service ``` -------------------------------- ### Run Wyoming Satellite Setup Script Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md Executes the main setup script for the Wyoming Satellite project. This script typically handles the creation of the Python virtual environment and other initial project configurations. ```sh script/setup ``` -------------------------------- ### Run Wyoming Satellite with Audio Devices Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Starts the Wyoming satellite application, configuring it with debug mode, a custom name, a URI for communication, and specific commands for microphone input and speaker output using the previously determined audio devices. This command initiates the core voice satellite functionality. ```sh script/run \ --debug \ --name 'my satellite' \ --uri 'tcp://0.0.0.0:10700' \ --mic-command 'arecord -D plughw:CARD=seeed2micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t raw' \ --snd-command 'aplay -D plughw:CARD=seeed2micvoicec,DEV=0 -r 22050 -c 1 -f S16_LE -t raw' ``` -------------------------------- ### Install ALSA Utilities for Audio Recording and Playback Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md Installs `alsa-utils`, a package providing command-line utilities like `arecord` and `aplay` for recording and playing audio. These utilities are used by the Wyoming Satellite for microphone input and speaker output. ```sh sudo apt-get install alsa-utils ``` -------------------------------- ### Install System Dependencies for Wyoming Satellite Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md This command installs essential system packages required for setting up the Wyoming Satellite, including Python 3 virtual environment tools and pip for package management, which are crucial for managing Python dependencies. ```sh sudo apt-get install python3-venv python3-pip ``` -------------------------------- ### Configure Wyoming Satellite Audio Enhancements Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This snippet shows example command-line arguments for `script/run` to enable automatic gain control and noise suppression. `--mic-auto-gain` adjusts microphone volume (0-31 dbFS), and `--mic-noise-suppression` reduces background noise (0-4). ```sh script/run \ ... \ --mic-auto-gain 5 \ --mic-noise-suppression 2 ``` -------------------------------- ### Start Wyoming OpenWakeWord Detection Service Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md Starts the `wyoming-openwakeword` service, which provides local wake word detection capabilities. This command configures the service's URI and preloads a specified wake word model, such as 'ok_nabu', for immediate use. ```sh cd wyoming-openwakeword/ script/run \ --uri 'tcp://0.0.0.0:10400' \ --preload-model 'ok_nabu' ``` -------------------------------- ### Install webrtc-noise-gain Python Package Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md This shell command installs the "webrtc-noise-gain" Python library using "pip3" within the project's virtual environment. This dependency is crucial for enabling advanced audio processing features like automatic gain control and noise suppression in the Wyoming Satellite. ```sh .venv/bin/pip3 install 'webrtc-noise-gain==1.2.3' ``` -------------------------------- ### Install PySilero VAD for Voice Activity Detection Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md Installs the `pysilero-vad` Python package, which provides Voice Activity Detection (VAD) capabilities. This allows the satellite to intelligently detect speech and only stream audio when speech is present, optimizing bandwidth usage. ```sh .venv/bin/pip3 install 'pysilero-vad==1.0.0' ``` -------------------------------- ### Start Wyoming Satellite with Voice Activity Detection (VAD) Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md Starts the Wyoming Satellite with Voice Activity Detection (VAD) enabled. When VAD is active, audio streaming to Home Assistant only begins once speech has been detected, reducing continuous data transfer. ```sh script/run \ ... \ --vad ``` -------------------------------- ### Disable and Stop Wyoming Satellite Systemd Service Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command disables the `wyoming-satellite.service` from starting at boot and immediately stops it. Use this to temporarily or permanently halt the service. ```sh sudo systemctl disable --now wyoming-satellite.service ``` -------------------------------- ### Style Wyoming Timer Display with CSS Source: https://github.com/rhasspy/wyoming-satellite/blob/master/examples/websocket-service/timers.html This CSS defines the visual appearance of the timer application. It sets background colors, flexbox layouts for containers and individual timers, and styles for different timer states like 'finished' or 'paused', including a blinking animation for finished timers. ```CSS body { background-color: black; } .timer-container { display: flex; flex-direction: row; justify-content: center; align-items: center; } .timer { display: flex; width: 100px; height: auto; flex-wrap:wrap; justify-content: center; align-items: center; background-color: #03a9f4; padding: 15px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); color: white; margin-right: 20px } .time { font-size: 20px; } .message { text-align: center; width: 90px; font-size: 24px; font-weight: bold; } .finished { background-color: red; } .paused { background-color: yellow; color: black; } .blink { animation: blink-animation 1s linear infinite; -webkit-animation: blink-animation 1s linear infinite; } @keyframes blink-animation { 0%, 100% {opacity: 1;} 50% {opacity: 0;} } @-webkit-keyframes blink-animation { 0%, 100% {opacity: 1;} 50% {opacity: 0;} } ``` -------------------------------- ### Start Wyoming Satellite with Remote Wake Word Detection Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md This command starts the Wyoming Satellite configured for remote wake word detection. It specifies the satellite's name, its network URI, and the commands for capturing audio from a microphone and playing audio through a speaker using ALSA utilities. ```sh cd wyoming-satellite/ script/run \ --name 'my satellite' \ --uri 'tcp://0.0.0.0:10700' \ --mic-command 'arecord -r 16000 -c 1 -f S16_LE -t raw' \ --snd-command 'aplay -r 22050 -c 1 -f S16_LE -t raw' ``` -------------------------------- ### Start Wyoming Satellite with Local Wake Word Detection Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md This command starts the Wyoming Satellite, configuring it to use a local wake word detection service. It specifies the satellite's name, its main URI, audio input/output commands, the URI of the local wake word service, and the specific wake word to listen for. ```sh cd wyoming-satellite/ script/run \ --name 'my satellite' \ --uri 'tcp://0.0.0.0:10700' \ --mic-command 'arecord -r 16000 -c 1 -f S16_LE -t raw' \ --snd-command 'aplay -r 22050 -c 1 -f S16_LE -t raw' \ --wake-uri 'tcp://127.0.0.1:10400' \ --wake-word-name 'ok_nabu' ``` -------------------------------- ### Partial Systemd Configuration for Wyoming Satellite Service Integration Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This snippet illustrates the specific sections to update within the `wyoming-satellite.service` file. It adds a `Requires` dependency on the `2mic_leds.service` and appends an `--event-uri` argument to the `ExecStart` command, enabling communication with the LED service. ```text [Unit] ... Requires=2mic_leds.service [Service] ... ExecStart=/home/pi/wyoming-satellite/script/run ... --event-uri 'tcp://127.0.0.1:10500' ... [Install] ... ``` -------------------------------- ### Test ReSpeaker LED Service Command Line Arguments Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command executes the 2Mic LED service script with the `--help` argument. It's used to display available command-line options and verify that the script can be executed successfully within its virtual environment. ```sh .venv/bin/python3 2mic_service.py --help ``` -------------------------------- ### Create Systemd Service File for ReSpeaker LEDs Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command opens the systemd editor to create or modify a service unit file named `2mic_leds.service`. The `--force --full` flags ensure that a new, full service file is created or an existing one is completely overwritten. ```sh sudo systemctl edit --force --full 2mic_leds.service ``` -------------------------------- ### openWakeWord Systemd Service Configuration Template Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This template defines the systemd service unit for Wyoming openWakeWord. It specifies the service's description, execution command, working directory, and restart policy. Users must customize paths and the URI argument. ```text [Unit] Description=Wyoming openWakeWord [Service] Type=simple ExecStart=/home/pi/wyoming-openwakeword/script/run --uri 'tcp://127.0.0.1:10400' WorkingDirectory=/home/pi/wyoming-openwakeword Restart=always RestartSec=1 [Install] WantedBy=default.target ``` -------------------------------- ### Update Wyoming Satellite Service for Local Wake Word Integration Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This snippet shows how to modify the existing `wyoming-satellite.service` to integrate with the local openWakeWord service. It adds a `Requires` dependency and updates the `ExecStart` command to include `--wake-uri` and `--wake-word-name` arguments. ```text [Unit] ... Requires=wyoming-openwakeword.service [Service] ... ExecStart=/home/pi/wyoming-satellite/script/run ... --wake-uri 'tcp://127.0.0.1:10400' --wake-word-name 'ok_nabu' ... [Install] ... ``` -------------------------------- ### List Available Microphones Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Lists all available audio input devices (microphones) on the system using `arecord -L`. This command is crucial for identifying the correct microphone device name needed for recording audio with the satellite. ```sh arecord -L ``` -------------------------------- ### Wyoming Satellite Systemd Service Configuration Template Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This template defines the systemd service unit for Wyoming Satellite. It specifies the service's description, dependencies, the execution command, working directory, and restart policy. Users must customize paths and arguments like name, URI, and audio commands. ```text [Unit] Description=Wyoming Satellite Wants=network-online.target After=network-online.target [Service] Type=simple ExecStart=/home/pi/wyoming-satellite/script/run --name 'my satellite' --uri 'tcp://0.0.0.0:10700' --mic-command 'arecord -D plughw:CARD=seeed2micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t raw' --snd-command 'aplay -D plughw:CARD=seeed2micvoicec,DEV=0 -r 22050 -c 1 -f S16_LE -t raw' WorkingDirectory=/home/pi/wyoming-satellite Restart=always RestartSec=1 [Install] WantedBy=default.target ``` -------------------------------- ### Record Audio Sample from Microphone Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Records a 5-second WAV audio sample from a specified microphone device (`-D`). This command helps in testing microphone functionality, verifying the correct device selection, and troubleshooting audio input issues. ```sh arecord -D plughw:CARD=seeed2micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t wav -d 5 test.wav ``` -------------------------------- ### Create openWakeWord Systemd Service File Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command opens an editor to create or modify the systemd service file for the Wyoming openWakeWord service, defining its operational parameters. ```sh sudo systemctl edit --force --full wyoming-openwakeword.service ``` -------------------------------- ### Clone Wyoming Satellite Repository Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Clones the `wyoming-satellite` repository from GitHub to the satellite device, providing the source code and scripts for the voice satellite application. ```sh git clone https://github.com/rhasspy/wyoming-satellite.git ``` -------------------------------- ### Play Back Recorded Audio Sample Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Plays back a previously recorded WAV audio sample (`test.wav`) through a specified speaker device (`-D`). This command helps in testing speaker functionality, verifying the correct device selection, and ensuring audio output is working. ```sh aplay -D plughw:CARD=seeed2micvoicec,DEV=0 test.wav ``` -------------------------------- ### Monitor ReSpeaker LED Service Logs with journalctl Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command uses `journalctl` to display real-time logs for the `2mic_leds.service`. The `-f` flag 'follows' the log output, making it useful for debugging and observing the service's behavior as it runs. ```sh journalctl -u 2mic_leds.service -f ``` -------------------------------- ### View openWakeWord Service Logs in Real-time Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command displays real-time logs for the `wyoming-openwakeword.service`. It is useful for debugging and monitoring the wake word service's operation. ```sh journalctl -u wyoming-openwakeword.service -f ``` -------------------------------- ### Create Wyoming Satellite Systemd Service File Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command opens an editor to create or modify the systemd service file for the Wyoming Satellite. It's the first step in defining how the service will run. ```sh sudo systemctl edit --force --full wyoming-satellite.service ``` -------------------------------- ### List Available Speakers Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Lists all available audio output devices (speakers) on the system using `aplay -L`. This command is essential for identifying the correct speaker device name required for audio playback through the satellite. ```sh aplay -L ``` -------------------------------- ### View Wyoming Satellite Service Logs in Real-time Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md Use this command to display real-time logs for the `wyoming-satellite.service`. It is essential for debugging and monitoring the service's operation. ```sh journalctl -u wyoming-satellite.service -f ``` -------------------------------- ### Update Wyoming Satellite Systemd Service Configuration Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command opens the systemd editor to modify the existing `wyoming-satellite.service` file. It is used to integrate the newly created LED service by adding dependencies and event URI arguments to the main satellite service. ```sh sudo systemctl edit --force --full wyoming-satellite.service ``` -------------------------------- ### Check Status of Wyoming Satellite and LED Services Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command displays the current operational status of both the `wyoming-satellite.service` and `2mic_leds.service`. It allows you to verify that both services are active and running correctly after configuration. ```sh sudo systemctl status wyoming-satellite.service 2mic_leds.service ``` -------------------------------- ### Reload and Restart Wyoming Satellite and LED Services Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md These commands are essential after modifying systemd service files. `sudo systemctl daemon-reload` reloads the systemd manager configuration, and `sudo systemctl restart wyoming-satellite.service` restarts the main satellite service, which will also activate the dependent LED service. ```sh sudo systemctl daemon-reload sudo systemctl restart wyoming-satellite.service ``` -------------------------------- ### Reload Systemd Daemon and Restart Wyoming Satellite Service Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md These commands reload the systemd manager configuration to apply any changes made to service files, then restart the `wyoming-satellite.service`. This is crucial after modifying service unit files. ```sh sudo systemctl daemon-reload sudo systemctl restart wyoming-satellite.service ``` -------------------------------- ### Check Wyoming Satellite and openWakeWord Service Status Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command displays the current status of both `wyoming-satellite.service` and `wyoming-openwakeword.service`. It helps verify if both services are active and running correctly. ```sh sudo systemctl status wyoming-satellite.service wyoming-openwakeword.service ``` -------------------------------- ### Reload Systemd Daemon After Service File Changes Source: https://github.com/rhasspy/wyoming-satellite/blob/master/docs/tutorial_2mic.md This command serves as a reminder to reload the systemd manager configuration (`daemon-reload`) every time changes are made to service unit files to ensure they are applied. ```sh sudo systemctl daemon-reload ``` -------------------------------- ### Run Wyoming Satellite with Audio Enhancement Parameters Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md This command line execution demonstrates how to launch the Wyoming Satellite with specific audio processing options. It configures automatic gain control ("--mic-auto-gain") to normalize microphone input volume and applies noise suppression ("--mic-noise-suppression") to reduce background noise, enhancing the clarity of audio capture. ```sh script/run \ ... \ --mic-auto-gain 5 \ --mic-noise-suppression 2 ``` -------------------------------- ### Wyoming Satellite Event Command-Line Arguments Reference Source: https://github.com/rhasspy/wyoming-satellite/blob/master/README.md This section details the various command-line arguments available for configuring the Wyoming Satellite to execute external commands in response to specific events. Each argument specifies a command to be run when its corresponding event occurs, allowing for custom integrations and dynamic behavior based on satellite state and server interactions. ```APIDOC --startup-command: run when satellite starts (no stdin) --detect-command: wake word detection has started, but not detected yet (no stdin) --streaming-start-command: audio has started streaming to server (no stdin) --streaming-stop-command: audio has stopped streaming to server (no stdin) --detection-command: wake word is detected (wake word name on stdin) --transcript-command: speech-to-text transcript is returned (text on stdin) --stt-start-command: user started speaking (no stdin) --stt-stop-command: user stopped speaking (no stdin) --synthesize-command: text-to-speech text is returned (text on stdin) --tts-start-command: text-to-speech response started streaming from server (no stdin) --tts-stop-command: text-to-speech response stopped streaming from server. Can still being played by snd service (no stdin) --tts-played-command: text-to-speech audio finished playing (no stdin) --error-command: an error was sent from the server (text on stdin) --connected-command: satellite connected to server --disconnected-command: satellite disconnected from server --timer-started-command: new timer has started (json on stdin) --timer-updated-command: timer has been paused/unpaused or has time added/removed (json on stdin) --timer-cancelled-command: timer has been cancelled (timer id on stdin) --timer-finished-command: timer has finished (timer id on stdin) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.