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.2.0.tar.gz (20.6 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.2.0-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for murmr-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b4ce8e86e93ecdcf83bdf1c8d572909b68ec852dfc91fcc501f8671401dc2ac1
MD5 d7ba5fc3dac45d0613d99b9766cdf0ac
BLAKE2b-256 a6a80aa2cb08bf9868ff253e53c041e835d886005db116eac5202adc0c42ae0f

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on christi4nity/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.2.0-py3-none-any.whl.

File metadata

  • Download URL: murmr-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.2 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ef23daf7034819ed09cedfe9ae39e49b2283464d22eb0cdb9a78849876ea66e5
MD5 48edaee5db160698783bd25141591828
BLAKE2b-256 140974b41a6815f0e4ee6d4112a0e88840c7edd6d8b7264e371c9f75881572e0

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on christi4nity/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