main
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 Jeremy0.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.
Description
FRIDAY Voice Console: browser voice interface and speaker identification gateway for Hermes.
Languages
Python
73.9%
JavaScript
12.9%
CSS
5.9%
HTML
4.6%
Dockerfile
2.7%