TTS Provider Trade-offs: Quality vs Speed vs Cost

+15 Mana ✨

Introduction

Hermes supports several TTS providers. You will never use all of them. The goal is not to memorize a list but to understand the three archetypes the list collapses into, so any provider, including ones added later, slots into a known category.

Key Concepts

  • Free cloud TTS: A hosted voice service with no per-use cost and no API key. Edge TTS is the prime example.
  • Premium cloud TTS: A paid hosted service offering more expressive, natural voices, such as ElevenLabs or OpenAI TTS.
  • Local TTS: An engine that synthesizes speech on your own machine, such as NeuTTS. Private and free, quality and speed depend on your hardware.

Real World Context

A developer setting up voice for the first time does not need to evaluate every service. They need to ask one question: do I want free-and-good-enough, paid-and-excellent, or fully-private. That question maps directly onto three archetypes, and the specific provider falls out of it. Those providers are just instances of a much shorter list of categories.

Deep Dive

Collapse the providers into three archetypes.

Free cloud (the default starting point). Edge TTS is the headline example: no API key, no cost, latency around one second, and genuinely good neural voices. For most people this is where to start and often where to stay. It transmits text (not your audio) to a cloud service, which is a far smaller privacy concern than STT, since it is only sending the reply.

Premium cloud (quality at a price). ElevenLabs offers highly expressive, natural-sounding voices; OpenAI TTS is another paid hosted option. Latency runs a bit higher (roughly one and a half to two seconds) and you pay per use. You reach for these when voice quality is the product, not a convenience: a published demo, an accessibility setup where naturalness reduces fatigue, a persona that needs to sound real.

Local (privacy and zero cost). NeuTTS runs on your own CPU or GPU. Nothing leaves the machine, there is no bill, and there is no key. It is a separate install (the neutts package plus the espeak-ng system dependency). Quality and speed depend on your hardware. This is the choice when even sending reply text to a cloud is unacceptable, or when you want a fully offline voice loop.

The three axes are the same as everywhere in voice mode: quality, speed, cost. Plus privacy, which for TTS is a lighter concern than for STT. The Hermes default and the recommended zero-cost setup is Edge TTS, with premium cloud reserved for when quality genuinely matters and local reserved for strict privacy.

The lasting skill: when you meet an unfamiliar TTS provider, do not ask "is it good?" Ask "which archetype is it?" That single question tells you its cost model, its rough latency, and its privacy profile before you read a word of its docs.

Common Pitfalls

  1. Starting with a premium provider: Paid voices are excellent but unnecessary for everyday use. Begin with free Edge TTS and upgrade only if quality is a real requirement.
  2. Treating every provider as a separate decision: They collapse into a few archetypes. Decide the archetype first; the provider follows.

Best Practices

  1. Default to free cloud TTS: Edge TTS costs nothing, needs no key, and sounds good. Make it your baseline.
  2. Classify before you choose: For any provider, identify its archetype (free cloud, premium cloud, local) to predict its cost, speed, and privacy at a glance.

Summary

  • Hermes supports several TTS providers across a small set of archetypes.
  • They collapse into three archetypes: free cloud, premium cloud, and local.
  • Edge TTS (free cloud) is the recommended default; premium cloud buys quality; local buys privacy.
  • Classify any new provider by archetype to predict its trade-offs instantly.

Code Examples

yaml
# Three archetypes, three config shapes:

# Free cloud (default, no key, ~1s latency)
tts:
  provider: "edge"
  edge:
    voice: "en-US-AriaNeural"

# Premium cloud (paid, expressive, key in .env)
# tts:
#   provider: "elevenlabs"

# Local (private, offline, hardware-dependent)
# tts:
#   provider: "neutts"
✓ Completed