
oma-voice
Generate speech or transcribe audio locally with Voicebox. Use for narration, voice assets, dictation, and meeting transcription.
- Installs
- 45
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/gracefullight/stock-checker --skill oma-voice- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads oma-voice automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Voice Skill - Local TTS and STT via Voicebox
Scheduling
Goal
Drive the Voicebox local app through its MCP server so any MCP-aware agent can speak (TTS) or listen (STT) without invoking cloud vendors. The skill standardizes intent routing, voice profile resolution, output layout, and guardrails while voicebox itself owns the engines, voice cloning UI, captures archive, and stories editor.
Intent signature
- User asks to generate speech, narrate text, produce a voiceover, create an mp3 or wav from text.
- User wants an audio file transcribed into text, meeting notes, or a transcript.
- User asks for a voice notification when a long task completes or a workflow step is blocked.
- Another skill needs local audio generation infrastructure.
When to use
- Generating short notification audio for agent task completion or blockers.
- Producing voiceover, narration, or audio assets (mp3 or wav) for apps and content.
- Transcribing local audio files (mp3, wav, m4a, webm, flac) to Markdown.
- Comparing voice profiles by re-running the same text against different profile ids.
When NOT to use
- Cloud TTS or high-fidelity multilingual cloud voices -> out of scope; future multi-vendor extension.
- Real-time microphone dictation loop in the terminal -> use Voicebox app's built-in hotkey dictation.
- Voice cloning sample upload and profile creation -> done in the Voicebox desktop app UI.
- Video synthesis, music, sound design -> out of scope.
- Stories Editor multi-voice timeline composition -> use the Voicebox app UI.
Expected inputs
- TTS: text (<= 5000 chars per call), optional profile id, optional engine, optional language, optional output path.
- STT: audio file path (absolute or relative to
$CWD), optional language hint. - Notification: short message (<= 240 chars), profile id resolved from config.
Expected outputs
- TTS: audio file (
wav— Voicebox's native TTS output format;mp3optional via a local ffmpeg transcode) at.agents/results/voice/{timestamp}-{shortid}/output.{wav|mp3}plusmanifest.json. - STT:
transcript.mdat.agents/results/voice/transcripts/{timestamp}-{shortid}/plusmanifest.json. - Notification: ephemeral playback through Voicebox; no disk write by default.
Dependencies
- Voicebox desktop app installed and running locally.
- Voicebox MCP registered (
claude mcp add --transport http voicebox http://127.0.0.1:17493/mcp). - TTS only: at least one voice profile created in the Voicebox app UI.
- TTS only: optionally pre-downloaded engine models for the selected profile.
Control-flow features
- Branches by mode (notify, asset, transcribe), language, and profile availability.
- Calls voicebox via MCP tools, with REST
GET /healthas the handshake probe. - Reads input audio files and writes generated audio plus manifests.
- Caches discovered MCP tool names after the first successful
tools/list.
Structural Flow
Entry
- Detect the requested mode: notification, asset TTS, or transcription.
- Verify Voicebox is reachable via MCP handshake or
GET /health. - On the first run only, call MCP
tools/listand cache the resolved tool names. - For notification or asset TTS, resolve the target voice profile id. For transcription, validate the audio input and continue without a profile.
Scenes
- PREPARE: Validate text length, audio duration, language, output path, and profile id.
- ACQUIRE: If a required signal is missing, run the clarification protocol once.
- ACT: Invoke the appropriate MCP tool (TTS or STT) with the resolved parameters.
- VERIFY: Confirm the response carries audio output or transcript content. Validate manifest fields.
- FINALIZE: Write
manifest.jsonalongside the output. Report the path or transcript to the user.
Transitions
- If voicebox is unreachable, surface the install or launch hint and exit. Do not attempt auto-relaunch.
- If a TTS request has no usable profile, point the user at the Voicebox app UI to create a profile, then exit. A transcription request never needs a profile.
- If a TTS request exceeds 5000 chars, ask whether to truncate or split. Do not auto-chunk in v1.
- If an STT input exceeds 30 minutes, ask whether to proceed. Do not auto-split.
- If the selected engine model is not loaded, ask the user before triggering a download.
Failure and recovery
| Failure | Recovery |
|---|---|
| Voicebox app not running | Print install/launch hint, exit code 5 |
| No voice profile for TTS | Print "create a profile in Voicebox" hint, exit code 3 |
| Engine model missing | Ask before triggering download |
Output path outside $PWD | Use an explicitly requested path; ask only if the destination is ambiguous or overwrites unrelated data |
| TTS over 5000 chars | Ask the user to split or truncate |
| STT over 30 minutes | Confirm only if the requested duration or resource cost is unresolved |
| MCP tool name drift | Re-run tools/list and update the cache |
| SIGINT | Abort the MCP call, write no partial output |
Exit
- Success: audio file or transcript exists with a complete manifest, and the path is reported.
- Partial success: output exists but a guardrail warning is surfaced (length, disk, model fallback).
- Failure: no output, the blocker (auth, profile, engine, network) is explicit.
Logical Operations
Actions
| Action | SSL primitive | Evidence |
|---|---|---|
| Validate mode and inputs | VALIDATE | Clarification protocol in execution-protocol.md |
| Resolve TTS voice profile | SELECT | voicebox_list_profiles + config defaults |
| Health check | READ | MCP handshake or GET /health |
| Generate speech | CALL_TOOL | MCP voicebox_speak |
| Transcribe audio | CALL_TOOL | MCP voicebox_transcribe |
| Write output and manifest | WRITE | Audio or transcript plus manifest.json |
| Inspect result | VALIDATE | Output presence, duration, manifest fields |
| Report result | NOTIFY | Final user-facing summary |
Tools and instruments
- Voicebox MCP server at
http://127.0.0.1:17493/mcp. - REST surface for health and audio retrieval (
GET /health,GET /audio/{generation_id}). - Resource references: voice matrix, prompt tips, execution protocol, checklist.
Canonical command path
# 1. MCP handshake or REST health
GET http://127.0.0.1:17493/health -> 200 OK
# 2. Discover tool names on first run
MCP tools/list -> cache real names
# 3. TTS only: resolve profile
MCP voicebox_list_profiles -> pick profile by name or config default
# 4. Generate or transcribe (STT skips profile lookup and model-status check)
MCP voicebox_speak { text, profile, language?, engine?, personality? }
MCP voicebox_transcribe { audio_path | audio_base64, language?, model? }
# 5. Fetch the generated audio (MCP has no save-to-disk; TTS output is wav)
GET http://127.0.0.1:17493/audio/{generation_id} -> wav bytes
# 6. Persist output + manifest
.agents/results/voice/<timestamp>-<shortid>/output.wav + manifest.json
.agents/results/voice/transcripts/<timestamp>-<shortid>/transcript.md + manifest.json
MCP tool mapping (verified against Voicebox 0.5.0)
| Use case | MCP tool | REST backing |
|---|---|---|
| TTS generation | voicebox_speak | POST /speak |
| STT transcription | voicebox_transcribe | POST /transcribe |
| Profile listing | voicebox_list_profiles | GET /profiles |
| Captures listing | voicebox_list_captures | GET /history (captures view) |
Tools not exposed via MCP (REST only): model status (GET /models/status), audio file serving (GET /audio/{generation_id}), per-version audio (GET /audio/version/{version_id}). The skill calls those over loopback HTTP when needed.
Notes on voicebox_speak:
- Required:
text. Optional:profile,engine,language,personality(bool). - Audio plays on the user speakers and is saved to the Captures / History panel automatically. There is no
save_to_disktoggle on the MCP tool itself; to persist a local copy, fetchGET /audio/{generation_id}(Voicebox TTS always storeswav). - Without a default profile set in Voicebox Settings,
profile=is required.
Notes on voicebox_transcribe:
- Accepts exactly one of
audio_base64oraudio_path(loopback only). Optionallanguage,model.
Resource scope
| Scope | Resource target |
|---|---|
LOCAL_FS | Input audio, generated audio, transcripts, manifests |
PROCESS | Local Voicebox app subprocess (managed by the user) |
NETWORK | Loopback HTTP to 127.0.0.1:17493 only |
MEMORY | Cached MCP tool names, resolved profile metadata |
CREDENTIALS | None. Voicebox is local and key-free. |
Preconditions
- Voicebox app is running and the MCP handshake succeeds.
- TTS only: at least one voice profile exists.
- TTS only: the selected engine model is loaded or the user approves a download.
- Output directory is inside
$PWDunless explicitly allowed.
Effects and side effects
- Creates audio files, transcripts, and manifests under
.agents/results/voice/. - Triggers local Voicebox generation, which consumes CPU or GPU.
- May trigger an engine model download when the user approves.
- Does not call any cloud service. No external network traffic.
Guardrails
- Voicebox required: if the MCP handshake or
GET /healthfails, exit with a one-shot install or launch hint. Do not retry, do not auto-relaunch. - Profile required for TTS only: resolve a profile and check the TTS engine only for notification or asset mode. Transcription proceeds with a valid audio input and optional STT model even when no profile exists.
- Tool-name discovery: on first invocation, call MCP
tools/listand cache the resolved names. Reuse the cache for subsequent calls in the same session. - Length limits: TTS calls cap at 5000 chars per call; warn at 2000. STT inputs cap at 30 minutes. v1 does not auto-chunk or auto-split.
- Auto-invocation transparency: notifications fire automatically only when the active task exceeds
auto_notify_after_sec(default 60s). This threshold is agent-enforced guidance — no hook measures task duration — so apply it by judgment when a long task completes or blocks. Always announce intent in one short line before generating audio. - Path safety: an explicitly requested output path authorizes writing there. Resolve ambiguity or unrelated-data replacement before the dependent write; preserve required CLI path flags.
- Cancellation: SIGINT aborts the MCP call and writes no partial output.
- Manifest required for persisted output: asset TTS and transcription modes write
manifest.jsonwith at minimum:skill,mode,voicebox_generation_id,text(ortranscript_preview),profile,engine,language,format(TTS only),created_at. Notification mode is exempt because Voicebox Captures is its system of record and no disk output is written by default. - Out of scope: voice cloning UI, captures archive, stories editor, microphone dictation loop, and cloud vendors are intentionally not exposed.
- No cost guard: Voicebox is free. The cost guardrail from
oma-imagedoes not apply.
Clarification protocol
Before invoking a TTS or STT call, the agent checks the following. If any required signal is missing, clarify with the user first.
TTS (asset mode) required:
- Text content provided?
- Voice profile id or tone description provided?
TTS strongly recommended:
- Language explicit or detectable from the text?
- Output format (wav default; mp3 requires a local ffmpeg transcode)?
STT required:
- Audio path provided and the file exists?
- Duration within 30 minutes, or user approves splitting?
Notification mode skips clarification. It uses notification_profile from config and language is auto-detected from the message.
Invocation
Standalone
/oma-voice "build succeeded, 4 minor warnings"
/oma-voice transcribe ~/Downloads/standup.m4a
/oma-voice --profile prof_warm_korean "다음 단계 진행 준비됐어요"
Shared infrastructure (other skills)
Other skills can request audio output by calling the same MCP tools directly, or by invoking /oma-voice with their text. There is no separate CLI; the skill is MCP-native.
References
- Voice engine matrix:
resources/voice-matrix.md - Prompt writing rules:
resources/prompt-tips.md - Execution protocol:
resources/execution-protocol.md - Pre-flight checklist:
resources/checklist.md - Configuration: read the
voice:section of.agents/oma-config.yamlfirst, then fall back toconfig/voice-config.yamlfor any key it does not set. Both profiles ship asnulland must be set per machine — write them to.agents/oma-config.yaml, sinceoma updateoverwrites the skill config. - Context loading:
../_shared/core/context-loading.md - Quality principles:
../_shared/core/quality-principles.md - Design reference:
../../../docs/plans/designs/012-oma-voice.md(source repo only; absent in global-mode installs)
FAQ
What does the oma-voice skill do?
Generate speech or transcribe audio locally with Voicebox. Use for narration, voice assets, dictation, and meeting transcription.
How do I install oma-voice?
Run npx skills add https://github.com/gracefullight/stock-checker --skill oma-voice in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/oma-voice/ (personal) or .claude/skills/oma-voice/ (project).
Which AI agents can use oma-voice?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is oma-voice safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains oma-voice?
It is published by gracefullight in gracefullight/stock-checker. It has 45 recorded installs.
More from gracefullight/stock-checker
stock-analysis
gracefullight/stock-checker
Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management (create, add, remove assets), crypto analysis (Top 20 by market cap), and periodic performance reports (daily/weekly/monthly/quarterly/yearly). 8 analysis dimensions for stocks, 3 for crypto. Use for stock analysis, portfolio tracking, earnings reactions, or crypto monitoring.
yahoo-finance
gracefullight/stock-checker
Get stock prices, quotes, fundamentals, earnings, options, dividends, and analyst ratings using Yahoo Finance. Uses yfinance library - no API key required.
trading-analysis
gracefullight/stock-checker
Generate professional investment reports for stocks and ETFs. Use when user requests market analysis, investment reports, stock analysis, or trading recommendations for financial instruments (SPY, AAPL, TSLA, etc.). Creates institutional-grade reports with technical indicators, AI-powered insights, charts, and investment recommendations.
backtesting-trading-strategies
gracefullight/stock-checker
Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".
financial data fetcher
gracefullight/stock-checker
Fetches real-time and historical market data, financial news, and fundamental data for trading decisions
oma-debug
gracefullight/stock-checker
Open the skill to read its SKILL.md instructions.
Popular media & creative skills
hyperframes
heygen-com/hyperframes
Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
media-use
heygen-com/hyperframes
Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.
hyperframes-registry
heygen-com/hyperframes
About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.
ai-video-generation
101-skills/superpowers
Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse
ai-image-generation
101-skills/superpowers
Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image