Reference · Tools
Deepgram
Transcribe audio and generate speech using Deepgram API.
The Deepgram node connects your BusyBot workflows to Deepgram's speech API, letting you transcribe audio from a URL or an uploaded file, or generate spoken audio from text using Aura voice models. You could, for example, build a pipeline that receives a customer call recording, extracts the transcript, and routes it to a CRM — all without leaving BusyBot.
- Node type
- Action (binary)
- Parameters
- 15
- Outputs
- Output, Error
- Credentials
- Deepgram API
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 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:
{
"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:
{
"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:
{
"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:
{
"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:
{
"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.
{
"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.
{
"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).
{
"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.
{
"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.
{
"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"withcontainer: "mp3", orencoding: "opus"withcontainer: "ogg". Leaving Container Format onnonereturns raw encoded bytes with no container. - Additional Options are shared but not universal.
sample_rateandbit_rateare only meaningful for Text to Speech;language,punctuate,diarize,smart_formatandkeywordsare 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
transcriptionresource, and Text to Speech only with thespeechresource. - Transcript Field Name only applies in Transcript Only mode. In Full Response mode the whole Deepgram payload is merged onto the item instead.
Frequently asked questions
What credential do I need, and how does authentication work?
You need a Deepgram API credential (type: deepgramApi), which is your Deepgram API key. The node sends it as a Token header on every request. Create the credential once in BusyBot and reuse it across any Deepgram nodes in your workspace.
What's the difference between 'Full Response' and 'Transcript Only' output modes?
In Full Response mode, the entire Deepgram API payload is merged onto the output item — useful when you need confidence scores, word timings, or speaker diarization data. In Transcript Only mode, just the plain text string is returned, written to a field whose name you control via the Transcript Field Name parameter. Note that Transcript Field Name has no effect in Full Response mode.
How do I make sure the audio file generated by Text to Speech is actually playable?
You need to match the encoding and container format. For example, set encoding to 'mp3' and container to 'mp3', or encoding to 'opus' with container to 'ogg'. If you leave Container Format set to 'none', the node returns raw encoded bytes with no container wrapper, which most media players won't handle correctly.
Can I set transcription options like language or diarization when using Text to Speech?
You can set those fields — the node won't throw an error — but they'll be silently ignored. Parameters like 'language', 'punctuate', 'diarize', 'smart_format', and 'keywords' only apply to transcription operations. Likewise, 'sample_rate' and 'bit_rate' are only relevant for Text to Speech. The Additional Options section is shared across operations, so stick to the fields that match your chosen operation.
When should I use Transcribe URL versus Transcribe File?
Use Transcribe URL when your audio is already hosted somewhere publicly accessible and you can pass a link directly to Deepgram. Use Transcribe File when the audio arrives in your workflow as a binary attachment — for instance, from an email node or a file upload trigger. Both operations require the resource to be set to 'transcription'; Text to Speech requires the resource to be set to 'speech'.
Build with the Deepgram node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Deepgram API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.