All nodes/AI/Media (Speech / Image / Video)

Speech → Text

Transcribes an audio file to text (STT). The model and its parameters are taken from the media catalog; the key comes from env or from a workspace OpenRouter connection.

Speech → Text
AudioText

Type in the graph: speech_to_text

Exec

An error branch can be enabled (expose_error_output) to handle failures on their own path.

Ports can be split into separate execution and data handles.

Try it

Minimal working workflow

Entry
Speech → Text
Exit
  • Execute + Data
Press “Copy nodes”, open the editor and hit Ctrl+V on the canvas.

Pick your own connection or knowledge base first — the graph carries REPLACE_ME.

When to use it

The node transcribes an audio file into text. Reach for it when the text itself is what you need: to store the transcript, to search it, to branch the graph on it. If all you want is an answer to a voice message, transcription is optional — a model with audio support reads the attachment itself inside an AI Agent or an LLM Response. A model without audio support, on the other hand, simply never sees the attachment, and that is where this node becomes unavoidable.

The opposite job belongs to Text → Speech. Unlike that node and Generate Image, transcription is not offered to an agent as a tool: the voice message already arrives as an attachment of the turn.

How it works

The Audio port is a file port: an incoming message’s attachment fits, so does a file from the workspace file store or the output of Telegram Get File. When several files arrive, the node takes the first readable one. The format sent to the provider is derived from the file type, and when the type is unknown, from the byte signature itself — so a wav or an ogg is not shipped as mp3.

The model exposes two parameters: a hint and a language. Both accept Jinja templates, which makes the hint a good place for names and jargon that will show up in the recording. An empty language means auto-detection.

The transcription catalog is short and hand-maintained: the provider offers no filter for audio input, so the list cannot be assembled automatically like the other catalogs.

The Text output is a plain string, read in templates as {{ nodes.<id>.output }}.

Common mistakes

  • An edge from Entry into Audio raises a port-type warning (message → file). That one is noise: a message’s attachments are unwrapped into files and the run works.
  • Expecting timestamps, speaker labels or any markup. The node returns one text and nothing else.
  • Reading an empty result as a failure. If the model heard nothing, the node completes successfully with an empty string — test the text with a condition, not the node’s status.
  • Writing nodes.<id>.output.text. What travels on the edge and into templates is the transcript string itself.
  • Feeding several recordings at once. The extra files are ignored silently; a batch needs a loop.

Inputs

PortWirePayloadNotes
AudioaudioExecute + Dataexecute_datafile

Outputs

PortWirePayloadNotes
TexttextExecute + Dataexecute_datastring

Configuration

FieldTypeDefaultDescription
Modelmodelstringopenrouter/openai/whisper-large-v3

Speech-to-text model from the media catalog (e.g. 'openrouter/openai/whisper-large-v3'). Its own parameters (hint prompt, language) appear below once the model is selected.

Options: openrouter/openai/whisper-large-v3 — OpenRouter / OpenAI Whisper large v3 (STT), openrouter/openai/gpt-4o-transcribe — OpenRouter / GPT-4o Transcribe (STT), openrouter/openai/gpt-4o-mini-transcribe — OpenRouter / GPT-4o mini Transcribe (STT), openrouter/google/chirp-3 — OpenRouter / Google Chirp 3 (STT)

Advanced
Connection Idconnection_idstring""

Optional workspace connection carrying your own provider key (BYO). Empty = the platform key from the environment.

connection: openrouter

Shared fields

Every node has these three — the platform adds them, not the node author.

  • expose_error_output — When enabled, show an execution output to connect nodes that run if this step fails.
  • split_ports_in — Show separate execution and data input handles instead of one combined port.
  • split_ports_out — Show separate execution and data output handles instead of one combined port.