Text → speech · Voice cloning · Voice design
SpeechNewFast

Qwen3-TTS speech synthesis

Words in, a voice out. Pick one of nine studio voices, clone a voice from a short recording, or invent a speaker from a written description.

Whatever you write is what gets said, word for word. From $0.072 a take.

Q

About

Qwen3-TTS reads your script aloud. It ships on Sogni as three checkpoints under one family: nine built-in studio voices, a voice cloned from a few seconds of a real recording, and a voice invented from a written description. All three take the same script, the same languages and the same price.

The single most important thing to know is what the prompt is. It is not a description of the audio you want — it is the audio. Whatever you type is spoken character for character, so “a calm woman reading the evening news” gets read out as those seven words. The description of the voice belongs in a separate field; the prompt is only ever the words to be said.

Studio Voices is the one to reach for when nobody in particular has to be imitated: narration, voiceover, a line of dialogue. Nine voices ship with it — Serena, Vivian, Uncle Fu, Ryan, Aiden, Ono Anna, Sohee, Eric and Dylan. The nationality attached to each one describes the accent it carries, not the language it can read. On top of the voice you can add a written direction — “whispering, close to the mic”, “like a sports commentator” — which restyles the delivery without changing who is speaking.

Voice Clone reproduces a specific person from three to thirty seconds of them talking. Supply the reference recording’s exact transcript alongside it whenever you know it: with the transcript the model conditions on the recording itself, and without it it has only a speaker fingerprint and its own prior to fall back on. That difference is not subtle. In our own testing, cloning an accented speaker without the transcript produced a fluent General American voice that had lost the accent entirely — recognisably not her.

Voice Design invents a speaker who does not exist. Here the description is required and is doing all the work: age, gender, accent, timbre, pace, mood, the room it was recorded in. Describe one coherent person — contradictory directions produce a voice that shifts mid-sentence.

Language is set to auto by default, which infers it from the script and is the only setting that reads a code-switched line correctly. Pin a language only when auto mis-reads a name or a loanword, and be careful about pinning it on a cloned voice: forcing English onto a non-native speaker is one of the ways to lose the accent you were cloning for.

Speech is priced per 1,000 characters of script — the unit every TTS provider bills in, because the script rather than a requested duration decides how long the model runs. That is $0.42 for roughly 74 seconds of speech, with every take billed at a floor of 170 characters so a one-line take still covers loading the model. Generation is slower than real time: expect around 1.6 seconds of GPU for each second of audio.

Speak a line in the Sogni app under Speech, or call any of the three model ids from the JavaScript or Python SDK. It runs on the Sogni Supernet, a decentralized network of creator GPUs, so nothing is installed and no card is rented.

Three modes, three checkpoints

These are three separate checkpoints rather than three presets of one, so each takes its own inputs. Everything else — script length, languages, creativity, takes, output format and price — is identical across all three.

Mode Details From
Studio Voices
qwen3_tts_1.7b_custom_voice_bf16
Voices: Nine, from Serena to Uncle Fu
Style direction: Optional · up to 512 characters
Output: WAV · MP3 · FLAC at 24 kHz
14.4 Spark · $0.072 Create →
Voice Clone
qwen3_tts_1.7b_voice_clone_bf16
Reference clip: 3–30 s of one speaker · required
Transcript: Optional · up to 1,024 characters
Output: WAV · MP3 · FLAC at 24 kHz
14.4 Spark · $0.072 Create →
Voice Design
qwen3_tts_1.7b_voice_design_bf16
Voice description: Required · up to 512 characters
Output: WAV · MP3 · FLAC at 24 kHz
14.4 Spark · $0.072 Create →

Prompting tips

The prompt is the script, so writing a good one is writing for the ear rather than for the eye:

  • Write the words, not the voice — Anything in the script is read out loud. “Warm female narrator, 30s” belongs in the style direction or the voice description — put it in the script and you will hear it spoken.
  • Punctuation is prosody — Full stops, commas, question marks and ellipses are what control pauses and intonation. Keep them. Line breaks are not pauses and do nothing.
  • Spell out anything ambiguous — Write numbers, dates, currency and abbreviations the way they should be said — “nineteen eighty-four”, “twelve dollars fifty”, “Doctor Chen” — rather than leaving the model to guess.
  • Leave the language on auto — Auto infers the language from the script and is the only setting that handles a line that switches between two of them. Pin one only when auto mis-reads a specific name or loanword.
  • Give the clone a transcript — Type out exactly what the reference recording says. It is the difference between a clone that keeps the speaker’s accent and one that reads your script in a generic voice.
  • Split a long script — The limit is 4,096 characters and a longer script is refused rather than truncated. Break it at a natural pause and run the parts as separate takes.
  • Re-roll rather than rewrite — Delivery varies between takes of the same script. Ask for several takes and pick, before you start editing words that were never the problem.

What each mode needs from you

The script, the language, the creativity and the number of takes are the same everywhere. What differs is how the voice gets decided.

Mode You supply Reach for it when
Studio Voices
qwen3_tts_1.7b_custom_voice_bf16
A voice from the roster, and optionally a written direction for the delivery. Narration, voiceover and dialogue where no particular person has to be imitated. The default.
Voice Clone
qwen3_tts_1.7b_voice_clone_bf16
3–30 s of one person speaking, plus that clip’s exact transcript whenever you know it. You need a specific real voice, and you have a recording of it.
Voice Design
qwen3_tts_1.7b_voice_design_bf16
A written description of the speaker to invent. Required here. You want a voice nobody owns, and you can describe who it belongs to.

A written direction restyles a studio voice without changing who it is; on Voice Design the same field defines the identity. Voice Clone takes no direction at all — the recording decides.

The nine studio voices

Every one of them speaks all ten supported languages. The nationality below is the accent the timbre carries, not a limit on what it can read.

Voice Gender Accent
serena Female English — the default
vivian Female Chinese
uncle_fu Male, older Chinese
ryan Male English
aiden Male English
ono_anna Female Japanese
sohee Female Korean
eric Male English
dylan Male English

The rest of the request

Field Accepts What it does
positivePrompt 1–4,096 characters The script. Read aloud verbatim; a longer one is refused rather than truncated.
language auto plus 10 named languages; default auto Auto infers it from the script and is the only setting that reads a code-switched line correctly.
creativity 0.1–2.0; default 0.9 Sampling temperature. Lower is steadier and flatter, higher more expressive and less predictable.
speaker 9 studio voices; default serena Which studio voice speaks. Studio Voices only.
instruct up to 512 characters Delivery direction on Studio Voices; the voice to invent on Voice Design, where it is required.
referenceAudio 3–30 seconds of audio The recording to clone. Required by Voice Clone and unused elsewhere.
referenceText up to 1,024 characters That recording’s exact transcript. Optional, and the single biggest lever on how close the clone lands.
numberOfMedia 1–16; default 1 Separate takes of the same script, differing only in delivery.
outputFormat mp3, wav or flac; default mp3 Container for the 24 kHz audio that comes back.

Cloning a voice

The transcript is optional and you should almost always send it. Without it the clone has a speaker fingerprint and its own prior; with it, it conditions on the recording.

const project = await client.projects.create({
  type: 'audio',
  modelId: 'qwen3_tts_1.7b_voice_clone_bf16',
  positivePrompt: 'The compute is borrowed. The voice is yours.',
  numberOfMedia: 1,
  referenceAudio: readFileSync('reference.wav'),
  // The exact words spoken in reference.wav. This is what keeps the accent.
  referenceText: 'okay say goodnight daddy i love you so i say goodnight to you',
  outputFormat: 'wav',
});

Pricing

Use pay-as-you-go Spark packs for each take (1 Spark = $0.005), or choose a flat-rate Sogni plan for credit-free fair-use generation in the app.

Variant / configuration Spark USD
Minimum bill · up to 170 characters (a short line still covers the fixed cost of loading the model and warming the codec) 14.4 Spark $0.072
1,000 characters · about 74 seconds of speech (the priced unit) 84.6 Spark $0.42
4,096 characters · the longest script (the maximum; a longer script is refused rather than cut off mid-sentence) 346 Spark $1.73

Priced per 1,000 characters of script, with a 170-character floor on every take. The script rather than a requested duration is what decides how long the model runs, so characters are the unit — the same one every other TTS provider bills in.

1 Spark = $0.005. Pay as you go with Spark packs, or speak under fair use on a flat monthly Sogni plan.

API

One Sogni API key reaches every model on the Supernet — call Qwen3-TTS with the exact model id for the variant you want.

import { SogniClient } from '@sogni-ai/sogni-client';

const client = await SogniClient.createInstance({
  appId: crypto.randomUUID(),
  apiKey: process.env.SOGNI_API_KEY,
  network: 'fast',
});

const project = await client.projects.create({
  type: 'audio',
  modelId: 'qwen3_tts_1.7b_custom_voice_bf16',
  // The prompt IS the script — every character of it is read aloud.
  positivePrompt: 'Every render on the Sogni Supernet runs on a graphics card somebody else owns. Including this sentence.',
  numberOfMedia: 1,
  speaker: 'serena',
  instruct: 'warm and unhurried, close to the mic',
  outputFormat: 'mp3',
});

const [url] = await project.waitForCompletion();
console.log(url); // audio link — download within 24h
curl https://api.sogni.ai/v1/creative-agent/workflows \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SOGNI_API_KEY" \
  -d '{
    "input": {
      "title": "First render",
      "steps": [{
        "id": "step1",
        "toolName": "generate_speech",
        "arguments": { "prompt": "Every render on the Sogni Supernet runs on a graphics card somebody else owns. Including this sentence.", "model": "voice", "voice": "serena" }
      }]
    },
    "confirm_cost": true
  }'

Example uses qwen3_tts_1.7b_custom_voice_bf16; use any exact model id from the table above. The same three ids work from the Python SDK, and the REST workflow API reaches them through generate_speech, where model selects the mode — voice, clone or design. Full reference at docs.sogni.ai.

Why run it on Sogni

Subscriptions or Spark

Use a flat monthly plan for credit-free fair-use generation, or buy Spark packs when pay-as-you-go fits better. Both run on the same creator-owned GPU network.

Unlimited plans

One flat price in the app. Generate under fair use without a per-image meter.

🧩

200+ models

Image, video, music, and language models in one workspace and one API key.

Pay-as-you-go Spark

Prefer pay-as-you-go? Call Qwen3-TTS by id and pay with Spark packs.

🌐

Powered by people

Runs on a decentralized GPU network where workers share subscription revenue.

FAQ

Qwen3-TTS on Sogni

Which of the three should I use?

Studio Voices when no particular person has to be imitated — narration, voiceover, dialogue — which is most of the time. Voice Clone when you have a recording of the specific person you want and need them. Voice Design when you want someone who does not exist and can describe them. They cost the same, so the choice is only about what you can supply.

What do I put in the prompt?

The exact words you want spoken, and nothing else. The prompt is read aloud character for character — it is not a description of the audio. If you want a particular delivery or a particular kind of speaker, that goes in the style direction (Studio Voices) or the voice description (Voice Design), never in the script.

How much does it cost?

Speech is priced per 1,000 characters of script: $0.42 (84.6 Spark), which is roughly 74 seconds of audio. Every take is billed at a floor of 170 characters — $0.072, about 14.4 Spark — so a very short line still covers the fixed cost of loading the model and warming the codec. The longest allowed script, 4,096 characters, costs $1.73.

Why is my very short line billed as 170 characters?

Because a take has a fixed cost that has nothing to do with its length: the model has to be uploaded to the GPU and the audio codec warmed up before a single word is spoken. That measured out at about 3.3 seconds of the 17.7 a 140-character take took on an RTX 4090, and 170 characters is the floor that covers it. Past that floor, price is straight-line in the length of the script.

How good is the voice cloning?

Good enough that the transcript is what decides it. Supply the reference recording’s exact words and the model conditions on the recording, which holds a speaker’s accent and delivery closely. Omit them and it works from a speaker fingerprint alone, which stays recognisable in timbre but tends to flatten a strong accent into a neutral one. Three to thirty seconds of clean speech is what it wants; past thirty seconds the tail is trimmed.

What makes a good reference recording?

One person, speaking cleanly, with nothing else in the mix. A second voice answering mid-clip, a music bed underneath or heavy room echo all end up as part of what gets cloned — trim them out first. Output loudness is inherited from the reference too, so a quiet source gives you a quiet take.

Can a cloned or studio voice read another language?

Yes — the checkpoints carry ten languages plus auto-detect, and cloning is cross-lingual, so an English reference clip can read Japanese in the same voice. The nationality listed against each studio voice describes the accent it carries, not a limit on what it can read. Our own qualification testing covered English; the other nine languages are supported by the model rather than measured by us.

How do I judge whether a take is right?

By listening to it. Do not score a voice clone with speech recognition: word error rate asks whether an English-tuned recogniser understood the words, so a clone that faithfully reproduces a strong non-native accent scores worse precisely because it is faithful. We learned this the hard way — the take our tooling scored worst was the one that actually sounded like the speaker, and the take it scored perfectly had lost her accent completely.

Does the same script always come back the same?

No. Delivery varies between takes, which is why you can ask for up to 16 of them in one request and pick. Creativity controls how far it wanders: lower is steadier and flatter, higher is more expressive and less predictable, and it defaults to 0.9.

How long can a script be?

Up to 4,096 characters, roughly five minutes of speech. A longer script is refused rather than cut off mid-sentence, so split it at a natural break and run the parts as separate takes.

How fast is it?

On an RTX 4090, about 3.3 seconds of fixed cost plus roughly 0.1 seconds per character — so a 140-character line took about 17.7 seconds warm and a 445-character one about 49 seconds from cold. Generation is always slower than real time, around 1.6 seconds of GPU per second of speech. Those are single measured runs rather than a benchmark, and your job runs on whichever eligible Supernet worker picks it up.

Do I need a GPU or ComfyUI?

No. Qwen3-TTS runs on the Sogni Supernet — a decentralized network of creator GPUs — so the checkpoints stay on the worker. Peak VRAM is only about 5GB, but there is nothing to install, no nodes to wire up and no card to buy.

Start with Qwen3-TTS today

Create in the app, or build with the API. Your call.