10router-tts

10router-tts is a skill for Claude Code, Codex from techysy/10router. It costs 70 tokens per session (976 once invoked), scanned A, a copy of 9router-tts, MIT.

A text-to-speech skill that turns written text into spoken audio using supported voice services.

In plain words
What is it for?
Use it to create voiceovers, spoken announcements, narrated content, or audio versions of text.
Why use it?
It removes the need to record narration manually or build separate audio-generation code.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it to create voiceovers, spoken announcements, narrated content, or audio versions of text.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/techysy/10router/10router-tts
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add techysy/10router --skill 10router-tts
Clone the repo
git clone --depth 1 https://github.com/techysy/10router

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for 10router-tts

README.md
[![agentmods](https://agentmods.dev/badge/skills/techysy/10router/10router-tts/github.svg)](https://agentmods.dev/skills/techysy/10router/10router-tts)
Your own site
<a href="https://agentmods.dev/skills/techysy/10router/10router-tts"><img src="https://agentmods.dev/badge/skills/techysy/10router/10router-tts/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for 10router-tts

Your own site · 80×15
<a href="https://agentmods.dev/skills/techysy/10router/10router-tts"><img src="https://agentmods.dev/badge/skills/techysy/10router/10router-tts.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 70 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 976 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin 89% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00070 $0.00976
Opus 5 $0.00035 $0.00488
Sonnet 5 $0.00014 $0.00195
Haiku 4.5 $0.00007 $0.00098

Measured 9d ago against content hash 0a0b43063130, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

10router-tts scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

curl $TENROUTER_URL/v1/models/tts | jq '.data[].id'
Origin

This is a copy

89% identical to 9router-tts — 24 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

skills/10router-tts/SKILL.md · 81 lines

How it starts

The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.

10Router — Text-to-Speech

Requires TENROUTER_URL (and TENROUTER_KEY if auth enabled). See https://raw.githubusercontent.com/techysy/10router/main/skills/10router/SKILL.md for setup.

Discover

# 1) List models
curl $TENROUTER_URL/v1/models/tts | jq '.data[].id'
# 2) Per-model metadata (params, voicesUrl if voice-by-id)
curl "$TENROUTER_URL/v1/models/info?id=el/eleven_multilingual_v2"
# 3) List voices (elevenlabs, edge-tts, deepgram, inworld, local-device). Optional ?lang=vi
curl "$TENROUTER_URL/v1/audio/voices?provider=edge-tts&lang=vi" | jq '.data[].model'

model field in /v1/audio/speech = voice ID directly (e.g. edge-tts/vi-VN-HoaiMyNeural, el/<voice_id>, or openai/tts-1 model+default voice).

Endpoint

POST $TENROUTER_URL/v1/audio/speech

Field Required Notes
model yes voice ID from /v1/models/tts
input yes text to speak

Query ?response_format=mp3 (default, raw bytes) or ?response_format=json ({audio: base64, format}).

Examples

Save MP3:

curl -X POST "$TENROUTER_URL/v1/audio/speech" \
  -H "Authorization: Bearer $TENROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"openai/tts-1","input":"Hello world"}' \
  --output speech.mp3

JS (save file):

import { writeFile } from "node:fs/promises";
const r = await fetch(`${process.env.TENROUTER_URL}/v1/audio/speech`, {
  method: "POST",
  headers: { "Authorization": `Bearer ${process.env.TENROUTER_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ model: "el/eleven_multilingual_v2", input: "Xin chào" }),
});
await writeFile("speech.mp3", Buffer.from(await r.arrayBuffer()));

Response shape

Default → raw audio bytes (Content-Type audio/mp3).

?response_format=json:

{ "audio": "SUQzBAAAA...", "format": "mp3" }

Provider quirks (model format)

Provider model format Notes
openai tts-1/alloy (model/voice) or just voice Default model gpt-4o-mini-tts
elevenlabs <model_id>/<voice_id> or <voice_id> Default model eleven_flash_v2_5; list voices in Dashboard
openrouter openai/gpt-4o-mini-tts/alloy Streamed via chat-completions audio modality
edge-tts voice id e.g. vi-VN-HoaiMyNeural noAuth; default vi-VN-HoaiMyNeural
google-tts language code e.g. en, vi noAuth
local-device OS voice name (say -v ? / SAPI) noAuth; needs ffmpeg
deepgram aura-asteria-en etc Token auth
nvidia, inworld, cartesia, playht model/voice Provider-specific auth header
coqui, tortoise speaker / voice id Localhost noAuth
hyperbolic model id Body = {text} only

Read the full file on GitHub · 81 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago First seen · 81 lines · 70 tokens per session scan A 0a0b43063130

Subscribe to this mod's changes

10router-tts is a skill published in the GitHub repository techysy/10router (25 stars, last pushed today), licensed MIT. It adds 70 tokens to every session and 976 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). It is 89% identical to 9router-tts, differing in 24 lines, and is treated as a copy.

Related

Other skills, from other repositories

keirouter-image

Generate images via KeiRouter /v1/images/generations using OpenAI DALL-E / Gemini Imagen / FLUX / MiniMax / Stability AI / Fal.ai models. Use when the user wants to create, generate, draw, or render an image, picture, or text-to-image (txt2img).

mydisha/keirouter · 68 tokens

keirouter-stt

Speech-to-text via KeiRouter /v1/audio/transcriptions using OpenAI Whisper / Groq / Gemini / Deepgram / AssemblyAI models. Use when the user wants to transcribe audio, convert speech to text, or get subtitles from audio files.

mydisha/keirouter · 57 tokens

keirouter-tts

Text-to-speech via KeiRouter /v1/audio/speech using OpenAI / ElevenLabs / Deepgram / Edge TTS / Google TTS / Inworld voices. Use when the user wants to convert text to speech, generate audio, voiceover, narrate, or read text aloud.

mydisha/keirouter · 66 tokens

9router-image

Generate images via 9Router /v1/images/generations using OpenAI / Gemini Imagen / DALL-E / FLUX / MiniMax / SDWebUI / ComfyUI / Codex models. Use when the user wants to create, generate, draw, or render an image, picture, or text-to-image (txt2img).

decolua/9router · 74 tokens

9router-video

Generate videos via 9Router /v1/videos/generations using xAI Grok Imagine (grok-imagine-video). Async job flow - submit, poll requestid until done, download MP4. Use when the user wants to create, generate, or render a video, text-to-video (txt2vid), or image-to-video.

decolua/9router · 74 tokens

9router-tts

Text-to-speech via 9Router /v1/audio/speech using OpenAI / ElevenLabs / Deepgram / Edge TTS / Google TTS / Hyperbolic / Inworld voices. Use when the user wants to convert text to speech, generate audio, voiceover, narrate, or read text aloud.

decolua/9router · 70 tokens