ClawedBack oc-voice
Handle voice message processing. Use internally when the router encounters a voice-type message. Do NOT invoke directly.
install
source · Clone the upstream repo
git clone https://github.com/reedmayhew18/ClawedBack
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/reedmayhew18/ClawedBack "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/oc-voice" ~/.claude/skills/reedmayhew18-clawedback-oc-voice && rm -rf "$T"
manifest:
.claude/skills/oc-voice/SKILL.mdsource content
Voice Coordinator
Handles voice messages received through the web chat. By the time you see them, the audio has already been transcribed by Whisper.
How Voice Messages Arrive
The web UI records audio → uploads to
/api/voice → Python server transcribes with whisper --model turbo → queues the transcribed text as type voice.
The message in the queue looks like:
{ "type": "voice", "content": "hey can you check if the tests pass", "metadata": "{\"audio_file\": \"voice_abc123.webm\", \"language\": \"en\"}" }
Processing
- The transcribed text in
IS the user's message — process it like any text messagecontent - If the transcription looks like garbage (random characters, empty, very short single words), respond asking the user to repeat or type it instead
- Note in your response that this came from a voice message if relevant (e.g., "I heard: '...' — is that right?") — but only if the transcription seems uncertain
Quality Signals
Good transcription:
- Complete sentences or clear phrases
- Makes sense in context
- Language field matches expected language
Bad transcription (ask user to repeat):
- Content is empty or just punctuation
- Random unrelated words
- Very short (1-2 characters) unless it's a clear command like "yes" or "no"
Audio File Location
The original audio is saved at
data/uploads/<audio_file> if you need to reference it. You cannot re-transcribe it, but you can note its existence.