Dev & Engineering

9Router Text-to-Speech

Turn text into MP3 audio through 9Router's unified /v1/audio/speech endpoint, drawing voices from OpenAI, ElevenLabs, Edge TTS, Deepgram, and more.

46/ 100
Use with care

Useful, but reliability, evidence or controls still have material gaps.

See how it was scored ↓
Works as-is in
Codex · Claude Code
Stars
★ 31k
Last updated
17d ago
License
MIT
text-to-speechttsaudio-generationelevenlabs
+4edge-ttsdeepgramopenai-apirest-api

What does this skill do, and when should you use it?

9router-tts is one of nine skills bundled in the 9Router monorepo, teaching AI clients how to call 9Router's text-to-speech endpoint. It requires a running 9Router instance configured via NINEROUTER_URL (plus NINEROUTER_KEY when auth is enabled). The skill documents a three-step workflow: discover available TTS models, list voices per provider and language, then POST to /v1/audio/speech. Supported providers include OpenAI, ElevenLabs, OpenRouter, Edge TTS, Google TTS, Deepgram, Hyperbolic, Inworld, Coqui and more, with three providers (edge-tts, google-tts, local-device) needing no authentication. Responses default to raw MP3 bytes or a base64 JSON payload.

The skill is a pure instruction document with no executable scripts. It guides the model to: 1) GET /v1/models/tts to list voice models, GET /v1/models/info for per-model metadata, and GET /v1/audio/voices to list voices per provider (optionally filtered by language, e.g. ?lang=vi); 2) send a JSON body to POST /v1/audio/speech with a voice ID in the model field and text in the input field; 3) receive raw audio bytes (Content-Type audio/mp3) to save as a file, or base64-encoded audio via ?response_format=; 4) adapt the model field per provider (e.g. edge-tts/vi-VN-HoaiMyNeural, el/<voice_id>, tts-1/alloy).

Good fit
  • A developer already running 9Router for AI coding who wants Claude Code or Codex to read logs, errors, or long text aloud during a session
  • A content creator producing voiceover for scripts who wants to compare ElevenLabs, OpenAI, and Deepgram voices behind one endpoint
  • Users needing specific-language speech (e.g. Vietnamese) via the no-auth edge-tts provider, filtering voices with ?lang=vi
  • Automation scripters who want a headless pipeline to write text to an MP3 file with a single curl command
  • Offline users who can invoke the local-device provider to synthesize speech with built-in OS voices (macOS say / Windows SAPI)

How do you install this skill?

Before you use it
  • This skill is documentation only; you must install and run the 9Router service yourself first.
  • Input text is forwarded via 9Router to third-party cloud providers — use caution with sensitive content; some providers are noAuth direct calls.
  • Most upstream TTS providers are unreachable from mainland-China networks without a proxy; only a few such as edge-tts may work.
  • No documented error handling or failure feedback; issues like 401 or missing ffmpeg require self-debugging.
  • All endpoint and model-format claims are static documentation, unverified by execution.
Before you start
Your agent needs
  • Shell / CLI
  • Network access
  • Local filesystem
Install first
  • 9Router instance (NINEROUTER_URL, NINEROUTER_KEY if auth enabled)
  • curl or any HTTP client
  • jq (for discovery examples)
  • ffmpeg (only for local-device provider)

This skill is a SKILL.md inside the 9router monorepo (skills/9router-tts/SKILL.md) — there is no separate installation. Prerequisite: install and run 9Router per the repo README (npm install -g 9router, then 9router; default http://localhost:20128), and set NINEROUTER_URL to that instance; add NINEROUTER_KEY if auth is enabled. Further setup details live in skills/9router/SKILL.md, which this skill explicitly references.

Generic route: install into Claude Code manually (macOS / Linux)
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/decolua/9router.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/skills/9router-tts" ~/.claude/skills/
rm -rf "$tmp"

Generated from the source repository and skill path; it copies only this skill's folder. If the author's install steps above differ, follow those first. To scope it to one project, replace ~/.claude/skills with that project's .claude/skills.

How do you use this skill?

Try saying

Once installed, send your agent any of these to trigger it:

  • Authorization: Bearer $NINEROUTER_KEY
  • Convert this text to speech using edge-tts voice vi-VN-HoaiMyNeural and save it as MP3

1) Discover voices: curl $NINEROUTER_URL/v1/models/tts | jq '.data[].id'; 2) Generate (example): curl -X POST "$NINEROUTER_URL/v1/audio/speech" -H "Authorization: Bearer $NINEROUTER_KEY" -H "Content-Type: application/" -d '{"model":"openai/tts-1","input":"Hello world"}' --output speech.mp3; 3) Typical trigger prompt: 'Convert this text to speech using edge-tts voice vi-VN-HoaiMyNeural and save it as MP3'. Default responses are raw MP3 bytes; ?response_format= returns {audio: base64, format}.

What are this skill's strengths and limitations?

Pros
  • A single OpenAI-style endpoint unifies a dozen-plus TTS providers; switching voices is just a model-field change
  • Three providers (edge-tts, google-tts, local-device) work with zero authentication
  • Voices can be filtered by language (e.g. ?lang=vi), friendly for multilingual/Vietnamese use
  • Copy-pasteable curl and Node.js examples plus a per-provider model-format cheat sheet
Limitations
  • Hard dependency on a running 9Router instance — the skill is unusable without one
  • Cloud providers (ElevenLabs, Deepgram, Hyperbolic, etc.) require their own paid accounts or tokens; cost depends on upstream vendors
  • The skill is documentation only — no scripts, no input validation; error handling is the caller's responsibility
  • local-device requires ffmpeg and covers only macOS say / Windows SAPI; Linux support is not mentioned

How does this skill compare with similar options?

Side by side with related skills; every score comes from the same FSRS standard.

Skill FS score Stars Last updated License
9Router Text-to-Speech this page 46 · Use with care ★ 31k 17d ago MIT
Speech Generation ✓ OpenAI · Official 48 · Use with care ★ 28k 4mo ago —
Azure Realtime Podcast Studio ✓ Microsoft · Official 39 · Not recommended ★ 2.7k 3mo ago MIT
Azure Short-Audio Speech-to-Text REST ✓ Microsoft · Official 49 · Use with care ★ 2.7k 3mo ago MIT
9Router Speech-to-Text Skill 48 · Use with care ★ 31k 17d ago MIT

The README notes OmniRoute, a TypeScript fork of 9Router, also offers multimodal APIs including TTS. If you need only one vendor, calling OpenAI or ElevenLabs APIs directly is simpler — this skill's value is the unified multi-provider entry point plus no-auth fallbacks.

How did FollowSkills review this skill?

FollowSkills review · FSRS-2.0
Use with care
46/ 100 5-point scale 2.3 / 5
The upstream repository has new commits since this review. The score still applies to the reviewed revision shown and may not cover the latest changes.
1Trust13 / 25 · 2.6/5

The skill itself is only HTTP API documentation; it requires NINEROUTER_URL/NINEROUTER_KEY env vars and performs no file access or destructive operations, with no hidden permissions. Deducted for: input text is sent to the local 9Router and forwarded to multiple cloud TTS providers (several marked noAuth such as edge-tts/google-tts, meaning content leaves to third parties); data-flow disclosure is thin and there is no confirmation or rollback discussion.

2Reliability8 / 20 · 2.0/5

The curl/JS examples are internally consistent and endpoint, field and response-format documentation is clear. Deducted for: total dependence on the external 9Router service and upstream TTS provider availability; no tests, no documented error codes or failure feedback (e.g., 401, missing ffmpeg); key paths could not be reproduced in a static review.

3Adaptability8 / 15 · 2.7/5

The trigger description is explicit (text-to-speech, voiceover, narration) and the provider-quirks table documents per-provider model formats and boundaries (noAuth, ffmpeg requirement). Deducted for: no declared prerequisite that 9Router must be installed and running, and no mainland-China reachability discussion — most upstream providers (OpenAI, ElevenLabs, Google) are not directly reachable from mainland China; only a few like edge-tts may work.

4Convention9 / 15 · 3.0/5

Well-structured with progressive disclosure, MIT license, versioned repository and CI. Deducted for: the skill itself has no version/changelog/known-limitations list, setup is deferred to another SKILL.md whose content was not provided here, and maintenance responsibility is only implicit at the repository level.

5Effectiveness5 / 15 · 1.7/5

If 9Router is running, following the doc should yield a directly usable audio file with two output formats (raw bytes/base64). Deducted for: value depends entirely on the external service, output correctness cannot be verified statically, marginal value over calling provider APIs directly is limited (mainly a unified entry point), and no representative output evidence is provided.

6Verifiability3 / 10 · 1.5/5

Auditable source code exists (the ping.js logic shows how STT paths are probed) plus README ecosystem notes. Deducted for: the TTS skill's key claims (per-provider model formats, response shapes) have no test suite, no CI coverage and no third-party execution evidence — author assertions only.

1 2 3 4 5 6

Open a dimension to read why it scored that way

Reviewed Sep 09, 2026 Reviewed revision eb712ca821f0 Review evidence[1][2][3][4][5][6][7][8][9]

Evidence confidence:Low — Mostly static review, author material or a limited demo; useful for discovery, not high-risk decisions.

See the full review method →

FAQ

Does using this skill cost money?
The skill and 9Router itself are free, MIT-licensed software. However, upstream TTS providers like OpenAI, ElevenLabs, and Deepgram charge under their own pricing; edge-tts, google-tts, and local-device are free and auth-free.
Can I use it without a 9Router instance?
No. All endpoints (/v1/models/tts, /v1/audio/speech, etc.) are served by a 9Router instance, which must be installed, running, and reachable at NINEROUTER_URL.
What audio response formats are available?
By default the endpoint returns raw MP3 audio bytes (Content-Type audio/mp3), ready to save to disk. Adding ?response_format= returns a JSON object with base64-encoded audio and its format.
How do I format the model field per provider?
Formats vary: edge-tts uses a bare voice ID (e.g. vi-VN-HoaiMyNeural), ElevenLabs uses <model_id>/<voice_id>, OpenAI uses tts-1/alloy or just a voice name, Google TTS uses a language code — see the skill's provider cheat sheet for details.

More skills from this repository

All from decolua/9router

Dev & Engineering

9Router Speech-to-Text Skill

Transcribe audio through one OpenAI-compatible endpoint that routes to Whisper, Groq, Gemini, Deepgram and more via 9Router.

★ 31k FS 48 Use with care 17d ago
Design & Frontend

9Router Video Generation (xAI Grok Imagine)

Generate, edit, and extend videos via 9Router's unified API using xAI Grok Imagine, with an async submit-poll-download job flow for text-to-video and image-to-video.

★ 31k FS 49 Use with care 17d ago
Dev & Engineering

9Router Embeddings Skill

Generate vector embeddings via a running 9Router's /v1/embeddings endpoint, drawing on OpenAI, Gemini, Mistral, Voyage, Nvidia, and GitHub embedding models for RAG, semantic search, and similarity.

★ 31k FS 49 Use with care 17d ago
Dev & Engineering

9Router Chat Skill

Call any LLM through the 9Router gateway using OpenAI or Anthropic API formats, with streaming and combo auto-fallback, so chat and code generation never stall on a single provider's quota.

★ 31k FS 47 Use with care 17d ago
Dev & Engineering

9Router Image Generation Skill

Call text-to-image models from OpenAI, Gemini, FLUX, Stability and 40+ providers through one 9Router endpoint, letting AI coding agents generate images on demand.

★ 31k FS 52 Use with care 17d ago
Dev & Engineering

9Router Gateway Skill

Point AI coding tools at a local gateway that unifies 40+ free and low-cost model providers, with auto-fallback and RTK saving 20-40% tokens per request.

★ 31k FS 46 Use with care 17d ago
Dev & Engineering

9Router Web Fetch

Turn any URL into markdown, text, or HTML via 9Router's /v1/web/fetch, routing across Jina Reader, Firecrawl, Tavily, Exa, and Ollama Cloud with automatic provider fallback.

★ 31k FS 51 Use with care 17d ago
Dev & Engineering

9Router Web Search Skill

Aggregate web and X search from 11 providers (Tavily, Exa, Brave and more) through one 9Router /v1/search endpoint, so AI coding agents can search the web on demand.

★ 31k FS 48 Use with care 17d ago

Related skills