Comparisons

    Latency vs fidelity in voice model choice

    Fast voice models and expressive ones fail in different places. A two-axis method for picking TTS per job, plus the retake maths that settles it.

    Versely Team8 min read

    The usual way to pick a text-to-speech model is to paste one sentence into three of them and keep whichever sounds most human. That test is nearly free of information. Every current TTS model clears "sounds human" on a single declarative sentence, which is why the demo reel on every provider's site is a single declarative sentence.

    The two things that actually differ, and that you will feel within an hour of real work, are how long a take takes and how much of the delivery you can specify. Those two pull against each other. A model built to return audio quickly exposes a voice ID and not much else; a model built for expressive range gives you emotion, style steering and cloning, and asks for more time per take. Neither is the better model. They are answers to different questions about your script.

    The two axes, stated properly

    Latency is not just how fast one clip renders. It is how fast you can close a loop: write the line, hear it, decide, rewrite. On a 12-word ad hook you will run that loop a dozen times, and the loop time is the job. On a 900-word narration you will run it twice, and the loop time is almost irrelevant.

    Fidelity here does not mean "sounds real". It means how much of the performance you can specify and reproduce. Concretely, that is four separate capabilities that get bundled under one word:

    • Emotion and style control. Some models take an emotion value, some take free-text style_instructions, some take neither and give you whatever the voice does by default.
    • Inline tags. Gemini 3.1 Flash TTS accepts markers like [sigh], [laughing] and [whispering] inside the text itself, which is a different control surface from a per-request emotion parameter because it varies delivery mid-line rather than across the whole request.
    • Reference conditioning. Seed Audio 1.0 takes reference audio via @Audio1@Audio3 placeholders plus speed, pitch and volume controls, which is a way of steering delivery without describing it in words.
    • Identity. Whether you get a reusable cloned voice at all, and whether it persists across future scripts.

    The catalog does not publish per-model latency figures, so treat any speed claim, including the ones in model names, as a hypothesis. Time it yourself on your own script. One paragraph through each candidate, wall-clock, three runs.

    What the candidates actually give you

    Model Control surface Identity Notable ceiling
    Gemini 3.1 Flash TTS Natural-language style control plus inline audio tags 30 preset voices Multi-speaker dialogue in one call
    Cartesia Sonic 3.5 Emotion control, speed tuning Reusable cloned voice IDs Cloning path is the reason to be here
    Inworld TTS 1.5 Max Voice library, expressive presets Library voices Catalog positions it as the balance pick
    Inworld TTS 2 Natural-language style steering Library voices Research preview, so expect movement
    Seed Audio 1.0 Reference audio, pitch/speed/volume Preset voices Steer by example rather than adjective
    Grok TTS Speech tags, 5 voices Presets only 15,000 characters per request
    Qwen 3 TTS 0.6B Minimal Presets only Compact model, efficient processing

    Two notes on the arena scores you will see on those pages. They are Artificial Analysis text-to-audio ratings synced into the catalog, not Versely's own testing, and in a couple of cases the arena row is named differently from the catalog entry it is matched to. Read them as directional, not as a verdict on the exact build you are calling.

    The four jobs, mapped

    Long-form narration. Fidelity axis, and specifically the consistency half of it. A 900-word script is where voices drift: paragraph nine does not sound like paragraph two, and no amount of per-line tuning fixes it because the problem is between lines rather than inside them. Pick for stability, generate the whole script in as few requests as the model allows rather than line by line, and see voice stability for what the control actually governs. Grok TTS taking 15,000 characters in one request is a real advantage here for exactly this reason.

    Ad reads. Latency axis, decisively. A 15-second hook is maybe 35 words and you will hear it thirty times, because the copy is still moving while you listen. Anything that adds seconds to the loop costs you thirty times over. Use the fast model to find the read, then do one final pass on the winning line with the expressive model if the delivery needs more than the fast model gives.

    Multi-character dialogue. This one has a structural answer rather than an axis answer. Chaining single-voice calls and assembling them means you are hand-editing gaps and overlaps, and the timing never feels conversational because each line was performed in isolation. Generating the whole exchange in one multi-speaker call keeps the turn-taking inside the model. Gemini's multi-speaker mode is the one built for it, and the agent exposes it directly if you ask it to create a multi-voice dialogue or podcast.

    Batch localisation. Neither axis. The gate is the language roster, and it is narrower than the marketing suggests. Across the speech engines in the app, MiniMax covers the widest list at 31 languages, with ElevenLabs one behind at 30, Gemini at 24 and Grok at 16; Cartesia and Inworld carry 15 each and Qwen 10. Fifteen of the languages in the app's roster have generic voice entries rather than named, character-specific ones, and seven have no named voices at all. Check your target language before you plan the campaign around it. The voice-over language pages are the fastest way to see what exists for a given one.

    The retake maths that settles it

    If you are still undecided, this is the arithmetic that decides it, and it takes a minute.

    1. Count the words in the unit you will iterate on. Not the script, the unit: one hook, one paragraph, one line of dialogue.
    2. Estimate takes. Under 40 words with copy still in flux is 8 to 15 takes. Over 300 words with signed-off copy is 2 or 3.
    3. If takes are high and the unit is short, the fast model wins regardless of how good the expressive one sounds, because you are buying loop closures.
    4. If takes are low and the unit is long, the expressive model wins regardless of how slow it is, because you are buying one performance you will live with.

    The threshold sits around six takes. Above it, latency dominates; below it, fidelity does. And the two are not exclusive over a project: drafting on a fast model and delivering on an expressive one is the normal shape, not a compromise.

    One billing note that changes the shape of the decision. Speech is billed per 1,000 characters rather than per clip, so a retake on a 35-word line is a rounding error against a full narration pass. This is why "test cheap, deliver expensive" works on voice in a way it does not on video, where a retake costs the same as the original.

    FAQ

    Should I just always use the highest-ranked TTS model?

    No, for the same reason you would not shoot a 6-second social ad on the camera you would use for a feature. Rank is measured on a general preference arena, which rewards the average case. Your case has a specific shape: a length, a retake count, and usually a language. A model that ranks lower and returns takes faster produces a better final read on short-form copy, because you heard thirty options instead of eight.

    How do I keep one voice consistent across a project?

    Fix the voice ID and the request shape, not just the model. Same voice, same emotion or style parameter, same punctuation conventions, and generate long passages in one request rather than line by line. If the voice needs to persist across future projects too, that is a cloning question rather than a settings question, and it means picking a model that returns a reusable cloned voice ID rather than one that re-describes the voice each time.

    Do inline audio tags work on every model?

    No. Tag syntax is model-specific and most TTS models do not parse it, so tags written for one model turn up as spoken words or get silently dropped on another. Check the model page before you write a script full of them, because a script written around tags does not port.

    What is the fastest way to compare two candidates fairly?

    One script, one voice per model that is roughly matched in character, no other differences, and listen to the whole thing rather than the first line. The head-to-head pages do the spec side of this for you; Cartesia Sonic 3.5 vs Inworld TTS 1.5 Max is the comparison most people are actually trying to make when they ask this question. Then run your own script through both, because the spec sheet cannot tell you how a model handles your sentence rhythm.