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.
Run the tool without installation using uv[^1]
uvx pyscribest "path/or/url.mp3"
Install from PyPI[^2]
pip install pyscribest
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:
- Command-Line Parameter:
--key- Environment Variable:
ELEVENLABS_API_KEY- OS Keyring: Secure credential store (automatically saved if you use the
--keyparameter)
Basic Transcription
pyscribe "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3"
Successful output is always written to sys.stdout. Everything else prints to sys.stderr.
Use your shell's output redirection operator to write to disk.
pyscribe "Never Gonna Give You Up.webm" > lyrics.txt
[!NOTE]
python -m pyscribeis available as an alternative if installed viapip.The
pyscribestentrypoint is intended to avoid typinguvx --from pyscribest pyscribe.
CLI Options
--full: Include this flag to insert audio event tags like[laughter]--lang: An ISO-639-1 or ISO-639-3 language code[^3] for improved performance, e.g.deordeufor German--key: ElevenLabs API key (this will be saved to your keyring for future use)
pyscribe --lang deu --full recording.wav
: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
elevenlabsSDK 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[^4]
- Remote HTTPS files — up to 2 GB[^5]
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]: Project page on PyPI
[^3]: Supported Languages
[^4]: file Parameter Description
[^5]: 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyscribest-1.1.1.tar.gz.
File metadata
- Download URL: pyscribest-1.1.1.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1b709769e18b9ce80198243ae655e654c3412bf8603d794c0f2e74e2df59ff7
|
|
| MD5 |
7b289d9a39be47cc3e34e0c19740acce
|
|
| BLAKE2b-256 |
f7a7d36265cce5f325648ca5829f77623e8eeaa3e4db0a96c238a11d2fa51a05
|
File details
Details for the file pyscribest-1.1.1-py3-none-any.whl.
File metadata
- Download URL: pyscribest-1.1.1-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1958fd8f6e07b1f1b17cebd432c3a16ff5a04c2951a7c12323c304332651de54
|
|
| MD5 |
82659e418607bac9d2ac360e03169c01
|
|
| BLAKE2b-256 |
0bb5e83fe39f6ae8451431eed6d6ff06281a8d5b3ad9de3b52321b9d865ef956
|