Skip to content
AI Primer
release

AssemblyAI launches TTS-1 at $15 per million characters

AssemblyAI-TTS-1 launches with advertised 90 ms streaming latency. Artificial Analysis measures 162 characters per second, and OpenRouter offers US or EU serving.

4 min read
AssemblyAI launches TTS-1 at $15 per million characters
AssemblyAI launches TTS-1 at $15 per million characters

TL;DR

  • AssemblyAI’s first TTS model costs $15 per million characters, with advertised 90 ms time to first audio, according to its launch announcement.
  • Independent listening tests place it #12 in Provider Voice and #10 in Controlled Voice, per the arena results.
  • OpenRouter offers TTS-1 with US or EU serving and access to 4,000+ voices, according to its announcement.

The launch post says TTS-1 works directly with continuous audio representations and demonstrates a voice clone made from 24 seconds of recording. Cekura’s sample gallery exposes unedited readings of tracking codes, email addresses and “Siobhan Ó Briain.”

Pricing and concurrency

The pricing details count every input character, including spaces and punctuation. The $15 rate covers:

  • All library voices and supported languages.
  • Instant voice cloning and word timestamps.
  • Processing in either the US or EU.

Pay-as-you-go has no minimum spend, per-voice fees or concurrency fees. AssemblyAI says concurrent sessions are unlimited without an annual contract.

Only two of the 11 models ranked above TTS-1 in Provider Voice cost less, according to Artificial Analysis’s comparison. Price is the sharpest part of this launch.

Latency and throughput

AssemblyAI’s latency measurements distinguish two startup figures:

  • 47 ms: median time to first byte in a single-client lab test, using 30 prompts, three rounds and four stock voices per model.
  • 90 ms: advertised production time to first audio across real networks and both regions.

Cekura’s Audrey-voice test measured different startup results:

  • 171 ms: median startup with complete text; 296 ms at p90.
  • 159 ms: startup after the last word arrives when text is streamed.

Generation throughput reached 162 characters per second in Artificial Analysis’s speed comparison, versus 148.6 for Sonic 3.6 and 112.3 for Voxtral 3 TTS. Throughput measures sustained generation rather than startup delay.

Listening tests

Artificial Analysis’s launch evaluation separates two listening tests:

  • Provider Voice: 1,227 Elo, #12, across 1,626 arena appearances, using provider-selected voices.
  • Controlled Voice: 1,110 Elo, #10, across 1,674 appearances, using the same eight cloned voices across models.

Controlled-voice performance varied by use case: knowledge sharing ranked #6, while entertainment ranked #18, according to the category breakdown. The provider-voice results also placed entertainment below the business-oriented categories.

Pronunciation

AssemblyAI highlighted Cekura’s phone-number and code results across 27 tested models:

Context-dependent pronunciation was weaker. Cekura’s model report gives it 70.8%, tied 22nd of 27, and explains that its hard-part reading accuracy is estimated through speech-to-text rather than a listening test.

Artificial Analysis used human reviewers judging accepted pronunciations. Across 2,115 rated clips, TTS-1 scored 81.7% overall, ranking #16; its four-category breakdown was:

  • Standalone terms: 92.4%, #11.
  • Contextually appropriate: 90.4%, #16.
  • Preserving exact sequences: 81.5%, #6.
  • Expanding shorthand: 73.8%, #17.

Streaming API

AssemblyAI’s Python integration guide uses one persistent WebSocket per conversation at wss://tts.us.assemblyai.com/v1/ws.

The SDK separates text submission, request completion and audio consumption:

  • generate(text) appends text exactly as sent, including spaces.
  • flush() concludes the request and returns a flush_id.
  • audio(flush_id) yields that request’s audio.
  • cancel() stops the active request, drops queued requests and unflushed text, and leaves the session open.

The tutorial’s barge-in sequence also stops the LLM writer and aborts local playback, since cancelling server generation cannot remove audio already buffered on the device.

Streaming output defaults to headerless, 16-bit little-endian mono PCM at 24 kHz. The API also supports 8 kHz mu-law for phone media streams.

Sessions have a two-minute idle timeout and a one-hour lifetime. Each generate() call accepts at most 2,000 characters.

Voice library and access

TTS-1 is also live on OpenRouter as assemblyai/assemblyai-tts-1. Voices can be selected by slug or ID, with an explicit language provider option.

The launch FAQ specifies the remaining voice features and gaps:

  • Launch languages: English, Spanish, French, German, Italian and Portuguese.
  • Cloning: instant cloning is available after confirming speaker permission; fine-tuned “Pro” cloning is not supported at launch.
  • Controls: no SSML or speed parameter. Custom pronunciation dictionaries and emotion tags are planned; punctuation and written hesitations already influence delivery.

Further reading

Discussion across the web

Where this story is being discussed, in original context.

On X· 6 threads
TL;DR2 posts
Pricing and concurrency1 post
Latency and throughput1 post
Listening tests2 posts
Pronunciation1 post
Voice library and access1 post
Share on X