Add text-to-speech for announcing mode changes.

This commit is contained in:
Anna Rose Wiggins 2025-07-29 13:01:11 -04:00
parent 3e4367f5e7
commit 8262d78b54
8 changed files with 209 additions and 32 deletions

View file

@ -29,6 +29,7 @@ Joyful is ideal for Linux gamers who enjoy space and flight sims and miss the fe
* Hat support
* HIDRAW support for more button options.
* Sensitivity Curves.
* Packaged builds for Arch and possibly other distributions.
## Configuration
@ -44,19 +45,29 @@ After building (see below) and writing your configuration (see above), just run
Pressing `<enter>` in the running terminal window will reload the `rules` section of your config files, so you can make changes to your rules without restarting the application. Applying any changes to `devices` or `modes` requires exiting and re-launching the program.
## Build & Install
To build joyful, first use your distribution's package manager to install `go` and `alsa-lib` (this may be `libasound2-dev` or `libasound2-devel` depending on your distribution), then run:
```
go build -o build/ ./...
```
Next, copy the binaries in the `build/` directory to somewhere in your `$PATH`. (details depend on your setup, but typically somewhere like `/usr/local/bin` or `~/bin`)
### Machine Learning Disclosure
Joyful's text-to-speech support is dependent on [Piper](https://github.com/rhasspy/piper), which uses an offline Machine Learning (ML) model for speech synthesis. The project authors are extremely skeptical of ML/AI technologies in general, but consider speech synthesis, especially offline/local speech synthesis, to be one of the most defensible use cases for it. Since it is very difficult to find text-to-speech systems that don't use ML under the hood (especially that have extant golang wrappers or bindings), this is considered a necessary tradeoff.
However, if you don't want any ML running on your system, you can optionally choose to skip TTS support at compile-time by building with this command:
```
go build -o build -tags notts ./...
```
## Technical details
Joyful is written in golang, and uses evdev/uinput to manage devices. See `cmd/joyful/main.go` for the program's entry point.
### Build & Install
To build joyful, install `go` via your package manager, then run:
```
CGO_ENABLED=0 go build -o build/ ./...
```
Copy the binaries in the `build/` directory to somewhere in your `$PATH`. (details depend on your setup, but typically somewhere like `/usr/local/bin` or `~/bin`)
Joyful is written in golang, and uses `evdev`/`uinput` to manage devices, `piper` and `oto` for TTS. See [cmd/joyful/main.go](cmd/joyful/main.go) for the program's entry point.
### Contributing