Skip to content

Voice

  • Your phone’s Settings → Gray → allow Microphone and Speech Recognition (the two permissions the app requests).
  • On-device transcription is a system service — after an OS update, a reboot has fixed it more than once.

On-device recognition improves with the device language set correctly (Me → Language). Technical literals (hostnames, paths) are often easier typed — the composer is always there.

  1. No OPENAI_API_KEY on the box — premium voice is off entirely without it. See Models & keys.

  2. This month’s allowance is spent — premium voice carries a monthly allowance. Gray says so and falls back to on-device voice; the meter resets on the 1st (UTC).

  3. Key invalid/over its own quota — check the box log for token-mint and meter denials:

    Terminal window
    journalctl -u gray-server | grep -E 'voice_usage: ledger|token mint failed'

The meter is tamper-resistant by design: it pre-books about 5 minutes per session start and reconciles, and it freezes if the box clock jumps backwards — a box with a broken clock denies metered voice rather than over-serving (fail-closed). Fix the clock (timedatectl) and it recovers.

Operator reset (last resort): stop the service and delete the meter ledger AND its init marker together —

Terminal window
systemctl stop gray-server
rm /var/lib/voice-brain/voice_usage.json /var/lib/voice-brain/.voice_usage.init
systemctl start gray-server

Deleting the ledger alone looks like tampering and the meter will deny on metered plans.

Me → Voice speed — continuous slider, takes effect on the next reply.