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
# or: from audiopod import Client

# 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 (waits for completion by default)
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']}")

# Check status
status = client.stems.status(job["id"])
print(f"Status: {status['status']}")

# 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 (AudioMusic V2)

Generate AI music with AudioMusic V2 — text-to-music, covers, style transfer, audio analysis, and more.
from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

# Simple mode — just describe what you want
song = client.music.simple(
    query="a soft Bengali love song for a quiet evening",
    wait_for_completion=True
)
print(f"Music URL: {song['output_url']}")

# Full control with text2music
song = client.music.generate(
    prompt="upbeat pop, female vocals, catchy melody",
    task="text2music",
    lyrics="[verse]\nSun is shining bright today\n[chorus]\nLet's dance the night away",
    duration=120,
    inference_steps=64,
    guidance_scale=7.0,
    format="flac",
    wait_for_completion=True
)

# Instrumental
instrumental = client.music.instrumental(
    prompt="chill jazz piano with saxophone",
    duration=90,
    wait_for_completion=True
)

# Cover / style transfer
cover = client.music.cover(
    src_audio_url="https://example.com/song.mp3",
    caption="jazz piano version with upright bass",
    audio_cover_strength=0.7,
    wait_for_completion=True
)

# Analyze existing audio
analysis = client.music.analyze(
    audio_url="https://example.com/song.mp3"
)
print(f"BPM: {analysis['bpm']}, Key: {analysis['keyscale']}")

# Extract stems
vocals = client.music.extract_stem(
    src_audio_url="https://example.com/song.mp3",
    track_name="vocals",
    wait_for_completion=True
)
print(f"Vocals URL: {vocals['output_url']}")

# Reference audio for style guidance
ref_song = client.music.reference(
    reference_audio_url="https://example.com/reference.mp3",
    caption="upbeat pop with similar warmth",
    lyrics="[verse]\nHello world",
    wait_for_completion=True
)

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

PyPI Package

View on PyPI

GitHub

Source code

Get API Key

Generate your API key

API Reference

Raw API documentation