Nodaro Docs
DocumentationNode ReferenceModelsAI Agents (MCP)DevelopersSelf-hostingResearch
Audio

Transcribe

Turn the speech in audio or video into text with ElevenLabs STT or Whisper. Get word timings for captions, speaker labels, and tags for music and laughter.

The Transcribe node turns speech into text. Wire in audio or a video, and the node returns the transcript twice: as plain text, and as a structured transcript with the timing of every word. You can choose between three engines, and they differ in one thing that matters for captions: whether they return word timings.

When to use it

  • Transcribe an interview or a podcast for written content.
  • Make captions and subtitles from the sound of a video, with Add Captions.
  • Turn voice memos and meeting recordings into text.
  • Make an audio library searchable as text.
  • Feed a transcript into a text node to summarize or analyze it.
  • Give Edit Plan the timed transcript it needs to plan an edit.

Quick start

Add the node

Press Tab on the canvas and choose Audio › Transcribe › Transcribe.

Wire the recording

Wire an audio node or a video node into the Audio input.

Choose the engine and the language

Open the settings panel. Keep Provider on ElevenLabs STT unless you need another engine. Keep Language on Auto Detect, or choose the language.

Run it

Click Run on the node. The plain transcript appears on the Text output and the timed transcript on the Transcript output.

audiovideotranscriptpromptUpload VideoTalking headTranscribeElevenLabs STTAdd CaptionsWord highlightPromptWrite a summary
A video is transcribed once: the timed transcript drives word-by-word captions, and the text is summarized.

Input and outputs

InputAcceptsWhat it does
AudioAudio and video nodesThe speech to transcribe. For a video, the node uses its sound track.
OutputWhat it carries
TextThe whole transcript as plain text. It connects to any node that takes text.
TranscriptThe structured transcript, with word and segment timings in milliseconds. It feeds Add Captions and the editing nodes.

In a prompt, a reference to the node's label, such as {Transcribe}, gives the plain text.

Settings

SettingWhat it does
ProviderThe engine: ElevenLabs STT (the default), Whisper — no word timings or Incredibly Fast Whisper.
LanguageAuto Detect (the default), or one of 20 languages, such as English, Spanish, Hebrew, Japanese and Arabic.
Speaker DiarizationLabels who said what. Off by default. Shown only when Provider is ElevenLabs STT.
Tag Audio EventsMarks non-speech sounds in the transcript, such as [music] or [laughter]. Off by default. Shown only when Provider is ElevenLabs STT.

Speaker Diarization and Tag Audio Events are independent: turn on one, both or neither.

The Transcribe settings panel with Provider set to ElevenLabs STT, Language on Auto Detect, and the Speaker Diarization and Tag Audio Events checkboxes.The Transcribe settings panel with Provider set to ElevenLabs STT, Language on Auto Detect, and the Speaker Diarization and Tag Audio Events checkboxes.

Models

ModelMakerModesCreditsDetails
ElevenLabs STTElevenLabsSpeech to text22Speech-to-text with WORD-level timestamps (always on), speaker diarization and audio-event tags. The engine to use when the transcript feeds captions.
Incredibly Fast WhisperOpenAISpeech to text40Fast Whisper speech-to-text. Returns WORD-level timestamps when asked, so its transcript can feed captions.
WhisperOpenAISpeech to text40Whisper speech-to-text — PHRASE-level segments only, NO word timestamps. Fine for a transcript or a static subtitle; not for word-timed (kinetic) captions.

Word timings: which engine returns them

EngineWord timingsNotes
ElevenLabs STT (default)AlwaysWord-level by design. The engine for captions, speaker labels and audio events.
Incredibly Fast WhisperWhen neededThe node asks for word timings automatically when the Transcript output is connected.
WhisperNeverPhrase segments only. Fine for a plain transcript or a static subtitle.

If ElevenLabs STT or Incredibly Fast Whisper returns no word timings for audio that clearly has speech, the run fails and the credits are refunded. Audio with no speech at all still succeeds, with no words, for example a clip that transcribes as [music].

The structured transcript

The Transcript output looks like this:

{
  "version": 1,
  "language": "en",
  "words": [
    { "text": "Welcome", "startMs": 0, "endMs": 420 },
    { "text": "back", "startMs": 460, "endMs": 700 }
  ],
  "segments": [
    { "startMs": 0, "endMs": 700, "text": "Welcome back" }
  ]
}
  • All times are whole milliseconds.
  • words holds every word with its start and end. It is filled whenever the engine returns word timings.
  • segments holds the coarser sentences or phrases, when the engine provides them.
  • On a run with Speaker Diarization, each word and segment also has a speaker. A word can also carry a confidence.

On the Text output, Speaker Diarization adds labels such as Speaker 1: before each segment, and Tag Audio Events adds tags such as [music] and [laughter] in place.

Make captions from a transcript

Wire the Transcript output into the transcript input of Add Captions. Add Captions then draws captions timed to each word. Use ElevenLabs STT or Incredibly Fast Whisper for this.

A Whisper transcript cannot drive captions. When a Transcribe node on Whisper feeds Add Captions, the run is refused before anything runs or is charged, with this message:

Captions need word timings, but the "whisper" engine does not return word timings — pick incredibly-fast-whisper or elevenlabs-stt.
  • The check also covers a chain through Apply EDL, and chains inside a sub-workflow at any depth.
  • The settings panel shows the same warning next to Provider as soon as the connection exists, so you can fix it before you run.
  • Running the Transcribe node on its own is never blocked. A Whisper transcript that goes anywhere else is fine.
  • One case cannot be checked in advance: a chain where Transcribe and Add Captions sit on different sides of a sub-workflow boundary. That run fails at Add Captions, after the transcription has run and been charged.

Credits

Transcribe costs a flat price per run, whatever the length of the audio:

EngineCredits per run
ElevenLabs STT22
Incredibly Fast Whisper40
Whisper40

A request that is refused before it starts, such as a Whisper transcript wired into Add Captions, is not charged.

On a self-hosted install

Each engine runs on your own provider key. When the chosen engine has no key and the install has a Nodaro Cloud connection, the transcription runs through the connection. With neither, the node fails with a message that names the key to add. See Provider keys.

Tips

  • Leave the language on Auto Detect. Choose a language only when you know it, for example when two languages sound similar.
  • Label speakers for conversations. Turn on Speaker Diarization for interviews, meetings and podcasts.
  • Tag events when they matter. Turn on Tag Audio Events when background sounds help to understand the recording.
  • Clean noisy audio first. Wire the recording through Voice Extractor before Transcribe.
  • Split very long audio. Shorter segments transcribe more reliably. Split into Chunks cuts a long file into equal parts.
  • Align your own script instead. When you already have the exact script, Forced Alignment times each of its words against the audio.

From the API

POST /v1/transcribe takes audioUrl and the optional provider (elevenlabs-stt, incredibly-fast-whisper or whisper), language, diarize, tagAudioEvents and wordTimestamps.

  • Name the engine. A request without provider runs Whisper, so existing callers keep the engine they had. Set provider whenever you need word timings, diarize or tagAudioEvents.
  • Word timings. incredibly-fast-whisper returns words only with wordTimestamps: true. wordTimestamps: true on whisper is refused with a 400 validation_error before the job is created, so nothing is charged. The engine is never swapped silently.
  • Captions. The finished job's output_data.words already has the caption shape (text, startMs, endMs). Pass it to POST /v1/add-captions as captions, and Add Captions does not transcribe again.
  • Price. GET /v1/credits/model-cost?model=<engine> returns the exact price for your account.

The SDK method is client.audio.transcribe, and the CLI command is nodaro audio transcribe --provider <engine>. The MCP tool transcribe always runs ElevenLabs STT, so its result always has word timings. See Voice and media.

Frequently asked questions

Last updated on

On this page