Skip to main content

Python SDK for the murmr TTS API

Project description

murmr

Python SDK for the murmr TTS API. Async-first with full sync support.

pip install murmr

Quick Start

Voice Design (describe any voice in natural language)

from murmr import MurmrClient

client = MurmrClient(api_key="murmr_sk_live_...")

# Generate speech with a voice description
wav = client.voices.design(
    input="Hello, welcome to murmr!",
    voice_description="A warm, friendly female voice with a slight British accent",
)

with open("output.wav", "wb") as f:
    f.write(wav)

Saved Voices (batch via RunPod Serverless)

# Submit a batch job
job = client.speech.create(input="Hello world", voice="voice_abc123")

# Wait for completion
result = client.speech.create_and_wait(input="Hello world", voice="voice_abc123")
audio = result.audio_bytes  # decoded WAV

Streaming

# Stream PCM audio chunks
with client.speech.stream(input="Hello world", voice="voice_abc123") as stream:
    for chunk in stream:
        pcm = chunk.audio_bytes  # 24kHz mono 16-bit PCM
        if chunk.done:
            break

Async

import asyncio
from murmr import AsyncMurmrClient

async def main():
    async with AsyncMurmrClient(api_key="murmr_sk_live_...") as client:
        wav = await client.voices.design(
            input="Hello from async!",
            voice_description="A deep male voice",
        )

asyncio.run(main())

Long-Form Audio

# Automatically chunks, retries, and concatenates
result = client.speech.create_long_form(
    input=very_long_text,
    voice="voice_abc123",
    on_progress=lambda current, total, pct: print(f"{pct}%"),
)

with open("long_form.wav", "wb") as f:
    f.write(result.audio)

API Reference

Clients

Class Description
MurmrClient(api_key=...) Sync client (context manager)
AsyncMurmrClient(api_key=...) Async client (async context manager)

Speech (client.speech)

Method Returns Description
create(input, voice, ...) AsyncJobResponse Submit batch job
create_and_wait(input, voice, ...) JobStatus Submit and poll until done
stream(input, voice, ...) Context manager yielding AudioStreamChunk Stream PCM chunks
create_long_form(input, voice, ...) LongFormResult Chunk + concat long text

Voices (client.voices)

Method Returns Description
design(input, voice_description, ...) bytes (WAV) Generate with voice description
design_stream(input, voice_description, ...) Context manager yielding AudioStreamChunk Stream voice design

Jobs (client.jobs)

Method Returns Description
get(job_id) JobStatus Get job status
wait_for_completion(job_id, ...) JobStatus Poll until done/failed

Text Formatting

Newline characters in your input text affect prosody:

  • \n (single newline) creates a sentence-level breath pause
  • \n\n (double newline) creates a paragraph-level pause with prosodic reset
  • No newlines in long text produces rushed, flat delivery

Best practice: Insert \n between sentences and \n\n between paragraphs. Avoid text with hard line wraps every 60-80 characters (e.g., from PDFs or terminals) — this produces choppy output.

See the Text Formatting Guide for details and preprocessing examples.

Supported Languages

Chinese, English, Japanese, Korean, German, French, Russian, Portuguese, Spanish, Italian

License

MIT

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

murmr-0.4.0.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

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

murmr-0.4.0-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file murmr-0.4.0.tar.gz.

File metadata

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

File hashes

Hashes for murmr-0.4.0.tar.gz
Algorithm Hash digest
SHA256 16e0915933c34e755f3fb66ab1568afc06691a0e7376607dc02ea4f0e7a2dd5e
MD5 5063814a523c0f45ea7f95b1e8d29c33
BLAKE2b-256 019267944b7a5b0d629c08f208ec7d58576ba81a562e899035819ae97128e57a

See more details on using hashes here.

Provenance

The following attestation bundles were made for murmr-0.4.0.tar.gz:

Publisher: publish.yml on murmr-tts/murmr-python

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

File details

Details for the file murmr-0.4.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for murmr-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe1a8e1a1d261962a598be73d2b095c9f44510e8a1ba8c380bd34748392934a3
MD5 84965844e8c47a893296667d82af75cc
BLAKE2b-256 7768a8e9ad153ea64c6805365c04fcbf2bb9d084cceed7793e325c8442443f4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for murmr-0.4.0-py3-none-any.whl:

Publisher: publish.yml on murmr-tts/murmr-python

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