Python SDK for the Murmel Speech-to-Text API
Project description
Murmel Python SDK
Official Python client for the Murmel Speech-to-Text API — optimized for Dutch.
Installation
pip install murmel
Quick Start
from murmel import Murmel
client = Murmel(api_key="murmel_sk_...")
# Transcribe an audio file
result = client.transcribe("meeting.mp3")
print(result.text)
Usage
Transcribe Audio
Upload an audio file and get the transcription back directly. Supports WAV, MP3, M4A, WEBM, OGG, FLAC, and more.
# From a file path
result = client.transcribe("interview.mp3")
print(result.text)
# With timestamps
for segment in result.segments:
print(f"[{segment.start:.1f}s → {segment.end:.1f}s] {segment.text}")
# From a file object
with open("audio.wav", "rb") as f:
result = client.transcribe(f)
List Transcriptions
# List recent transcriptions
transcriptions = client.transcriptions.list(limit=10)
for t in transcriptions:
print(f"{t.id}: {t.status} ({t.language})")
# Filter by status
completed = client.transcriptions.list(status="completed")
Get a Transcription
# Get full result by ID
result = client.transcriptions.get("job-id-here")
print(result.text)
print(result.segments)
# Check status only (lightweight)
status = client.transcriptions.status("job-id-here")
print(status.status) # "pending", "processing", "completed", "failed"
Check Usage
usage = client.usage()
print(f"Plan: {usage.plan}")
print(f"Used: {usage.used_minutes:.1f} / {usage.limit_minutes:.0f} min")
print(f"Remaining: {usage.remaining_minutes:.1f} min")
Error Handling
The SDK raises specific exceptions for different error types:
from murmel import Murmel, AuthenticationError, RateLimitError, InvalidRequestError
client = Murmel(api_key="murmel_sk_...")
try:
result = client.transcribe("audio.mp3")
except AuthenticationError:
print("Invalid API key")
except RateLimitError:
print("Monthly usage limit exceeded")
except InvalidRequestError as e:
print(f"Bad request: {e.message}")
Exception hierarchy:
| Exception | HTTP Status | When |
|---|---|---|
AuthenticationError |
401 | Invalid or missing API key |
PermissionDeniedError |
403 | Account inactive, email not verified |
InvalidRequestError |
400, 413 | Unsupported file format, file too large |
NotFoundError |
404 | Transcription not found |
RateLimitError |
429 | Monthly minutes exhausted |
ServerError |
500 | Transcription processing failed |
TimeoutError |
504 | Transcription took too long |
Configuration
client = Murmel(
api_key="murmel_sk_...",
base_url="https://api.murmel.eu", # default
timeout=600, # 10 min default (for long audio)
)
# Use as context manager
with Murmel(api_key="murmel_sk_...") as client:
result = client.transcribe("audio.mp3")
API Reference
Get your API key at app.murmel.eu → Settings → API Keys.
Full API docs: api.murmel.eu/v1/docs
Project details
Release history Release notifications | RSS feed
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 murmel-0.1.0.tar.gz.
File metadata
- Download URL: murmel-0.1.0.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d51d9b995c61910fef30d4227a830c9be82a44d6983c774e0875ed497ad0162
|
|
| MD5 |
06aea29eacf453478e9106d31a5ab7f6
|
|
| BLAKE2b-256 |
8ad926a45d309d9dce708b7f6bbd81c7cebf86c0ac539219734672b92103f280
|
Provenance
The following attestation bundles were made for murmel-0.1.0.tar.gz:
Publisher:
publish.yml on The-AI-Factory/murmel-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
murmel-0.1.0.tar.gz -
Subject digest:
4d51d9b995c61910fef30d4227a830c9be82a44d6983c774e0875ed497ad0162 - Sigstore transparency entry: 1154353588
- Sigstore integration time:
-
Permalink:
The-AI-Factory/murmel-python@42fa1aca915ce2c2ab8310b3ffc48f31f4f865de -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/The-AI-Factory
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@42fa1aca915ce2c2ab8310b3ffc48f31f4f865de -
Trigger Event:
release
-
Statement type:
File details
Details for the file murmel-0.1.0-py3-none-any.whl.
File metadata
- Download URL: murmel-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a0d55ecb6aeb61a920fd3a8a9afabc25cf5d63d10c79fb3b44ed6fb35613de3
|
|
| MD5 |
5dd940197fa3a6f34aa3b64d3fd68edc
|
|
| BLAKE2b-256 |
2d721ecf6b95c3b451ee7cfb84ba51162c510cfec79bfa9d411c3118ab1a3cea
|
Provenance
The following attestation bundles were made for murmel-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on The-AI-Factory/murmel-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
murmel-0.1.0-py3-none-any.whl -
Subject digest:
5a0d55ecb6aeb61a920fd3a8a9afabc25cf5d63d10c79fb3b44ed6fb35613de3 - Sigstore transparency entry: 1154353591
- Sigstore integration time:
-
Permalink:
The-AI-Factory/murmel-python@42fa1aca915ce2c2ab8310b3ffc48f31f4f865de -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/The-AI-Factory
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@42fa1aca915ce2c2ab8310b3ffc48f31f4f865de -
Trigger Event:
release
-
Statement type: