Skip to main content

AudioPod Python SDK

Official Python SDK for AudioPod AI — an all-in-one AI audio platform: music generation, text-to-speech (with directing), voice cloning, stem separation, transcription, speaker separation, noise reduction, translation, and audiobook production.

This SDK is the Platform (API + Agent) surface of AudioPod — the developer entry point alongside the Node.js SDK, the CLI, and the MCP server. Start free — mint a key, get free credits to try, no card required. API usage is pay-as-you-go ($1 = 7,500 credits, credits never expire). Get a key at audiopod.ai/dashboard/account/api-keys.

Installation

pip install audiopod

Quick Start

from audiopod import Client

# Reads AUDIOPOD_API_KEY, or pass api_key="ap_your_api_key"
client = Client()

# Text-to-speech
job = client.voice.generate_speech(
    voice_id=368,
    text="Welcome to AudioPod.",
    wait_for_completion=True,
)
print(job["output_url"])

Text-to-Speech

500+ voices across 85+ languages, with inline directing written straight into the text.

# Emotion, non-verbal sounds, pauses, and pronunciation — all inline in `text`
job = client.voice.generate_speech(
    voice_id=368,
    text='[warm, unhurried] Good evening. [breathe] Tonight, a story. '
         '<break time="600ms"/> It begins in Worcester /ˈwʊstər/.',
    wait_for_completion=True,
)
  • Emotion / delivery — a leading bracket per segment: [whispering, tense] …
  • Non-verbal sounds[laugh] [sigh] [clear throat] [breathe] [cough] [yawn] [chuckle] [gasp] [groan]
  • Pauses<break time="500ms"/> (≤10s each, ≤20 per request)
  • Pronunciation — inline IPA between slashes: Worcester /ˈwʊstər/

Word-level timestamps (for follow-along / karaoke UIs) and Voice Design (create a voice from a text description) are available via the REST API — see the docs.

Voice Cloning

# Instant clone from a 5–30s reference clip
voice = client.voice.create_voice(name="My Voice", audio_file="sample.wav")

# Reuse the clone for TTS
job = client.voice.generate_speech(
    voice_id=voice["id"], text="Now in my own voice.", wait_for_completion=True
)

Voice conversion (voice-to-voice) is available via the REST API — see Voice Changer.

Music Generation

# Duration is not tier-capped (10s–10min)
result = client.music.generate(
    prompt="upbeat synthwave, 120 BPM, driving bassline",
    duration=60,
    wait_for_completion=True,
)

Stem Separation

# Extract stems (vocals, drums, bass, other)
job = client.stem_extraction.extract_stems(
    audio_file="song.mp3",
    stem_types=["vocals", "drums", "bass", "other"],
    wait_for_completion=True,
)
for stem, url in job["download_urls"].items():
    print(f"{stem}: {url}")

Audio to MIDI

Convert a mix — or stems you already separated — into MIDI (bass, vocals, piano by default; guitar is opt-in/experimental). It's a starting-point transcription: tidy timing/lengths in your DAW, drums aren't transcribed yet, and dynamics are approximate.

# Standalone: split + transcribe in one call (default stems: bass, vocals, piano)
job = client.midi.convert(file="song.mp3")
print(job["merged_midi_url"])

# Add-on: transcribe stems you already separated (bills the add-on rate only)
job = client.midi.convert_from_stem_job(stem_job_id=job["id"])
for stem, url in (job["midi_urls"] or {}).items():
    print(f"{stem}: {url}")

Transcription

# Speaker labels + word timestamps
result = client.transcription.transcribe(
    audio_file="podcast.mp3",
    speaker_diarization=True,
    wait_for_completion=True,
)
print(result["transcript"])

Premium-accuracy transcription and real-time streaming are also supported — see Speech-to-Text.

Other Audio Services

# Speaker separation / diarization
speakers = client.speaker.diarize(audio_file="interview.wav", wait_for_completion=True)

# Noise reduction
clean = client.denoiser.denoise(audio_file="noisy.mp3", mode="studio", wait_for_completion=True)

# Translate / dub speech into another language
dubbed = client.translation.translate(audio_file="clip.mp3", target_language="es")

# Audiobook production (manuscript → ACX-ready export)
project = client.audiobook.create_project(title="My Book", author="Jane Doe")

OpenAI-Compatible Endpoints

Already have OpenAI-shaped audio code? Point it at AudioPod — set the client base URL to https://api.audiopod.ai/api/v1 and Authorization: Bearer ap_.... The /audio/speech, /audio/transcriptions, and /audio/translations endpoints behave like their OpenAI counterparts. See OpenAI compatibility.

API Wallet

# Balance and cost estimate
balance = client.wallet.get_balance()
estimate = client.wallet.estimate_cost("text_to_speech", duration_seconds=180)

# Top up
checkout = client.wallet.create_topup_checkout(amount_cents=2500)  # $25
print(f"Pay at: {checkout['url']}")

Async Support

import asyncio
from audiopod import AsyncClient

async def main():
    async with AsyncClient() as client:
        balance = await client.wallet.get_balance()
        print(f"Balance: {balance['balance_usd']}")

asyncio.run(main())

Error Handling

from audiopod import Client
from audiopod.exceptions import (
    AuthenticationError,
    InsufficientBalanceError,
    RateLimitError,
    APIError,
)

try:
    client = Client()
    job = client.voice.generate_speech(voice_id=368, text="Hello")
except AuthenticationError:
    print("Invalid API key")
except InsufficientBalanceError as e:
    print(f"Need to top up: required {e.required_cents} cents")
except RateLimitError:
    print("Rate limit exceeded, try again later")
except APIError as e:
    print(f"API error ({e.status_code}): {e}")

Documentation

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

audiopod-2.8.2.tar.gz (45.5 kB view details)

Uploaded Source

Built Distribution

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

audiopod-2.8.2-py3-none-any.whl (54.1 kB view details)

Uploaded Python 3

File details

Details for the file audiopod-2.8.2.tar.gz.

File metadata

  • Download URL: audiopod-2.8.2.tar.gz
  • Upload date:
  • Size: 45.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for audiopod-2.8.2.tar.gz
Algorithm Hash digest
SHA256 fc1a343bbcfa3b229a3e64a9eb3d7fc8851a593905df44f57e96c71b2e1c2062
MD5 6e8f6f6b28b2c2fad2563b2f86ffe5b3
BLAKE2b-256 e63401b2409023581f8b9505e233fbd2e401f10a4c70a342fb6356ee9f7b1b28

See more details on using hashes here.

File details

Details for the file audiopod-2.8.2-py3-none-any.whl.

File metadata

  • Download URL: audiopod-2.8.2-py3-none-any.whl
  • Upload date:
  • Size: 54.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for audiopod-2.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f94098d042201cdd9b14ae5b1478c1a5ebf99b2bc6be49a4b0388d154a8b60c1
MD5 2d1b7114870370a7daa1f07ffdb9bb83
BLAKE2b-256 784cab9fd8c223691246853db6f9ee7b2c2a6d311d80f691400f81ff18fbdbd2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page