NodaroAccount
Nodaro Docs
DocumentationNode ReferenceModelsTemplatesAI Agents (MCP)DevelopersSelf-hostingResearchCompare
Audio

Text to Speech

Turn text into natural speech with ElevenLabs v4, v4 Turbo, v3, Turbo v2.5 or Multilingual v2. Choose a voice, add emotion with audio tags, speak 46 languages.

The Text to Speech node turns text into spoken audio with ElevenLabs voice models. You write or connect the text and choose a voice and a model. The node returns an audio file that you can put under a video, lip-sync to a face or mix with music. The default model, ElevenLabs v4, speaks 46 languages and understands audio tags such as [laughs] and [whispers].

When to use it

  • You need a voiceover or narration for a video, an explainer or an ad.
  • You want a character to speak a line, for example before Lip Sync animates a portrait.
  • You want podcast-style audio from a written script.
  • You want the same script in several languages.
  • You want expressive delivery with emotions, reactions and pauses, written straight into the text.

For a conversation between several voices in one file, use Text to Dialogue instead.

Quick start

Add the node

Press Tab on the canvas and choose Audio › Speech & Voiceover › Text to Speech.

Give it the text

Wire a Text, Generate Text - Any LLM or Generate Script node into the Prompt input. To type the text in the node instead, open the settings panel and set Text Source to Write directly.

Choose the voice and the model

Under Voice, open the voice browser, listen to a few previews and choose one. Under Model, keep ElevenLabs v4 unless you need a longer text or a lower price.

Run it

Click Run on the node. The speech appears on the node with a player, and every earlier result stays in its result strip.

promptaudioaudiovideoTextThe scriptText to SpeechElevenLabs v4Audio FXRoom (indoor)Generate VideoMerge Video & Audio
A script becomes a voiceover, a room reverb places the voice in the scene, and the voice is merged onto a video.

Inputs

InputAcceptsWhat it does
PromptText nodes, such as Text, Generate Text - Any LLM, Generate Script and Combine TextThe text to speak, when Text Source is From connected node.

Previous text and Next text can also take the text of another node through a field mapping. See Continuity across clips.

The output, Audio, is the URL of the spoken audio. It can feed any number of nodes at once.

Settings

SettingWhat it does
Text SourceFrom connected node (the default) speaks the text wired into Prompt. Write directly speaks the text you type in Text.
TextThe text to speak, when Text Source is Write directly. Type [ or / to insert an audio tag. You can insert the value of another node by writing its label in curly braces, such as {Script}.
ModelElevenLabs v4 (the default), ElevenLabs v4 Turbo, ElevenLabs v3, ElevenLabs Turbo v2.5 or ElevenLabs Multilingual v2.
VoiceThe voice that speaks. Opens the voice browser. The default is Rachel.
LanguageAuto-detect (the default), or one language from the model's list.
StabilityFrom 0 to 1. Lower values sound more expressive and varied; higher values sound more uniform.
SimilarityFrom 0 to 1. How closely the result matches the voice's timbre. ElevenLabs v4, v4 Turbo, Turbo v2.5 and Multilingual v2 only.
Style ExaggerationFrom 0 to 1. Strengthens the style of the original voice. Turbo v2.5 and Multilingual v2 only.
SpeedFrom 0.7x to 1.2x. Turbo v2.5 and Multilingual v2 only.
Previous textUnder Continuity. The line spoken just before this clip. The model reads it as context and does not speak it. Up to 1,000 characters.
Next textUnder Continuity. The line spoken just after this clip. Up to 1,000 characters.
Pre & post textText that is always added before and after the text to speak. It is hidden from people who use your workflow as an app. See Prompt pre and post text.

The panel shows only the settings the chosen model uses. ElevenLabs v3 has Stability only. ElevenLabs v4 and v4 Turbo have Stability and Similarity. The v2 models have all four sliders. When you choose another model, the settings the new model does not use are cleared, and a language it does not offer is reset to Auto-detect.

Voice settings follow the voice's preview. When you leave the sliders alone, the node uses the voice's own stored settings, the same settings its preview was made with. The result then sounds like the preview you heard. When you move a slider, only that value changes, and the voice keeps its other stored settings.

In a published app, you can expose Stability and Similarity as sliders. They start at the node's own value, or at 0.5 and 0.75 when the node has none. ElevenLabs v3 ignores Similarity.

The Text to Speech settings panel with Text Source, Model, Voice, Language and the Stability slider.The Text to Speech settings panel with Text Source, Model, Voice, Language and the Stability slider.

Models

Text to Speech can run the five ElevenLabs speech models below. Click a model for its credit price.

ModelMakerModesCreditsDetails
ElevenLabs v4ElevenLabsText to speechfrom 5Newest ElevenLabs TTS — [audio tags], stability and similarity control, up to 10,000 characters per request. Direct API.
ElevenLabs v4 TurboElevenLabsText to speechfrom 3Faster, cheaper ElevenLabs v4 at lower fidelity — [audio tags], stability and similarity control, at Turbo's credit price. Prefer v4 when quality matters. Direct API.
ElevenLabs v3ElevenLabsText to speechfrom 5Expressive ElevenLabs TTS — supports [audio tags] for emotion / pacing. Direct API.
ElevenLabs Turbo v2.5ElevenLabsText to speechfrom 3Fast, cheap ElevenLabs TTS via the direct ElevenLabs API. Good for narration.
ElevenLabs Multilingual v2ElevenLabsText to speechfrom 5Multi-language ElevenLabs TTS via the direct ElevenLabs API.
ModelLanguagesAudio tagsContinuityCharacters per run
ElevenLabs v4 (default)46YesYes10,000
ElevenLabs v4 Turbo46YesYes10,000
ElevenLabs v346YesNo5,000
ElevenLabs Turbo v2.532No, removed before speakingYes40,000
ElevenLabs Multilingual v229No, removed before speakingYes10,000

Which model to choose

  • ElevenLabs v4 — the default. Choose it for expressive speech, audio tags, the widest language support and up to 10,000 characters per run. It has no Speed or Style Exaggeration setting.
  • ElevenLabs v4 Turbo — v4 with the same audio tags and settings, faster and cheaper, at lower fidelity. Choose it for tagged narration on a budget, and v4 when quality matters.
  • ElevenLabs v3 — the previous model, with the same audio tags and languages, up to 5,000 characters per run. A node saved on v3 keeps running on v3.
  • ElevenLabs Turbo v2.5 — cheaper and faster. Choose it for plain narration and for long texts, up to 40,000 characters per run.
  • ElevenLabs Multilingual v2 — natural delivery in 29 languages, with up to 10,000 characters per run.

A voice can sound noticeably different on v4 than on v3, and it often comes out quieter. Compare the two models on your own voice before you switch a finished project.

For every audio model in Nodaro, read Choosing a model.

Choose a voice

The voice browser has three tabs:

  • Premade — ElevenLabs' standard voices.
  • My Voices — custom voices you already own. To create a new voice from a description, use Voice Design.
  • Voice Library — the shared ElevenLabs library, with search and filters for accent, age, language, use case and tone.

Every voice has a preview you can play before you choose it.

Creators verify each Voice Library voice for specific models. Suppose the node runs Turbo v2.5 or Multilingual v2, and you choose a library voice that is not verified for that model. The node then switches Model to one the voice is verified for: ElevenLabs v4 first, then v3, then v4 Turbo, then the cheapest v2 model. A node on ElevenLabs v4, v4 Turbo or v3 is never switched by a voice choice.

Add emotion with audio tags

ElevenLabs v4, v4 Turbo and v3 read audio tags: short instructions in square brackets, placed in the text where the effect should happen. For example: I can't believe it [laughs] that's amazing.

KindExamples
Emotions[excited], [sad], [angry]
Reactions[laughs], [sighs], [gasps]
Delivery[whispers], [shouting]
Pacing[pause], [long pause]
Tone[cheerfully], [deadpan]
Sound effects[applause], [thunder]

The v2 models remove audio tags before they speak, and the remaining text can read awkwardly. To add a pause on a v2 model, use a break tag instead, such as <break time="1.0s" />.

Hear the difference

Both takes below use ElevenLabs v3 and the premade voice Rachel. The first reads the text with two audio tags; the second reads the same words without them.

Text with audio tags
I looked everywhere for it. [whispers] And then I found it, right under the old map. [laughs] It was there the whole time.
With the two tags, [whispers] and [laughs].
The same words without tags.

Languages

Auto-detect works well for most text. For text that is not in English, choosing the language explicitly can improve pronunciation.

  • Multilingual v2 (29 languages): English, Japanese, Chinese, German, Hindi, French, Korean, Portuguese, Italian, Spanish, Indonesian, Dutch, Turkish, Filipino, Polish, Swedish, Bulgarian, Romanian, Arabic, Czech, Greek, Finnish, Croatian, Malay, Slovak, Danish, Tamil, Ukrainian and Russian.
  • Turbo v2.5 (32 languages): every Multilingual v2 language, plus Hungarian, Norwegian and Vietnamese.
  • v3, v4 and v4 Turbo (46 languages): every Turbo v2.5 language, plus Hebrew, Thai, Bengali, Urdu, Persian, Serbian, Lithuanian, Latvian, Estonian, Georgian, Icelandic, Catalan, Afrikaans and Swahili.

Continuity across clips

A voiceover made one clip at a time, for example one clip per shot, restarts its intonation at every cut. Previous text and Next text fix this. Set Previous text to the line spoken just before this clip, and Next text to the line spoken just after it. The clip then continues the previous one and leads into the next. The model reads this context but does not speak it, and the length of the clip does not change.

The Continuity section appears, collapsed, only for a model that uses context: ElevenLabs v4, v4 Turbo, Turbo v2.5 and Multilingual v2. ElevenLabs v3 does not use it, and switching the node to v3 clears both fields. Each field takes up to 1,000 characters. A longer previous text keeps its end, and a longer next text keeps its start.

Both fields can take the text of another node through a field mapping, for example a Text node that holds the previous shot's line. Both can also be exposed as text inputs of a published app. Context does not change the price.

Credits

The price follows the length of the text. A run is charged per started 100 characters of the text it sends, with a minimum of 8 units per run.

ModelCredits per started 100 characters
ElevenLabs v45
ElevenLabs v4 Turbo3
ElevenLabs v35
ElevenLabs Turbo v2.53
ElevenLabs Multilingual v25

The characters counted are the text actually sent, including any pre and post text. Text past the model's limit is not counted, and Turbo v2.5 and Multilingual v2 do not count the audio tags they remove. The node shows the exact price on its Run button before it runs. When the text comes from another node, the button shows a range, from the minimum up to the model's character limit.

In a published app, you can expose the node's own Text as an input. In the app's inputs list, expand the node, tick Text, and fill Maximum characters if you want a limit. The app then refuses a longer text before anything runs, and the app's advertised price is the price of that many characters. Without a limit, the app is priced at the model's character limit. When Text Source is From connected node, the app's Text is used only when the connected text is blank.

Tips

  • Keep Stability near 0.5. It balances expression and consistency. Move it toward 1 for narration that must sound even.
  • Place tags where the effect happens. A tag in the middle of a sentence changes the delivery at that point.
  • Split long scripts. ElevenLabs v3 takes 5,000 characters per run, and v4 takes 10,000. Split a longer script across several nodes and keep the delivery continuous with Previous text and Next text, or switch to Turbo v2.5.
  • Place the voice in the scene. A dry voice over a video can sound as if it was recorded somewhere else. Wire it through Audio FX with a reverb such as Room (indoor).
  • Level several clips. Wire clips through Adjust Volume with Normalize so that they play at the same loudness.

Troubleshooting

The run fails with a voice error. The voice no longer exists, for example because it was removed from the Voice Library. Choose another voice and run the node again.

The run is refused for length, or the end of the text is missing. The text is longer than the model's limit. A workflow run refuses such text before any credits are charged, and the message gives the number of characters and the limit. A request to the API cuts the text at the limit instead. Split the text, or switch to ElevenLabs Turbo v2.5.

Words in brackets are missing or the text reads oddly. You used audio tags with a v2 model, which removes them. Switch Model to ElevenLabs v4, v4 Turbo or v3, or remove the tags.

From the API

POST /v1/text-to-speech runs the same node from code. When a request leaves out provider, Nodaro chooses by length. Text of up to 10,000 characters runs on ElevenLabs v4, and longer text runs on Turbo v2.5, so a long text is never cut to v4's limit. The request is billed for the model it runs on. A provider you set is always used as is: name elevenlabs-v3 to keep the v3 voice.

The request takes previousText and nextText for continuity. With withTimestamps: true, the finished job's output_data.transcript also holds the timing of every word (words[] with startMs and endMs), at no extra credits. outputFormat picks the audio file: mp3_44100_128 (the default), mp3_44100_192 for a higher MP3 bitrate, or wav_24000 for an uncompressed 24 kHz WAV. The format does not change the credits, and the finished job's audioUrl ends in .mp3 or .wav to match. The node itself always delivers the default MP3. A voice setting out of range, or a number sent as text, is refused with a 400.

The MCP tool generate_speech runs on ElevenLabs v4 when no model is named. It takes up to 10,000 characters and refuses text longer than the chosen model's limit instead of cutting it. An unknown voice id in ElevenLabs' format, 20 letters and digits, falls back to Rachel so that the assistant still gets audio. An unknown voice name fails, and so does a library or custom voice that does not exist. The REST API has no such fallback: a request to POST /v1/text-to-speech with an unknown voice fails. See Voice and media and the MCP tools.

Frequently asked questions

Which model should I choose in Text to Speech?

Start with ElevenLabs v4, the default. It speaks 46 languages, understands audio tags for emotion and pacing, and takes up to 10,000 characters per run. Use ElevenLabs v4 Turbo for tagged narration at a lower price, and Turbo v2.5 for very long texts, because it accepts up to 40,000 characters per run.

How long can the text be?

ElevenLabs v4, v4 Turbo and Multilingual v2 speak up to 10,000 characters per run, v3 up to 5,000 and Turbo v2.5 up to 40,000. A workflow run refuses longer text before any credits are charged, and the settings panel warns you first. Over the API, longer text is cut at the limit.

How do I make the voice laugh, whisper or pause?

With ElevenLabs v4, v4 Turbo or v3, write an audio tag in square brackets where the effect should happen, for example "I can't believe it [laughs] that's amazing". The v2 models remove audio tags before they speak.

How much does Text to Speech cost?

The price follows the length of the text. Each started 100 characters costs a fixed number of credits, with a minimum of 8 units per run. ElevenLabs v4 Turbo and Turbo v2.5 cost less per unit than v4, v3 and Multilingual v2, and the node shows the exact price before it runs.

Can I use my own voice?

Custom voices you already own appear under My Voices in the voice browser. To create a new custom voice from a written description, use the Voice Design node.

What happens if the voice I chose was deleted?

The run fails with a clear error. Nodaro never swaps in a different voice without telling you, so choose another voice and run the node again.

Last updated on

On this page