When a voice note arrives (Slack voice message), the gateway saves the audio to /opt/data/cache/audio/audio_*.m4a and appends a note like:
[voice message could not be transcribed automatically; the audio is available at: /opt/data/cache/audio/audio_22932ad58a12.m4a]
The audio file path IS in the user's message. Process it immediately.
/opt/data/home/.local/share/uv/tools/openai-whisper/bin/whisper \
/opt/data/cache/audio/audio_<id>.m4a \
--model small \
--output_dir /tmp \
--output_format txt
small (~244M params). Good balance for voice notes. tiny is faster but less accurate for accented speech; medium is better but slower on CPU (only use if small produces garbled output).--language en to skip detection for known-English notes.The transcript file is at /tmp/audio_<id>.txt. Read it — this IS the user's message.
The transcript is the user speaking directly. Process it like any other user message:
For voice notes worth keeping (logs, ideas, decisions), save the transcript to the wiki:
/opt/data/wiki/consume/raw/voice-notes/<YYYY-MM-DD>-<brief-slug>.txtrm /opt/data/cache/audio/audio_<id>.m4a
Always delete the audio after processing — no raw audio files lying around.
Also clean up the transcript file from /tmp unless it was saved to wiki.
| Model | Params | Speed (10min audio) | Accuracy | When to use |
|---|---|---|---|---|
| tiny | 39M | ~8s | Lower | Quick tests only |
| small | 244M | ~30s | Good | Default — daily voice notes |
| medium | 769M | ~90s | Better | Important transcription, accented speech |
| large | 1550M | ~3min | Best | Publishable transcripts (podcast, talk) |
Start with small. If the transcript has obvious errors, re-run with --model medium.
uv tool install openai-whisper, not in PATH.--model medium for quality and be patient.