Skip to content

feat: Linux voice server using Piper TTS (free, local)#919

Open
rlmattax wants to merge 1 commit intodanielmiessler:mainfrom
rlmattax:feat/linux-voice-server
Open

feat: Linux voice server using Piper TTS (free, local)#919
rlmattax wants to merge 1 commit intodanielmiessler:mainfrom
rlmattax:feat/linux-voice-server

Conversation

@rlmattax
Copy link
Copy Markdown

@rlmattax rlmattax commented Mar 6, 2026

Summary

  • Adds a Linux-native voice server (server-linux.ts) as a drop-in replacement for the macOS/ElevenLabs server
  • Includes one-command installer (install-linux.sh) that sets up Piper TTS + systemd user service
  • Zero ongoing cost — Piper runs entirely locally with neural-quality voices

What's included

File Purpose
server-linux.ts Bun HTTP server using Piper TTS, aplay, notify-send
install-linux.sh Installs Piper, downloads voice model, creates systemd service

API compatibility

Same endpoints, same JSON body format — no changes needed to any existing skill or hook:

  • POST /notify — main notification endpoint
  • POST /notify/personality — compatibility shim
  • POST /pai — PAI-specific notifications
  • GET /health — health check

How it works

  • TTS: Piper (ONNX neural TTS, ~60MB model, runs on CPU)
  • Audio: Auto-detects aplay / paplay / ffplay
  • Notifications: notify-send (libnotify)
  • Auto-start: systemd user service (pai-voice-server.service)
  • Pronunciation: Same pronunciations.json system as macOS server

No existing files modified

This is purely additive — server.ts, install.sh, and all macOS files are untouched.

Test plan

  • Piper TTS generates WAV audio from text
  • aplay plays generated audio
  • All 4 HTTP endpoints return correct responses
  • Pronunciation preprocessing applies correctly
  • Server starts and /health returns 200
  • notify-send displays desktop notifications

Drop-in Linux replacement for the macOS ElevenLabs voice server.
Uses Piper (local neural TTS) — zero API costs, same endpoints.

- server-linux.ts: same /notify, /pai, /health API contract
- install-linux.sh: one-command setup with systemd user service
- Auto-detects audio player (aplay/paplay/ffplay)
- Uses notify-send for desktop notifications
- Preserves pronunciation system from original server
@rlmattax rlmattax force-pushed the feat/linux-voice-server branch from 3bf9301 to 77b803e Compare March 6, 2026 19:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants