• Stars
    star
    167
  • Rank 226,635 (Top 5 %)
  • Language
    Python
  • License
    MIT License
  • Created over 3 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Official Python SDK for Deepgram's automated speech recognition APIs.

Deepgram Python SDK

Discord GitHub Workflow Status PyPI Contributor Covenant

Official Python SDK for Deepgram. Power your apps with world-class speech and Language AI models.

Documentation

You can learn more about the Deepgram API at developers.deepgram.com.

Getting an API Key

🔑 To access the Deepgram API you will need a free Deepgram API Key.

Requirements

Python (version ^3.10)

Installation

To install the latest version available (which will guarantee change over time):

pip install deepgram-sdk

If you are going to write an application to consume this SDK, it's highly recommended and a programming staple to pin to at least a major version of an SDK (ie ==2.*) or with due diligence, to a minor and/or specific version (ie ==2.1.* or ==2.12.0, respectively). If you are unfamiliar with semantic versioning or semver, it's a must-read.

In a requirements.txt file, pinning to a major (or minor) version, like if you want to stick to using the SDK v2.12.0 release, that can be done like this:

deepgram-sdk==2.*

Or using pip:

pip install deepgram-sdk==2.*

Pinning to a specific version can be done like this in a requirements.txt file:

deepgram-sdk==2.12.0

Or using pip:

pip install deepgram-sdk==2.12.0

We guarantee that major interfaces will not break in a given major semver (ie 2.* release). However, all bets are off moving from a 2.* to 3.* major release. This follows standard semver best-practices.

Quickstarts

This SDK aims to reduce complexity and abtract/hide some internal Deepgram details that clients shouldn't need to know about. However you can still tweak options and settings if you need.

PreRecorded Audio Transcription Quickstart

You can find a walkthrough on our documentation site. Transcribing Pre-Recorded Audio can be done using the following sample code:

AUDIO_URL = {
    "url": "https://static.deepgram.com/examples/Bueller-Life-moves-pretty-fast.wav"
}

# STEP 1 Create a Deepgram client using the API key from environment variables
deepgram: DeepgramClient = DeepgramClient("", ClientOptionsFromEnv())

# STEP 2 Call the transcribe_url method on the prerecorded class
options: PrerecordedOptions = PrerecordedOptions(
    model="nova-2",
    smart_format=True,
)
response = deepgram.listen.prerecorded.v("1").transcribe_url(AUDIO_URL, options)
print(f"response: {response}\n\n")

Live Audio Transcription Quickstart

You can find a walkthrough on our documentation site. Transcribing Live Audio can be done using the following sample code:

deepgram: DeepgramClient = DeepgramClient()

dg_connection = deepgram.listen.live.v("1")

def on_open(self, open, **kwargs):
    print(f"\n\n{open}\n\n")

def on_message(self, result, **kwargs):
    sentence = result.channel.alternatives[0].transcript
    if len(sentence) == 0:
        return
    print(f"speaker: {sentence}")

def on_metadata(self, metadata, **kwargs):
    print(f"\n\n{metadata}\n\n")

def on_speech_started(self, speech_started, **kwargs):
    print(f"\n\n{speech_started}\n\n")

def on_utterance_end(self, utterance_end, **kwargs):
    print(f"\n\n{utterance_end}\n\n")

def on_error(self, error, **kwargs):
    print(f"\n\n{error}\n\n")

def on_close(self, close, **kwargs):
    print(f"\n\n{close}\n\n")

dg_connection.on(LiveTranscriptionEvents.Open, on_open)
dg_connection.on(LiveTranscriptionEvents.Transcript, on_message)
dg_connection.on(LiveTranscriptionEvents.Metadata, on_metadata)
dg_connection.on(LiveTranscriptionEvents.SpeechStarted, on_speech_started)
dg_connection.on(LiveTranscriptionEvents.UtteranceEnd, on_utterance_end)
dg_connection.on(LiveTranscriptionEvents.Error, on_error)
dg_connection.on(LiveTranscriptionEvents.Close, on_close)

options: LiveOptions = LiveOptions(
    model="nova-2",
    punctuate=True,
    language="en-US",
    encoding="linear16",
    channels=1,
    sample_rate=16000,
    # To get UtteranceEnd, the following must be set:
    interim_results=True,
    utterance_end_ms="1000",
    vad_events=True,
)
dg_connection.start(options)

# create microphone
microphone = Microphone(dg_connection.send)

# start microphone
microphone.start()

# wait until finished
input("Press Enter to stop recording...\n\n")

# Wait for the microphone to close
microphone.finish()

# Indicate that we've finished
dg_connection.finish()

print("Finished")

Examples

There are examples for every API call in this SDK. You can find all of these examples in the examples folder at the root of this repo.

These examples provide:

To run each example set the DEEPGRAM_API_KEY as an environment variable, then cd into each example folder and execute the example: go run main.py.

Development and Contributing

Interested in contributing? We ❤️ pull requests!

To make sure our community is safe for all, be sure to review and agree to our Code of Conduct. Then see the Contribution guidelines for more information.

Prerequisites

In order to develop new features for the SDK itself, you first need to uninstall any previous installation of the deepgram-sdk and then install/pip the dependencies contained in the requirements.txt then instruct python (via pip) to use the SDK by installing it locally.

From the root of the repo, that would entail:

pip uninstall deepgram-sdk
pip install -r requirements.txt
pip install -e .

Testing

If you are looking to contribute or modify pytest code, then you need to install the following dependencies:

pip install -r requirements-dev.txt

Getting Help

We love to hear from you so if you have questions, comments or find a bug in the project, let us know! You can either:

More Repositories

1

kur

Descriptive Deep Learning
Python
813
star
2

sidomo

Simple Docker Python Module
Python
312
star
3

deepgram-js-sdk

Official JavaScript SDK for Deepgram's automated speech recognition APIs.
TypeScript
122
star
4

live-streaming-starter-kit

Python
31
star
5

deepgram-go-sdk

Go SDK for Deepgram's automated speech recognition APIs.
Go
28
star
6

deepgram-dotnet-sdk

.NET SDK for Deepgram's automated speech recognition APIs.
C#
25
star
7

deepgram-python-captions

This package is the Python implementation of Deepgram's WebVTT and SRT formatting. Given a transcription, this package can return a valid string to store as WebVTT or SRT caption files.
Python
15
star
8

dgmrcp

UniMRCP server plugin for Deepgram Brain
Rust
11
star
9

self-hosted-resources

Official Deepgram resources for deploying Deepgram services in a self-hosted environment
Smarty
8
star
10

deepgram-js-captions

This package is the JavaScript implementation of Deepgram's WebVTT and SRT formatting. Given a transcription, this package can return a valid string to store as WebVTT or SRT caption files.
TypeScript
8
star
11

public-code-examples

Code samples lovingly curated by Deepgram
Python
6
star
12

web-next

MDX
5
star
13

deepgram-brain-python

Python API wrapper for the Deepgram API. Oh yes, it's cool. You should get it.
Python
4
star
14

community

Community forum for Deepgram
JavaScript
3
star
15

suricata

Suricata (NIDS) in a Docker container
Dockerfile
2
star
16

slack-support-bot

Slack Event Listener and Webhook Handler for the Deepgram Slack Support Bot.
Python
2
star
17

median-streaming-latency

Python
2
star
18

UnityDeepgramDemo

C#
2
star
19

SpookySpeechSpells

GDScript
2
star
20

real-time-voice-bot

JavaScript
2
star
21

amazon-connect-integration

Enables transcribing Amazon Connect calls with Deepgram
Java
2
star
22

deepgram-transcription-debugger

JavaScript
2
star
23

brain-search-example

Example application that searches audio files in a directory
Python
1
star
24

dpgram-short-urls

TypeScript
1
star
25

deepgram-sdk-architecture

Pseudo-code and comments to support the building of our SDKs
1
star
26

deepgram-vapi-call-sample

JavaScript
1
star
27

oss-repo-template

A repository template for open-source demos, guides and sample apps.
1
star