Files

2.8 KiB

FRIDAY Voice Console

Push-to-talk MVP for talking to FRIDAY from a browser/phone, with a speaker-identification foundation for Jeremy's voice.

Status

MVP scaffold complete:

  • Browser UI records audio and sends it to the backend.
  • Backend transcribes through Speaches on the GPU machine.
  • Backend routes text into Hermes via hermes chat -q.
  • Backend speaks FRIDAY's response through Speaches/Kokoro.
  • JSON-backed speaker profile store supports voice embeddings and confidence thresholds.
  • Unknown speakers are treated as read-only.

Runtime defaults

  • Speaches: http://192.168.86.150:8000
  • Hermes source: friday-voice
  • Confirmed speaker threshold: 0.85
  • Probable speaker threshold: 0.70
  • Data directory in container: /data

Local verification

cd /mnt/c/Users/Jeremy/projects/friday-voice
python3 -m unittest discover -s tests -v
python3 -m compileall friday_voice
node --check web/app.js

Deployment layout

Source project:

/mnt/c/Users/Jeremy/projects/friday-voice/

Compose definition:

/mnt/c/Users/Jeremy/projects/docker/compose/hf-pdocker-01/friday-voice/docker-compose.yml

Traefik dynamic config draft:

/mnt/c/Users/Jeremy/projects/docker/stacks/traefik/dynamic/friday-voice.yml

Target host layout:

/opt/friday-voice/                         # application source/build context
/mnt/docker-data/compose/hf-pdocker-01/friday-voice/
/mnt/docker-data/configs/friday-voice/     # speaker profiles + generated TTS cache
/mnt/docker-data/traefik/dynamic/friday-voice.yml

Deploy protocol, after review:

# From workstation
rsync -av --delete /mnt/c/Users/Jeremy/projects/friday-voice/ glyptic@192.168.86.192:/opt/friday-voice/
rsync -av /mnt/c/Users/Jeremy/projects/docker/compose/hf-pdocker-01/friday-voice/ glyptic@192.168.86.192:/mnt/docker-data/compose/hf-pdocker-01/friday-voice/
rsync -av /mnt/c/Users/Jeremy/projects/docker/stacks/traefik/dynamic/friday-voice.yml glyptic@192.168.86.192:/mnt/docker-data/traefik/dynamic/friday-voice.yml

# On hf-pdocker-01
cd /mnt/docker-data/compose/hf-pdocker-01/friday-voice
docker compose up -d --build
curl -fsS http://127.0.0.1:8320/health

Speaker enrollment MVP

The current MVP exposes /api/enroll and /api/identify for embedding vectors. The next build slice should add actual audio-to-embedding extraction using SpeechBrain ECAPA or resemblyzer, then wire that into the browser enrollment flow.

Recommended thresholds:

  • >= 0.85: confirmed Jeremy
  • 0.70-0.84: probable Jeremy, confirmation required for sensitive actions
  • < 0.70: unknown speaker, read-only

Security notes

  • Voice identity is advisory, not a sole authorization factor.
  • Unknown speakers are read-only.
  • Environment writes still require explicit authorization and wiki documentation.
  • Secrets are never returned by voice.