Skip to content
Agentmart
Submit a tool

tts-engine-evaluation

Settle a "should we switch TTS engines / is X better than Edge TTS" question by measuring produced audio files, not by reading library docs or trusting…

Skill by kingithegreat

IndexedMIT★ 1
Write a review

Chalk Labs

Need help deploying tts-engine-evaluation?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/kingithegreat-tts-engine-evaluation

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Settle a "should we switch TTS engines / is X better than Edge TTS" question by measuring produced audio files, not by reading library docs or trusting marketing sample rates. Use when asked to evaluate Kokoro, Voicebox, ElevenLabs, Piper, or any narration engine for HomeBot's Media Studio; when someone reports "the voice isn't high enough quality"; and before wiring any new TTS provider. Covers the ffprobe/volumedetect method, the model-native-rate trap (a wrapper cannot exceed its model), and the decision rule that kept Edge TTS.

Use cases: marketing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/tts-engine-evaluation

What's inside

Skill name
tts-engine-evaluation
Description
Settle a "should we switch TTS engines / is X better than Edge TTS" question by measuring produced audio files, not by reading library docs or trusting marketing sample rates. Use when asked to evaluate Kokoro, Voicebox, ElevenLabs, Piper, or any narration engine for HomeBot's Media Studio; when someone reports "the voice isn't high enough quality"; and before wiring any new TTS provider. Covers the ffprobe/volumedetect method, the model-native-rate trap (a wrapper cannot exceed its model), and the decision rule that kept Edge TTS.
License
MIT
Instructions
83 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Evaluate a TTS engine by measuring its output, not its spec sheet

The tempting evaluation reads the library's README, sees "48 kHz!" or "neural!", and concludes
quality. Every claim about audio quality must be settled by generating the SAME script through
both engines and measuring the produced files. A wrapper's advertised rate can differ from what
it actually emits, and a model's native rate caps every wrapper built on it.

## The method (worked end-to-end 2026-08-23: Kokoro vs Edge TTS)

1. **One script, both engines.** ~55 words of real narration-style prose — not "hello world",
   which has no sentence pauses and hides pacing differences.

2. **Generate through each engine in its PRODUCTION configuration.** For Edge TTS that meant
   `AUDIO_24KHZ_96KBITRATE_MONO_MP3` exactly as `voice.ts` sets it — evaluating a config the
   app doesn't ship proves nothing about the app.

3. **Measure with ffprobe** (format facts):
   ```bash
   ffprobe -v error -show_entries stream=codec_name,sample_rate,channels,bit_rate \
     -show_entries format=duration -of default=noprint_wrappers=1 file.ext
   ```

4. **Measure levels with volumedetect**:
   ```bash
   ffmpeg -hide_banner -i file.ext -af volumedetect -f null NUL 2>&1 |
     grep -E "mean_volume|max_volume"
   ```
   Expect differences under ~2 dB to be irrelevant: Media Studio's loudnorm is the pipeline's
   loudness authority, so pre-normalisation level differences are erased downstream.

5. **Measure pacing with silencedetect** (`noise=-40dB:d=0.5`): count and length of sentence
   gaps. Fewer/shorter gaps = tighter narration for the same words.

6. **Time warm generations**, at least two runs each. Note WHAT the time is made of: network
   TTS time is latency (varies with connectivity), local model time is compute (deterministic).

## The model-native-rate trap

This is the finding that ended the Kokoro track. Aden's framing was "Edge caps at 24 kHz —
that's the library ceiling", implying a different engine could beat it. Verified false:

- `kokoro-js/dist/kokoro.cjs` constructs output as `new RawAudio(i.data, 24e3)` — hardcoded.
- The Kokoro-82M ONNX model itself is a 24 kHz vocoder. **No packaging of a model — JS lib,
  Tauri+Python app, raw Python — can exceed the model's native rate.**

So before evaluating any engine, find its MODEL's native rate:
- Grep the wrapper's dist/source for the `RawAudio(` (or equivalent) construction.
- Or generate one sample and ffprobe it — the emitted rate IS the native rate.
- A wrapper advertising more than its model delivers is lying; trust the file.

Resampling up (`ffmpeg -ar 48000`) works trivially but adds no information — upsampling cannot
create detail the source never produced. Never present an upsampled rate as a quality gain.

## The decision rule

An engine swap must win on an axis that survives the pipeline:

| Axis | Survives? | Why |
|---|---|---|
| Sample rate/channels | Only if HIGHER | Same-rate = no pipeline change needed; higher = real fidelity gain |
| Loudness | Almost never | loudnorm normalises it away |
| Pacing/silence | Yes | Affects ducking mix and video length |
| Voice character | Yes — but only human ears settle it | Numbers cannot judge this; produce A/B samples and let Aden listen |
| Speed/offline | Yes | Real operational value, but doesn't make better-sounding video |

**Kokoro vs Edge outcome (2026-08-23): same 24 kHz mono, levels within 2 dB, Edge tighter
pacing, Kokoro ~2× faster + offline. Dropped — no axis that survives the pipeline favoured it,
and voice character was never raised as a complaint about Ava specifically.**

## Cost check before any cloud TTS

ElevenLabs was evaluated and ruled out the same day: free tier ≈ 10 min/month non-commercial;
shipping in a sold product needs Creator ($22/mo). Apply the same test to any cloud voice:
free tier must cover evaluation AND the shipping tier must fit the product's economics.

## Bench location

`narration-measure/` in the repo working tree (untracked): `kokoro.mjs`, `generate.js`
(Edge path), paired samples `kokoro-heart.wav` / `edge-ava.mp3`. Reusable as-is for any future
engine comparison — add a third generator script, keep the measurement commands identical so
numbers stay comparable across evaluations.

From kingithegreat/Sadie, MIT.

More from kingithegreat/Sadie

Signals

Stars
1
Forks
0
Open issues
1
Last commit (this folder)
Oct 20, 2026 (11 days ago)
Last release
Dec 14, 2025 (10 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from kingithegreat

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get tts-engine-evaluation running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying tts-engine-evaluation?

CallGet help
Cite this page

tts-engine-evaluation skill. Agent Mart. https://agentmart.dev/skills/kingithegreat-tts-engine-evaluation (last updated 2026-10-24)