Skip to main content

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 with speaker diarization
result = client.transcribe("meeting.mp3", identify_speakers=True)
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", identify_speakers=True)
print(result.text)

# With timestamps and speakers
for segment in result.segments:
    speaker_info = f"[{segment.speaker}] " if hasattr(segment, 'speaker') and segment.speaker else ""
    print(f"[{segment.start:.1f}s → {segment.end:.1f}s] {speaker_info}{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.nl/ontwikkelaar.

Full API docs: api.murmel.eu/v1/docs

Metadata

Release files for murmel 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for murmel 0.1.1
File Size Uploaded Provenance Actions
murmel-0.1.1.tar.gz 6.9 kB With provenance Details for murmel-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for murmel 0.1.1
File Interpreter ABI Platform Actions
murmel-0.1.1-py3-none-any.whl Python 3 none any Details for murmel-0.1.1-py3-none-any.whl

Total release size: 15.5 kB

Release files / murmel-0.1.1.tar.gz

Download URL murmel-0.1.1.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
896aee56b7b3e74838a3599cf85c357af2b9061d3e5d48ec3d355378807bb3d3
BLAKE2b-256 checksum
How to use checksums
231e75bf9189746e9867df20ea9e1b24f17b5d4b05fb9689d0d210f5c8187cc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.

Transparency log

Release files / murmel-0.1.1-py3-none-any.whl

Download URL murmel-0.1.1-py3-none-any.whl
Size 8.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
46c354f21e2301fcd92e507c6c8f7a74c140c942b1d9f78ded23fcf4f21cc8b4
BLAKE2b-256 checksum
How to use checksums
d6188765a11baed79968e9523c2bd5fda0f4d215cc5c60f62951565803c07766
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.

Transparency log

Security for murmel 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for murmel-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page