Skip to main content

Piper (Wyoming) smart home integration, free and open source

Piper (Wyoming) integration for Gladys Assistant

Gladys speaks with a local voice: Piper or any Wyoming text-to-speech server.

Gladys speaks with a voice that runs on your own network: Piper, or any text-to-speech server that speaks the Wyoming protocol (the one of Rhasspy and Home Assistant). No account, no cloud: the texts never leave your home.

What you get​

  • A voice for Gladys: the "Play a notification" scene action speaks through it on your speakers (Sonos, Google Cast…).
  • An automatic choice of the voice from the language of Gladys (French, English, German, Spanish), or the voices you list.
  • The state of the server in the Supervision screen, and two scene triggers when it stops or starts answering again.

Requirements​

  • Gladys 5.3 or later.

  • A Wyoming text-to-speech server reachable from Gladys, for example Piper in Docker:

    docker run -d --name piper -p 10200:10200 -v piper-data:/data \
    rhasspy/wyoming-piper --voice fr_FR-siwis-medium

    The Piper add-on of Home Assistant works too (port 10200). Piper downloads a voice the first time it is asked for it.

Configuration​

  1. Fill in Server address (IP address or name of the machine running the server) and Port (10200 for Piper). An address copied from Home Assistant, tcp://192.168.1.20:10200, is accepted as is.
  2. Preferred voices (optional): voice names separated by commas, for example fr_FR-siwis-medium, en_US-lessac-medium. For each language, Gladys uses the first listed voice of that language; for a language with no listed voice, it picks one the server offers (fr_FR-siwis-medium, en_US-lessac-medium, de_DE-thorsten-medium, es_ES-davefx-medium for Piper). The first listed voice also speaks the languages no voice speaks. A multi-speaker voice takes its speaker after a colon: fr_FR-upmc-medium:pierre. The voices of Piper can be heard on its sample page.
  3. Audio format: MP3 (default) plays on every speaker, Google Cast included. WAV skips the encoding but weighs about five times more.
  4. Save, then open Integrations → Artificial Intelligence, card Voice, and choose Piper (Wyoming).

Actions​

  • Test the voice: synthesizes a sentence (or your Text (optional)) in the chosen Language and reports the voice used, the duration of the clip, its size and the time it took. Its first use for a voice Piper has not downloaded yet waits for the download (up to two minutes): run it once per language before relying on announcements.
  • Show the voices: without a language, the voice each language of Gladys will use; with a Language, every voice of the server for it.

Scenes​

Two triggers, in the Integrations category of the scene editor:

  • Voice server unreachable: the Wyoming server stopped answering (checked every minute). Announcements fail until it is back: a good moment to send yourself a message.
  • Voice server back: it answers again.

Limits​

  • Gladys cuts texts at 2,000 characters and waits 30 seconds for the clip. A long text takes longer (measured on a mini PC: 2,000 characters, two minutes of speech, in about 40 seconds): the integration then sends the beginning it has, about 50 seconds of speech there, less on a Raspberry Pi.
  • Gladys accepts clips of 5 MB at most: a long WAV clip is resampled down (16 kHz, then 11 kHz, then 8 kHz) to fit. MP3 never comes near.
  • The voice assistant of Gladys stays text-only with a local voice (a browser limit described in the Gladys documentation): this voice serves the scene announcements.
  • The speed of the voice is not adjustable: the Wyoming protocol has no such setting.
  • Tested against a real Piper server in Docker, not yet with every speaker brand: feedback welcome.

Troubleshooting​

  • The server does not answer: check the address and the port, and that the port is open to the network (-p 10200:10200 in Docker).
  • The server refused the text (unknown voice?): the voice name is wrong, or Piper could not download it (no internet on the server). Show the voices lists the exact names.
  • This Wyoming server offers no text-to-speech: the port is the one of a speech-to-text or wake-word service (Whisper: 10300, openWakeWord: 10400).
  • Set LOG_LEVEL=debug to see every synthesis in the logs (length of the text, voice, duration, size; never the text itself).

Support​

Questions and bugs: github.com/guim31/gladys-wyoming/issues.

Configuration settings​

These are the settings Piper (Wyoming) asks for in its configuration screen in Gladys.

SettingTypeRequiredDescription
Your Wyoming serversectionNoPiper listens on port 10200 (the rhasspy/wyoming-piper Docker image, or the Piper add-on of Home Assistant). Once saved, choose this voice in Integrations → Artificial Intelligence → Voice.
Server addressstringYesIP address or name of the machine running the Wyoming server. A port written here (192.168.1.20:10200) wins over the port field.
PortnumberNo10200 for Piper; each Wyoming service has its own port.
Preferred voicesstringNoOptional, separated by commas: fr_FR-siwis-medium, en_US-lessac-medium. Each language speaks with the first listed voice of that language, else a voice of the server; the first one is the default.
Audio formatselectNoMP3 plays on every speaker (Google Cast included). WAV skips the encoding but weighs about five times more.

How to install Piper (Wyoming) in Gladys​

  1. In Gladys, open Integrations: Piper (Wyoming) appears in the catalog, next to the native integrations, with a community badge.
  2. Click Install. Gladys pulls the Docker image (ghcr.io/guim31/gladys-wyoming:1.0.0), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration).
  3. Open the Configuration screen of the integration, fill in the settings, and save.
  4. You can also install it directly from its repository URL: https://github.com/guim31/gladys-wyoming.

Piper (Wyoming) requires Gladys >=5.3.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.

Not running Gladys yet? It is free and open source: follow the installation guide to get started.

About external integrations​

Piper (Wyoming) is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.

Subscribe to the Gladys Assistant newsletter

A few emails per month about new releases and project news. Sent by Pierre-Gilles Leymarie, founder of the project. Unsubscribe anytime 🙂