mcspeak/.env.example
Ryan Malloy ec4e1b6093 Fix stream-restore mute + entry tone overlap, make Orpheus opt-in
Stream-restore mute: pw-play streams were being silently restored to
0% volume by PulseAudio's stream-restore module matching the music
role key, producing audible-but-clean-exit playback. audio.py now
bumps each new pw-play sink-input to 100% as a background task; the
new value re-stamps stream-restore on stream end.

Entry tone overlap: when speak() arrived during prior playback, its
entry tone played immediately from the handler and overlapped the
ongoing audio. queue.is_idle() now gates this — tone plays now when
idle (preserves latency-hiding intent), else defers to the consumer
via _WorkItem.entry_tone, which plays it right before the item's
audio. Chunked path defers only on chunk 0.

Docker: llama-server gated behind a `with-orpheus` compose profile;
mcspeak.depends_on uses required:false. `make up` defaults to
kokoro-only with no GPU dependency; `make up-with-orpheus` runs the
full stack. Rename dootie-internal network → mcspeak-internal
(auto-created per-stack via internal:true). Add 127.0.0.1:8371 port
mapping for local MCP clients.

README: fix claude mcp add command (was stdio, must be --transport
http); document kokoro-only default and the with-orpheus path; add
Kokoro model download step. .env.example added so `cp .env.example
.env` matches the documented setup.
2026-05-28 14:14:38 -06:00

16 lines
841 B
Plaintext

# Compose project namespace -- prevents collisions with other stacks
COMPOSE_PROJECT=mcspeak
# Path to Orpheus GGUF model file (required by llama-server service)
# Tip: if you've already pulled it via Ollama, find the blob with:
# ollama show --modelfile orpheus | grep FROM
ORPHEUS_GGUF_PATH=/path/to/orpheus.gguf
# Optional overrides -- see README "Configuration" for the full list
# TTS_ENTRY_TONE=chirp # chirp | apollo | none | /path/to.wav
# TTS_EXIT_TONE=roger # roger | quindar-out | none | /path/to.wav
# TTS_CANCEL_TONE=scratch # scratch | reverse-roger | none | /path/to.wav
# TTS_DUCK_MEDIA=true # fade host audio while speaking
# TTS_VOICE_IDENTITY=true # auto-assign distinct voices per project
# TTS_SHUTDOWN_TIMEOUT=30 # max seconds to wait for current speech on stop