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.
16 lines
841 B
Plaintext
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
|