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

> Node: Deepgram (`deepgram`) · Action (binary) · v1
> Category: Utility · Credentials: Deepgram API (`deepgramApi`)
> Updated: 2026-08-16

# Deepgram

> Transcribe audio and generate speech using the Deepgram API

## Overview

The Deepgram tool provides speech-to-text (transcription) and text-to-speech capabilities via the Deepgram API. It supports three operations: (1) transcribeUrl — transcribe audio from a URL using models like Nova-2, Nova-3, or Whisper; (2) transcribeFile — transcribe audio from a binary file attached to the input item; (3) textToSpeech — convert text to speech audio using Aura voice models. Transcription returns JSON with the full API response or just the transcript text. Text-to-speech stores the generated audio as binary data. Authentication is via API key sent as a Token header.

**Category:** Utility  
**Tool Name:** `deepgram`  
**Version:** 1

**Appearance:** Icon: `lucide-Headphones` | Color: `#13EF93`

## Node Type

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

## Input / Output

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

## Credentials

This tool requires **Deepgram API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/deepgram-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Transcription | `transcription` |
| Speech | `speech` |

### Operations

Each operation belongs to one resource: Transcribe URL and Transcribe File belong to `transcription`, and Text to Speech belongs to `speech`.

| Operation | Value | Description |
|-----------|-------|-------------|
| Transcribe URL | `transcribeUrl` | Transcribe audio from a URL |
| Transcribe File | `transcribeFile` | Transcribe audio from a binary file |
| Text to Speech | `textToSpeech` | Convert text to speech audio |

### Parameters

#### Transcription: Transcribe URL

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Audio URL | `string` | Yes | — | URL of the audio file to transcribe. Must be a publicly reachable URL that Deepgram can fetch directly — it is sent to the API as-is, not downloaded by the workflow. Supports expressions. |
| Transcription Model | `options` | No | `nova-2` | The transcription model to use. |
| | | | | Options: `nova-2` (best accuracy and speed), `nova-3` (latest generation model), `base` (fast, cost-effective), `enhanced` (higher accuracy), `whisper-tiny` (smallest, fastest), `whisper-small` (good balance), `whisper-medium` (higher accuracy), `whisper-large` (best Whisper accuracy) |
| Output Format | `options` | No | `full` | The format of the transcription output. |
| | | | | Options: `full` (return the entire Deepgram API response as JSON), `transcriptOnly` (return only the transcript text) |
| Transcript Field Name | `string` | No | `transcript` | The JSON field name to use for the transcript text in the output. Supports expressions. _(shown when Output Format is `transcriptOnly`)_ |

#### Transcription: Transcribe File

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Input Binary Property | `string` | No | `data` | Name of the binary property containing the audio file to transcribe. Supports expressions. |
| Transcription Model | `options` | No | `nova-2` | The transcription model to use. |
| | | | | Options: `nova-2` (best accuracy and speed), `nova-3` (latest generation model), `base` (fast, cost-effective), `enhanced` (higher accuracy), `whisper-tiny` (smallest, fastest), `whisper-small` (good balance), `whisper-medium` (higher accuracy), `whisper-large` (best Whisper accuracy) |
| Output Format | `options` | No | `full` | The format of the transcription output. |
| | | | | Options: `full` (return the entire Deepgram API response as JSON), `transcriptOnly` (return only the transcript text) |
| Transcript Field Name | `string` | No | `transcript` | The JSON field name to use for the transcript text in the output. Supports expressions. _(shown when Output Format is `transcriptOnly`)_ |

#### Speech: Text to Speech

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Text | `string` | Yes | — | The text to convert to speech. Supports expressions. |
| Voice Model | `options` | No | `aura-asteria-en` | The Aura voice model to use for text-to-speech. |
| | | | | Options: `aura-asteria-en` (warm, professional female voice), `aura-luna-en` (soft, friendly female voice), `aura-stella-en` (clear, articulate female voice), `aura-athena-en` (confident, authoritative female voice), `aura-hera-en` (mature, steady female voice), `aura-orion-en` (deep, resonant male voice), `aura-arcas-en` (warm, engaging male voice), `aura-perseus-en` (clear, professional male voice), `aura-angus-en` (friendly, conversational male voice), `aura-orpheus-en` (rich, expressive male voice), `aura-helios-en` (bright, energetic male voice), `aura-zeus-en` (commanding, powerful male voice) |
| Audio Encoding | `options` | No | `mp3` | The audio encoding format for the generated speech. |
| | | | | Options: `mp3`, `linear16` (uncompressed 16-bit PCM audio), `mulaw` (telephony), `alaw` (telephony), `opus`, `flac` (lossless) |
| Container Format | `options` | No | `none` | The container format to wrap the audio output in. |
| | | | | Options: `none` (raw encoded audio, no container), `wav`, `mp3`, `ogg` |
| Output Binary Property | `string` | No | `data` | The name of the binary property to store the generated speech audio. Supports expressions. |
| Output Filename | `string` | No | `speech.mp3` | The filename for the generated speech audio file. Supports expressions. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Options | `collection` | No | `{}` | Optional extra settings. The transcription fields apply to Transcribe URL and Transcribe File; Sample Rate and Bit Rate apply to Text to Speech. Fields that do not apply to the current operation are ignored. |
| — Language | `string` | No | — | BCP-47 language code (e.g., "en-US", "es", "fr"). Leave empty for auto-detection. Supports expressions. |
| — Punctuate | `boolean` | No | `true` | Whether to add punctuation to the transcript. |
| — Diarize | `boolean` | No | `false` | Whether to enable speaker diarization (identify different speakers). |
| — Smart Format | `boolean` | No | `true` | Whether to enable smart formatting (dates, numbers, addresses, etc.). |
| — Keywords | `string` | No | — | Comma-separated keywords to boost in transcription accuracy. Supports expressions. |
| — Sample Rate | `number` | No | `0` | Audio sample rate in Hz for text-to-speech output. Leave as 0 for default. |
| — Bit Rate | `number` | No | `0` | Audio bit rate for text-to-speech output. Leave as 0 for default. |
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. |

## Output Data

One output item per input item. Binary data from the input item is forwarded; Text to Speech additionally attaches the generated audio as a new binary property.

| Operation | What lands on the item |
|-----------|------------------------|
| Transcribe URL / Transcribe File with Output Format `full` | The whole Deepgram response is merged into the item JSON at the top level, so the transcript text is at `results.channels[0].alternatives[0].transcript` and the request metadata sits alongside it. |
| Transcribe URL / Transcribe File with Output Format `transcriptOnly` | A single field holding the transcript string. The field is named by Transcript Field Name, so the default output is `transcript`. It is an empty string when Deepgram returned no speech. |
| Text to Speech | A `textToSpeech` object with `voiceModel`, `encoding`, `container`, `textLength` and `audioSize`, plus the generated audio stored under the Output Binary Property. |

Reference the result downstream by expression, e.g. `{{ $json.transcript }}` in Transcript Only mode, `{{ $json.results.channels[0].alternatives[0].transcript }}` in Full Response mode, or `{{ $json.textToSpeech.audioSize }}` after Text to Speech.

## Usage Examples

- Transcribe an audio file from a URL using Nova-2
- Transcribe a binary audio file with speaker diarization
- Convert text to speech using Aura voice model
- Transcribe a podcast episode with punctuation and smart formatting
- Generate audio narration from text content

## Example Configuration

Transcribe audio from a URL and return the transcript text only:

```json
{
  "resource": "transcription",
  "operation": "transcribeUrl",
  "audioUrl": "https://example.com/meeting_recording.mp3",
  "model": "nova-2",
  "outputFormat": "transcriptOnly",
  "transcriptFieldName": "transcript",
  "maxConcurrency": 5
}
```

Transcribe a URL with diarization and return the full API response:

```json
{
  "resource": "transcription",
  "operation": "transcribeUrl",
  "audioUrl": "https://example.com/interview.wav",
  "model": "nova-2",
  "outputFormat": "full",
  "maxConcurrency": 5,
  "additionalOptions": {
    "language": "en-US",
    "punctuate": true,
    "diarize": true,
    "smart_format": true,
    "keywords": "AI,machine learning,deep learning"
  }
}
```

Transcribe a binary file attachment:

```json
{
  "resource": "transcription",
  "operation": "transcribeFile",
  "binaryPropertyName": "data",
  "model": "nova-3",
  "outputFormat": "transcriptOnly",
  "transcriptFieldName": "transcriptText",
  "maxConcurrency": 3,
  "additionalOptions": {
    "language": "es",
    "punctuate": true,
    "diarize": false,
    "smart_format": true,
    "keywords": ""
  }
}
```

Convert text to speech as MP3:

```json
{
  "resource": "speech",
  "operation": "textToSpeech",
  "text": "Your order has been confirmed. Thank you for shopping with us.",
  "voiceModel": "aura-asteria-en",
  "encoding": "mp3",
  "container": "mp3",
  "outputBinaryPropertyName": "data",
  "outputFilename": "confirmation.mp3",
  "maxConcurrency": 5
}
```

Convert text to speech with custom audio quality settings:

```json
{
  "resource": "speech",
  "operation": "textToSpeech",
  "text": "Welcome to the weekly briefing.",
  "voiceModel": "aura-orion-en",
  "encoding": "mp3",
  "container": "mp3",
  "outputBinaryPropertyName": "audioFile",
  "outputFilename": "briefing.mp3",
  "maxConcurrency": 5,
  "additionalOptions": {
    "sample_rate": 24000,
    "bit_rate": 192
  }
}
```

### Simple URL transcription (default settings)

Minimal configuration for URL-based transcription with auto-detected language.

```json
{
  "resource": "transcription",
  "operation": "transcribeUrl",
  "audioUrl": "https://example.com/audio.mp3",
  "model": "nova-2",
  "outputFormat": "transcriptOnly",
  "transcriptFieldName": "transcript",
  "maxConcurrency": 5
}
```

### Multi-speaker meeting transcription

Full response for downstream speaker-level analysis. Diarization enabled to label speakers.

```json
{
  "resource": "transcription",
  "operation": "transcribeUrl",
  "audioUrl": "https://storage.example.com/meeting_2026_03_11.mp3",
  "model": "nova-2",
  "outputFormat": "full",
  "maxConcurrency": 5,
  "additionalOptions": {
    "language": "en-US",
    "punctuate": true,
    "diarize": true,
    "smart_format": true,
    "keywords": ""
  }
}
```

### Transcribe an uploaded binary file

Used when a previous node provides a binary audio file (e.g., from a file upload or HTTP download).

```json
{
  "resource": "transcription",
  "operation": "transcribeFile",
  "binaryPropertyName": "data",
  "model": "enhanced",
  "outputFormat": "transcriptOnly",
  "transcriptFieldName": "transcript",
  "maxConcurrency": 5,
  "additionalOptions": {
    "language": "fr",
    "punctuate": true,
    "diarize": false,
    "smart_format": true,
    "keywords": ""
  }
}
```

### Text-to-speech for automated notifications

Lightweight TTS output using a clear female voice. Standard MP3 output.

```json
{
  "resource": "speech",
  "operation": "textToSpeech",
  "text": "Reminder: your appointment is scheduled for tomorrow at 3 PM.",
  "voiceModel": "aura-stella-en",
  "encoding": "mp3",
  "container": "mp3",
  "outputBinaryPropertyName": "data",
  "outputFilename": "reminder.mp3",
  "maxConcurrency": 5
}
```

### High-quality TTS with custom sample and bit rate

For production audio content requiring specific quality parameters.

```json
{
  "resource": "speech",
  "operation": "textToSpeech",
  "text": "This is a professional voiceover for our product demonstration video.",
  "voiceModel": "aura-orpheus-en",
  "encoding": "linear16",
  "container": "wav",
  "outputBinaryPropertyName": "audioOutput",
  "outputFilename": "voiceover_hq.wav",
  "maxConcurrency": 2,
  "additionalOptions": {
    "sample_rate": 44100,
    "bit_rate": 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

The Deepgram tool transcribes audio from a URL or binary file and converts text to speech using Deepgram API models including Nova-2, Nova-3, Whisper, and Aura voices. Use it when a workflow needs to extract readable text from audio recordings or generate spoken audio from written content. Transcription outputs a JSON object containing the full API response or just the transcript string, while text-to-speech outputs binary audio data.

### Behavior notes

- **Match the container to the encoding.** Pair `encoding: "mp3"` with `container: "mp3"`, or `encoding: "opus"` with `container: "ogg"`. Leaving Container Format on `none` returns raw encoded bytes with no container.
- **Additional Options are shared but not universal.** `sample_rate` and `bit_rate` are only meaningful for Text to Speech; `language`, `punctuate`, `diarize`, `smart_format` and `keywords` are only meaningful for the transcription operations. Mixing them causes no error — the irrelevant fields are ignored.
- **Resource and operation must agree.** Use Transcribe URL and Transcribe File only with the `transcription` resource, and Text to Speech only with the `speech` resource.
- **Transcript Field Name only applies in Transcript Only mode.** In Full Response mode the whole Deepgram payload is merged onto the item instead.