<!-- BusyBot node reference — https://busybot.net/tools/openai-stt/ -->

> Node: OpenAI Speech-to-Text (`openai_stt`) · Action (binary) · v1
> Category: AI · Credentials: OpenAI (`openai`)
> Updated: 2026-08-16

# OpenAI Speech-to-Text

> Transcribe audio using OpenAI Whisper models.

## Overview

OpenAI Speech-to-Text uses the OpenAI Audio Transcriptions API (POST /audio/transcriptions) with Whisper models to transcribe audio files into text. Accepts binary audio input (mp3, mp4, mpeg, mpga, m4a, wav, webm) and returns a transcription in the specified format (json, text, srt, vtt, verbose_json). Supports optional language hints (ISO-639-1), temperature control, and timestamp granularities for verbose output.

**Category:** AI  
**Tool Name:** `openai_stt`  
**Version:** 1

**Appearance:** Icon: `openai` | Color: `#10a37f`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **OpenAI** credentials.
See the [Credentials Guide](https://busybot.net/credentials/openai/) for setup instructions.

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Model | `options` | No | (current default) | The speech-to-text model to use for transcription. Always uses the latest version (auto-updated). The pre-filled option is the recommended default; the legacy Whisper option is kept for backward compatibility. |
| | | | | Options: the OpenAI speech-to-text models available to your workspace — pick one from the dropdown. |
| Binary Property Name | `string` | No | `data` | The name of the binary property containing the audio file to transcribe. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |
| Language | `string` | No | — | Optional ISO-639-1 language code (e.g. "en", "es", "fr") to hint the language of the audio. Improves accuracy when specified. Supports expressions. |
| Options | `collection` | No | `{}` | Optional transcription settings — add only the fields you need. |
| — Response Format | `options` | No | `json` | The format of the transcription output. |
| | | | | Options: `json` (simple JSON with a text field), `text` (plain text), `srt` (SubRip subtitles), `vtt` (WebVTT subtitles), `verbose_json` (segments, words, duration and language) |
| — Temperature | `number` | No | `0` | Sampling temperature (0-1). Higher values make output more random, lower values more deterministic. |
| — Timestamp Granularities | `options` | No | — | Timestamp granularity for verbose_json output. Requires response format to be verbose_json. |
| | | | | Options: empty (no timestamp granularity — the default), `word` (word-level timestamps), `segment` (segment-level timestamps) |
| — Response Field Name | `string` | No | `transcription` | The output field name where the transcription text will be stored. |
| Include Input | `boolean` | No | `false` | Whether to include the original input item fields in the output alongside the transcription. |
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. |

## Output Data

One output item per input item. The transcript lands on the field named by **Response Field Name** (`transcription` by default), with `model` beside it. The rest of the input item JSON is dropped unless **Include Input** is on; the input audio binary is forwarded unchanged.

```json
{
  "transcription": "The transcribed text",
  "model": "the transcription model that was used"
}
```

- With **Response Format** set to `text`, `srt` or `vtt`, the response field holds the raw string in that format — ready to write straight to a file.
- With `verbose_json`, four extra fields join the item: `segments`, `words`, `duration` and `language`. `words` is only populated when **Timestamp Granularities** is set to `word`.

Reference the result downstream by expression, e.g. `{{ $json.transcription }}`.

## Usage Examples

- Transcribe an MP3 recording to text using Whisper
- Convert a WAV audio file to a text transcription
- Get word-level timestamps from an audio file
- Transcribe audio with SRT subtitle output format
- Transcribe non-English audio with a language hint

## Example Configuration

Transcribe audio arriving on the default binary property:

```json
{
  "type": "openai_stt",
  "parameters": {
    "binaryPropertyName": "data"
  }
}
```

Generate SRT subtitles from an English recording:

```json
{
  "type": "openai_stt",
  "parameters": {
    "binaryPropertyName": "audio",
    "language": "en",
    "options": {
      "responseFormat": "srt",
      "responseFieldName": "subtitles"
    }
  }
}
```

Get word-level timestamps and keep the original fields:

```json
{
  "type": "openai_stt",
  "parameters": {
    "binaryPropertyName": "data",
    "includeInput": true,
    "options": {
      "responseFormat": "verbose_json",
      "timestampGranularities": "word",
      "temperature": 0
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

openai_stt transcribes audio files into text using OpenAI Whisper models via the Audio Transcriptions API. Use it when a workflow receives recorded speech, voice memos, or audio uploads that need converting into readable or processable text. It outputs a transcription result with recognized text in your chosen format such as json, text, srt, vtt, or verbose_json, plus optional timestamps and language metadata, or an error object on the error channel.