Skip to content

For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see For full documentation content, see For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at

Migration guide: Deepgram to AssemblyAI

For the complete documentation index, see llms.txt

This guide walks through the process of migrating from Deepgram to AssemblyAI for transcribing pre-recorded audio.

Get Started

Before we begin, make sure you have an AssemblyAI account and an API key. You can sign up for a free account and get your API key from your dashboard.

Side-By-Side Code Comparison

Below is a side-by-side comparison of a basic snippet to transcribe a local file by Deepgram and AssemblyAI:

python
from deepgram import (
     DeepgramClient,
     PrerecordedOptions,
     FileSource,
)

API_KEY = "YOUR_DG_API_KEY"

AUDIO_FILE = "./example.wav"

def main():
    try:
        deepgram = DeepgramClient(API_KEY)

        with open(AUDIO_FILE, "rb") as file:
            buffer_data = file.read()

            payload: FileSource = {
                "buffer": buffer_data,
            }

            options = PrerecordedOptions(
                model="nova-2",
                smart_format=True,
                diarize=True
            )

            response = deepgram.listen.prerecorded.v("1").transcribe_file(payload, options)

            print(response.to_json(indent=4))

    except Exception as e:
        print(f"Exception: {e}")

if name == "main":
    main()
python
import assemblyai as aai

aai.settings.api_key = "YOUR-API-KEY"
transcriber = aai.Transcriber()

audio_file = "./example.wav"

config = aai.TranscriptionConfig(
    speech_models=["universal-3-pro", "universal-2"],
    language_detection=True,
    speaker_labels=True,
)
transcript = transcriber.transcribe(audio_file, config)

if transcript.status == aai.TranscriptStatus.error:
    print(f"Transcription failed: {transcript.error}")
    exit(1)

print(transcript.text)

for utterance in transcript.utterances:
    print(f"Speaker {utterance.speaker}: {utterance.text}")

Below is a side-by-side comparison of a basic snippet to transcribe a publicly-accessible URL by Deepgram and AssemblyAI:

python
from deepgram import (
    DeepgramClient,
    PrerecordedOptions
)

API_KEY = "YOUR_DG_API_KEY"

AUDIO_URL = {
    "url": ""
}

def main():
    try:
        deepgram = DeepgramClient(API_KEY)

        options = PrerecordedOptions(
            model="nova-2",
            smart_format=True,
            diarize=True
        )

        response = deepgram.listen.prerecorded.v("1").transcribe_url(AUDIO_URL, options)

        print(response.to_json(indent=4))

    except Exception as e:
        print(f"Exception: {e}")

if name == "main":
    main()
python
import assemblyai as aai

aai.settings.api_key = "YOUR-API-KEY"
transcriber = aai.Transcriber()

audio_file = (
    ""
)

config = aai.TranscriptionConfig(
    speech_models=["universal-3-pro", "universal-2"],
    language_detection=True,
    speaker_labels=True,
)
transcript = transcriber.transcribe(audio_file, config)

if transcript.status == aai.TranscriptStatus.error:
    print(f"Transcription failed: {transcript.error}")
    exit(1)

print(transcript.text)

for utterance in transcript.utterances:
    print(f"Speaker {utterance.speaker}: {utterance.text}")

Here are helpful things to know about our transcribe method:

  • The SDK handles polling under the hood
  • Transcript is directly accessible via transcript.text
  • English is the default language. We recommend specifying speech_models=["universal-3-pro", "universal-2"] for the highest accuracy
  • We have a cookbook for error handling common errors when using our API.

Installation

python
from deepgram import (
    DeepgramClient,
    PrerecordedOptions,
    FileSource,
)

API_KEY = "YOUR_DG_API_KEY"
deepgram = DeepgramClient(API_KEY)
python
import assemblyai as aai

aai.settings.api_key = "YOUR-API-KEY"
transcriber = aai.Transcriber()

When migrating from Deepgram to AssemblyAI, you'll first need to handle authentication and SDK setup:

Get your API key from your AssemblyAI dashboard
To follow this guide, install AssemblyAI's Python SDK by typing this code into your terminal:
pip install assemblyai

Things to know:

  • Store your API key securely in an environment variable
  • API key authentication works the same across all AssemblyAI SDKs

Audio File Sources

python
# Local Files
AUDIO_FILE = "example.wav"
with open(AUDIO_FILE, "rb") as file:
    buffer_data = file.read()

payload: FileSource = {
    "buffer": buffer_data,
}

options = PrerecordedOptions(
    smart_format=True,
    summarize="v2",
)

file_response = deepgram.listen.rest.v("1").transcribe_file(payload, options)

json = file_response.to_json()

#Public URLs
AUDIO_URL = {
    "url": ""
}

options = PrerecordedOptions(
    smart_format=True,
    summarize="v2"
)

url_response = deepgram.listen.rest.v("1").transcribe_url(AUDIO_URL, options)

json = url_response.to_json()
python
transcriber = aai.Transcriber()

# Local Files
transcript = transcriber.transcribe("./audio.mp3")

# Public URLs
transcript = transcriber.transcribe("")

# S3 files (using pre-signed URLs)
s3_client = boto3.client('s3')
presigned_url = s3_client.generate_presigned_url(
    'get_object',
    Params={'Bucket': 'my-bucket', 'Key': 'audio.mp3'},
    ExpiresIn=3600
)

transcript = transcriber.transcribe(presigned_url)

Here are helpful things to know when migrating your audio input handling:

Adding Features

python
options = PrerecordedOptions(
   model="nova-2",
   smart_format=True,
   diarize=True,
   detect_entities=True
)

response = deepgram.listen.prerecorded.v("1").transcribe_url(AUDIO_URL, options)
python
config = aai.TranscriptionConfig(
    speech_models=["universal-3-pro", "universal-2"],
    language_detection=True,
    speaker_labels=True, # Speaker diarization
    auto_chapters=True, # Auto chapter detection
    entity_detection=True, # Named entity detection
)

transcript = transcriber.transcribe(audio_url, config)

# Access speaker labels
for utterance in transcript.utterances:
    print(f"Speaker {utterance.speaker}: {utterance.text}")

Key differences:

  • Use aai.TranscriptionConfig to specify any extra features that you wish to use
  • The results for Speaker Diarization are stored in transcript.utterances. To see the full transcript response object, refer to our API Reference.
  • Check our documentation for our full list of available features and their parameters