NarrateClaude
A hands-free macOS voice loop for Claude Code that transcribes speech on-device, types it into the terminal window running Claude, and speaks the replies back in a chosen voice.
NarrateClaude lets someone talk to Claude Code instead of typing. A continuous listener uses Apple's on-device SFSpeechRecognizer and ends a sentence once the transcribed text stops changing; a supervisor process respawns the listener if it wedges, and an injector types each finished sentence into the bound Terminal window through AppleScript, cutting off any speech that is currently playing.
A relevance filter, including a local LLM judge that fails open, decides whether speech was meant for the assistant, with mute and pet-talk handling. A Claude Code Stop hook reads the assistant's reply aloud through a pluggable text-to-speech script, and a control CLI offers setup, start, stop, status, toggle and log-tailing commands. A voiceprint filter exists in the code but is not active in the current listener.
The project is macOS-only, is written in Shell and Swift, and documents its echo-cancellation work in an engineering log recording several attempts and their measured results. It is MIT licensed.