Dev & Engineering text-to-speechttsaudio-generationelevenlabsedge-ttsdeepgramopenai-apirest-api

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.

FollowSkills review · FSRS-2.0
Use with care
46/ 100 5-point scale 2.3 / 5
1 2 3 4 5 6
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.

Evidence confidence:Low Reviewed Sep 09, 2026 Reviewed revision eb712ca821f0
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.
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.
Review evidence [1][2][3][4][5][6][7][8][9]
See the full review method →

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).

  1. 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
  2. A content creator producing voiceover for scripts who wants to compare ElevenLabs, OpenAI, and Deepgram voices behind one endpoint
  3. Users needing specific-language speech (e.g. Vietnamese) via the no-auth edge-tts provider, filtering voices with ?lang=vi
  4. Automation scripters who want a headless pipeline to write text to an MP3 file with a single curl command
  5. Offline users who can invoke the local-device provider to synthesize speech with built-in OS voices (macOS say / Windows SAPI)

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 do you install this skill?

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.

How do you use this skill?

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}.

How does this skill compare with similar options?

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.

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.

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.

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.

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.

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.

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.

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.

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.

Related skills