Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

Race Voice

Race-day voice callouts for RotorHazard, powered by Piper TTS and Sendspin.

Linting RHFest License

Download · Usage Guide · Sendspin · Contributing

Race Voice generates RotorHazard announcements on the timing server, caches reusable WAV files, and sends playback to a Sendspin service for network clients.

Race Voice showcase

Race Voice

Server-side voice callouts for the RotorHazard timing platform, powered by Piper TTS. Audio is generated on the RotorHazard server and sent to sendspin-service, which streams to connected clients using the Sendspin protocol.

What you can do

  • 🎙️ Local TTS: Generates voice callouts with Piper TTS on the RotorHazard server.
  • 📡 Sendspin service playback: Sends generated WAV files to a service that streams PCM audio to connected Sendspin clients over WebSocket, including WindowsSpin.
  • 🌐 Browser player: A built-in RotorHazard plugin player at /player that connects to the Sendspin service.
  • 🐳 Container: A Docker image is available for standalone service deployments, including the browser player at /.
  • 🔊 Race sounds: Plays staging tones and the race-start buzzer through the same Sendspin output path.
  • 🎛️ Configurable voice: Adjustable speech speed, noise scale, and phoneme width from the RotorHazard settings panel.
  • Smart caching: Reusable pilot-name and lap-number segments are cached separately; use Rebuild pre-cache after first setup or voice model/settings changes to prepare them ahead of racing.

Requirements

  • RotorHazard with RHAPI support for Evt.RACE_STAGE_TONE and Evt.RACE_CLOCK_CALLOUT.
  • Python 3.12 or newer.
  • sendspin-service installed on the RotorHazard host or another reachable machine.
  • Network access from playback clients to sendspin-service.
  • A browser on the playback device. RotorHazard serves the Sendspin player at <RotorHazard UI base URL>/player.

Quick Start

  1. Download race_voice.zip from the latest GitHub release.
  2. In RotorHazard, open the plugin manager and upload the ZIP file.
  3. Restart RotorHazard if requested.
  4. Download the matching sendspin-service_*.deb from the same GitHub release and install it on the RotorHazard host.
  5. Open the RotorHazard settings page and enable Race Voice.
  6. Confirm Sendspin service URL points to the service, normally http://127.0.0.1:8766.
  7. Open <RotorHazard UI base URL>/player from the playback device.
  8. Use Rebuild pre-cache to prepare race-clock, schedule, pilot-name, and lap-number WAV files.
  9. Use Generate test phrase or Play audio check to verify playback.

Set RotorHazard browser Voice Volume and Tone Volume to 0 on clients that should only use Race Voice audio.

The first generated phrase for a voice model downloads the Piper model into the RotorHazard data cache. That can take a moment depending on the server and network connection.

Documentation

  • Usage Guide: setup, settings, browser player, cache layout, operational notes, and troubleshooting.
  • Changelog: release history.
  • Contributing: development setup and contribution guidelines.

Sponsors

If Race Voice helps your club, event, or race-day workflow, you can help fund continued development and maintenance.

Contributing

Contributions are welcome! See CONTRIBUTING.md for setup instructions and development guidelines.

Contributors

Credits

Race Voice uses Sendspin for synchronized network audio playback. Sendspin and the browser SDK are Open Home Foundation projects; see sendspin-audio.com and openhomefoundation.org.

The RotorHazard Play audio check button uses a bundled demo WAV so playback can be tested without generating TTS first. That check clip is:

License

Distributed under the MIT License. See LICENSE for more information.

About

▶️ Local server-side voice callouts for RotorHazard

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /