Skip to main content

Audio transcriber powered by the ElevenLabs Scribe AI model.

Project description

:musical_note: Pyscribe

A robust tool to transcribe audio (including music) files and URLs using ElevenLabs Scribe AI model.

:clipboard: Requirements

  • 64-bit operating system
  • Python 3.8+ if not using standalone binary
  • ElevenLabs API key (instructions below)

:rocket: Installation

Prebuilt standalone binary (Windows, macOS, Linux)

Download a standalone binary from the latest release. Comes with keyring support.

Install from PyPI

If you don't want to enter your API key every time, the optional keyring dependency allows Pyscribe to securely store it in your system's credential store.

# Recommended: Installation with keyring support
pip install "pyscribest[keyring]"
# Minimal installation without keyring support
pip install pyscribest

Run the tool without installation using uv[^1]

# With keyring support
uvx "pyscribest[keyring]" "path/or/url.mp3"
# Without keyring support
uvx pyscribest "path/or/url.mp3"
pyscribe was taken 🥹

:zap: Usage

[!IMPORTANT]

API Key Configuration

Log in to your ElevenLabs dashboard and create an API key with access to Speech to Text endpoint.

The script looks for the API key in the following order:

  1. Environment Variable: Looks for the ELEVENLABS_API_KEY environment variable.
  2. System Credential Store: Automatically saved to by the other methods if keyring is installed.
  3. Terminal Prompt: If terminal is detected, prompt user for the key without displaying it.
  4. Standard Input: Read one line from sys.stdin.

Basic Transcription

pyscribe "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3"

In the spirit of Unix philosophy only successful transcription prints to sys.stdout. Everything else is written to sys.stderr.
Use your shell's output redirection operator to write transcription to disk.

pyscribe "Never Gonna Give You Up.webm" > lyrics.txt

[!NOTE] python -m pyscribe is available as an alternative if installed via pip.

The pyscribest entrypoint is intended to avoid typing uvx --from pyscribest pyscribe.

CLI Options

  • --full: Insert audio event tags like [laughter].
  • --lang: An ISO-639-1 or ISO-639-3 language code[^2] for improved performance, e.g. de or deu for German.
  • --no-keyring: Avoid reading or writing key to the system keyring.
  • -v, --verbose: Show diagnostic messages.
  • -V, --version: Print program's version and exit.
pyscribe --lang deu --full recording.wav -v

:hammer_and_wrench: Integration

The pyscribe package provides both synchronous and asynchronous interfaces for seamless integration into any project.

Sync

from elevenlabs import ElevenLabs
from pyscribe import transcribe

client = ElevenLabs(api_key="YOUR API KEY")
text = transcribe(client, "path/or/url.mp3")
print(text)

Async

from elevenlabs import AsyncElevenLabs
from pyscribe import atranscribe

client = AsyncElevenLabs(api_key="YOUR API KEY")
text = await atranscribe(client, "path/or/url.mp3")
print(text)

[!TIP] The elevenlabs SDK is included as a dependency; no separate installation is required.

:stop_sign: API Limitations

Concurrency

ElevenLabs imposes limitations on concurrent Speech to Text requests.
For example, the free plan only allows 8 transcription requests at the same time.

File Size

ElevenLabs also imposes different file size limits:

  • Local files — up to 3 GB[^3]
  • Remote HTTPS files — up to 2 GB[^4]

Features

Pyscribe focuses on end users and aims to provide a simple interface for the Scribe model.
As such, this tool does not implement all Scribe features, including but not limited to:

  • Webhook support
  • Word-level timestamps
  • Speaker diarization
  • Output in other formats

[^1]: Documentation for uvx [^2]: Supported Languages [^3]: file Parameter Description [^4]: cloud_storage_url Parameter Description

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyscribest-1.2.0.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyscribest-1.2.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file pyscribest-1.2.0.tar.gz.

File metadata

  • Download URL: pyscribest-1.2.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyscribest-1.2.0.tar.gz
Algorithm Hash digest
SHA256 ea31325899ae45d3bf2afcffa6efc8f2f257b79ac4394280d84ab263d1ffcde8
MD5 0ae1f7c668a30851a3d207c94248528f
BLAKE2b-256 24efbdcfa44a6072b7977589c6a266c9d5d3968cd914c18a99d30aaa9f52ba46

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyscribest-1.2.0.tar.gz:

Publisher: cicd.yml on tooruu/pyscribe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyscribest-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyscribest-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyscribest-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cd5f7efa837f669375b01ea0b0d72baeac68627ac605f6a726e240e6d5e19fa6
MD5 a970c94685c506d84712804da5b67817
BLAKE2b-256 43306c72f280a848de86037721d071d11bf30d77a67a648fa677d1559a94fdd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyscribest-1.2.0-py3-none-any.whl:

Publisher: cicd.yml on tooruu/pyscribe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page