voicelisted
Install: claude install-skill ManceRayder42/jarvis-os
# Voice — speech in, speech out
Two directions, both via ElevenLabs, both with a documented fallback so a
missing API key degrades rather than breaks:
- **Speech → text**: `scripts/transcribe.sh` — ElevenLabs Scribe first, local
`mlx-whisper` (via `uv`, no manual model download) if no key is set.
**Apple Silicon only** for the local fallback; without a key on any other
platform this fails with a clear message instead of guessing.
- **Text → speech**: `scripts/tts-file.sh` — ElevenLabs multilingual TTS.
There is no local fallback for this direction (no bundled TTS engine ships
with this plugin) — without a key, it fails loudly and tells you where to
get one. `scripts/say-voice.sh` wraps this and sends the result straight to
Telegram as a voice note (`sendVoice`), for use with the
[Telegram bridge](../../bridge/README.md).
## Setup
Add `ELEVENLABS_API_KEY` via the `/jarvis-setup` page, or set it directly in
`<hub>/.env`:
```
ELEVENLABS_API_KEY=sk_...
```
Get a key at <https://elevenlabs.io/app/settings/api-keys> (free tier
available). **Without a key:** `transcribe.sh` still works on Apple Silicon
Macs (falls back to local `mlx-whisper`, needs `uv` and `ffmpeg` on `PATH`);
`tts-file.sh`/`say-voice.sh` have nothing to fall back to and will say so
plainly rather than silently doing nothing.
## Usage
```bash
"${CLAUDE_PLUGIN_ROOT}/skills/voice/scripts/transcribe.sh" recording.ogg # auto-detect language
"${CLAUDE_PLUGIN_ROOT}/skills/voice/scripts/tr