Skip to main content
PyPI version Python 3.8+

Installation

pip install audiopod

Quick Start

from audiopod import AudioPod

# Initialize client
client = AudioPod(api_key="ap_your_api_key")

# Separate audio into 6 stems
result = client.stems.separate(
    url="https://youtube.com/watch?v=VIDEO_ID",
    mode="six"
)

# Download stems
for stem, url in result["download_urls"].items():
    print(f"{stem}: {url}")

Authentication

from audiopod import AudioPod

# Method 1: Pass API key directly
client = AudioPod(api_key="ap_your_api_key")

# Method 2: Use environment variable (recommended)
# Set AUDIOPOD_API_KEY environment variable, then:
client = AudioPod()

Stem Separation

Extract individual audio components from mixed recordings.

Available Modes

ModeStemsOutput
single1Specified stem only (vocals, drums, bass, guitar, piano, other)
two2Vocals + Instrumental
four4Vocals, Drums, Bass, Other
six6Vocals, Drums, Bass, Guitar, Piano, Other
producer8+ Kick, Snare, Hihat
studio12Full production toolkit
mastering16Maximum detail

Examples

from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

# Six-stem separation from YouTube
result = client.stems.separate(
    url="https://youtube.com/watch?v=VIDEO_ID",
    mode="six"
)
print(result["download_urls"])

# From local file
result = client.stems.separate(
    file="./song.mp3",
    mode="four"
)

# Extract only vocals
result = client.stems.separate(
    url="https://youtube.com/watch?v=VIDEO_ID",
    mode="single",
    stem="vocals"
)

# Async job handling (for more control)
job = client.stems.extract(
    url="https://youtube.com/watch?v=VIDEO_ID",
    mode="six"
)
print(f"Job ID: {job['id']}")

# Wait for completion
result = client.stems.wait_for_completion(job["id"])

# Get available modes
modes = client.stems.modes()
for m in modes["modes"]:
    print(f"{m['mode']}: {m['description']}")

Transcription

Convert audio to text with speaker diarization.
from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

# From URL
job = client.transcription.create(url="https://...")
result = client.transcription.wait_for_completion(job["id"])
print(result["transcript"])

# From file
job = client.transcription.create(file="./audio.mp3")
result = client.transcription.wait_for_completion(job["id"])

Voice Cloning and TTS

Create custom voices and generate speech.
from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

# Clone a voice from audio sample
voice = client.voice.clone(
    file="./sample.wav",
    name="My Voice"
)
print(f"Voice ID: {voice['id']}")

Music Generation

Generate AI music from text prompts.
from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

# Generate music
song = client.music.generate(
    prompt="upbeat electronic dance music with heavy bass"
)
print(f"Music URL: {song['output_url']}")

Noise Reduction

Clean up audio by removing background noise.
from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

# Denoise audio file
clean = client.denoiser.denoise(file="./noisy.wav")
print(f"Clean audio: {clean['output_url']}")

Speaker Separation

Identify and separate multiple speakers.
from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

# Diarize speakers
speakers = client.speaker.diarize(url="https://...")
print(f"Found {len(speakers['segments'])} speaker segments")

API Wallet

Check balance and manage billing.
from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

# Check balance
balance = client.wallet.balance()
print(f"Balance: {balance['balance_usd']}")

# Estimate cost before processing
estimate = client.wallet.estimate("stem_extraction", duration_seconds=180)
print(f"Estimated cost: {estimate['cost_usd']}")

# Get usage history
usage = client.wallet.usage()
for log in usage["logs"]:
    print(f"{log['service_type']}: {log['amount_usd']}")

Error Handling

from audiopod import AudioPod, AuthenticationError, InsufficientBalanceError

try:
    client = AudioPod(api_key="ap_...")
    result = client.stems.separate(url="...", mode="six")
except AuthenticationError:
    print("Invalid API key")
except InsufficientBalanceError as e:
    print(f"Need more credits. Required: {e.required_cents} cents")
except ValueError as e:
    print(f"Invalid input: {e}")

Environment Variables

export AUDIOPOD_API_KEY="ap_your_api_key"
# Client reads from env automatically
from audiopod import AudioPod
client = AudioPod()

Resources