2.2 KiB
2.2 KiB
date, type, status, tags, related
| date | type | status | tags | related | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-08-23 | project | active |
|
|
Live Captions — ESP32 / Mac mini
Purpose
A dedicated Tactility ESP32-S3 app streams device microphone PCM to the Mac mini for local Apple Speech captioning. It shows captions on the device and records text locally on its SD card; raw device audio is not retained by the app.
Active architecture
Tactility `.113` (kidsos_591c)
-> authenticated WebSocket PCM, 16 kHz / mono / s16le
-> Mac mini `.102` caption service on :8645
-> MacMiniMCP Apple Speech live transcription
-> draft + silence-finalized review events
-> ESP32 native caption display
The dedicated caption route does not invoke the old generic gateway screen-MCP drawing path, preventing caption UI conflicts.
Current state
- Live Captions app deployed to
.113; auto-connect and automatic reconnect are enabled. - UI: device toolbar/close control, latest 50 caption words, and a bottom Connecting / Connected / Failed—Reconnecting status line.
- Mac service accepts multiple sessions and bounds retained audio at 30 seconds / 960 KB per device.
- The old fixed 64-second stream cap was removed.
- Silence VAD turns speech pauses into
reviewevents without closing the microphone stream. - Finalized reviews are logged on the Mac mini to
~/.hermes/logs/esp32-captions/YYYY-MM-DD.jsonlwith UTC timestamp and friendly device name. - The board is currently connected and the service has confirmed incoming 1,024-byte PCM frames.
Verified test evidence
- Four caption-service tests are passing, including rolling-buffer and multi-device coverage.
- Synthesized long audio streams produced live draft/review events and final transcripts.
- A synthesized speech message plus valid silence produced a
reviewbefore an explicit stop command.
Next
- Observe a natural on-device speech pause and confirm the review visibly replaces the draft.
- Tune capture gain/filtering after that UI verification.
- Install the caption service LaunchAgent from an approved external shell for durability.
- Commit the app/service once physical acceptance is confirmed.