# 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.

Source: https://nodaro.ai/docs/nodes/audio/transcribe

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.

- Found in: Audio › Transcribe
- Output: text
- Credits: 22–40 per run, by model
- Models: 3
- API type: `transcribe`

## 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](https://nodaro.ai/docs/nodes/video/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](https://nodaro.ai/docs/nodes/video/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.

Workflow: A video is transcribed once: the timed transcript drives word-by-word captions, and the text is summarized.

- Upload Video → Transcribe (audio)
- Upload Video → Add Captions (video)
- Transcribe → Add Captions (transcript)
- Transcribe → Prompt (prompt)

## Input and outputs
| Input | Accepts | What it does |
| --- | --- | --- |
| **Audio** | Audio and video nodes | The speech to transcribe. For a video, the node uses its sound track. |

| Output | What it carries |
| --- | --- |
| **Text** | The whole transcript as plain text. It connects to any node that takes text. |
| **Transcript** | The 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
| Setting | What it does |
| --- | --- |
| **Provider** | The engine: **ElevenLabs STT** (the default), **Whisper — no word timings** or **Incredibly Fast Whisper**. |
| **Language** | **Auto Detect** (the default), or one of 20 languages, such as English, Spanish, Hebrew, Japanese and Arabic. |
| **Speaker Diarization** | Labels who said what. Off by default. Shown only when Provider is **ElevenLabs STT**. |
| **Tag Audio Events** | Marks 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.](https://nodaro.ai/docs-media/screens/en/nodes/transcribe/settings.light.webp)

## Models
| Model | Maker | Modes | Credits | Details |
| --- | --- | --- | --- | --- |
| [ElevenLabs STT](https://nodaro.ai/docs/models/audio/elevenlabs-stt) | ElevenLabs | Speech to text | 22 | Speech-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 Whisper](https://nodaro.ai/docs/models/audio/incredibly-fast-whisper) | OpenAI | Speech to text | 40 | Fast Whisper speech-to-text. Returns WORD-level timestamps when asked, so its transcript can feed captions. |
| [Whisper](https://nodaro.ai/docs/models/audio/whisper) | OpenAI | Speech to text | 40 | Whisper 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

| Engine | Word timings | Notes |
| --- | --- | --- |
| **ElevenLabs STT** (default) | Always | Word-level by design. The engine for captions, speaker labels and audio events. |
| **Incredibly Fast Whisper** | When needed | The node asks for word timings automatically when the **Transcript** output is connected. |
| **Whisper** | Never | Phrase 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:

```json
{
"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](https://nodaro.ai/docs/nodes/video/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](https://nodaro.ai/docs/nodes/video/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:

| Engine | Credits per run |
| --- | --- |
| **ElevenLabs STT** | 22 |
| **Incredibly Fast Whisper** | 40 |
| **Whisper** | 40 |

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](https://nodaro.ai/docs/self-hosting/cloud-connect), the transcription runs through the connection. With neither, the node fails with a message that names the key to add. See [Provider keys](https://nodaro.ai/docs/self-hosting/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](https://nodaro.ai/docs/nodes/audio/voice-extractor) before Transcribe.
- **Split very long audio.** Shorter segments transcribe more reliably. [Split into Chunks](https://nodaro.ai/docs/nodes/video/split-into-chunks) cuts a long file into equal parts.
- **Align your own script instead.** When you already have the exact script, [Forced Alignment](https://nodaro.ai/docs/nodes/audio/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](https://nodaro.ai/docs/developers/api/voice-and-media).

## Frequently asked questions

### Which transcription engine should I choose?

Keep ElevenLabs STT, the default. It always returns word timings, can label speakers and tag audio events, and it is the cheapest. Incredibly Fast Whisper also returns word timings when a node needs them. Whisper returns phrases only, which is fine for a plain transcript.

### Why was my Transcribe and Add Captions workflow refused?

The Transcribe node uses Whisper, which returns no word timings, and captions need them. Switch Provider to ElevenLabs STT or Incredibly Fast Whisper and run again. The run is refused before it starts, so nothing is charged.

### How many credits does Transcribe cost?

A flat price per run, whatever the length of the audio. ElevenLabs STT costs 22 credits, and Incredibly Fast Whisper and Whisper cost 40 credits each.

### Can Transcribe tell the speakers apart?

Yes, with ElevenLabs STT. Turn on Speaker Diarization, and the text labels each segment with its speaker, such as "Speaker 1:". Each word in the structured transcript also carries its speaker.

### Can I transcribe a video?

Yes. Wire the video into the Audio input, and the node transcribes its sound track.
