# AudioPod Python SDK
The official Python SDK for the AudioPod API - Professional Audio Processing powered by AI.
[](https://badge.fury.io/py/audiopod)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
## Features
- 🎵 **Music Generation** - Create music from text prompts, lyrics, or audio samples
- 🎤 **Voice Cloning** - Clone voices from audio samples and generate speech
- 📝 **Transcription** - Convert speech to text with speaker diarization
- 🌍 **Translation** - Translate audio and video content between languages
- 🎬 **Karaoke Generation** - Create karaoke videos with synchronized lyrics
- 🔊 **Audio Enhancement** - Denoise and improve audio quality
- 👥 **Speaker Analysis** - Identify and separate speakers in audio
- 💰 **Credit Management** - Track usage and manage API credits
## Installation
```bash
pip install audiopod
```
## Quick Start
### Authentication
Get your API key from the [AudioPod Dashboard](https://app.audiopod.ai/dashboard) and set it as an environment variable:
```bash
export AUDIOPOD_API_KEY="ap_your_api_key_here"
```
Or pass it directly to the client:
```python
import audiopod
client = audiopod.Client(api_key="ap_your_api_key_here")
```
### Basic Usage
#### Voice Generation (Unified TTS & Cloning)
```python
import audiopod
# Initialize client
client = audiopod.Client()
# Generate voice using file cloning (unified approach)
job = client.voice.generate_voice(
text="Hello! This is voice generation using a cloned voice.",
voice_file="path/to/voice_sample.wav", # For voice cloning
language="en",
audio_format="mp3",
generation_params={
"speed": 1.0
},
wait_for_completion=True
)
print(f"Generated audio URL: {job.output_url}")
# Generate speech with existing voice profile (unified approach)
speech = client.voice.generate_voice(
text="Hello from my voice profile!",
voice_id="voice-profile-id", # For existing voice profiles
language="en",
audio_format="mp3",
generation_params={
"speed": 1.0
},
wait_for_completion=True
)
# Backward compatibility methods (deprecated - use generate_voice instead)
legacy_clone = client.voice.clone_voice(
voice_file="path/to/voice_sample.wav",
text="Hello! This is a cloned voice speaking.",
language="en",
wait_for_completion=True
)
```
#### Music Generation
```python
# Generate music from text
music_job = client.music.generate_music(
prompt="upbeat electronic dance music with heavy bass",
duration=120.0, # 2 minutes
wait_for_completion=True
)
print(f"Generated music URL: {music_job.output_url}")
```
#### Audio Transcription
```python
# Transcribe audio with speaker diarization
transcript = client.transcription.transcribe_audio(
audio_file="path/to/audio.mp3",
language="en",
enable_speaker_diarization=True,
wait_for_completion=True
)
print(f"Transcript: {transcript.transcript}")
print(f"Detected {len(transcript.segments)} speakers")
```
#### Speech-to-Speech Translation
```python
# Translate speech while preserving voice characteristics
translation = client.translation.translate_speech(
audio_file="path/to/english_audio.wav",
target_language="es", # Spanish
source_language="en", # English (optional - auto-detect)
wait_for_completion=True
)
print(f"Translated audio URL: {translation.translated_audio_url}")
# Or translate from URL
url_translation = client.translation.translate_speech(
url="https://example.com/audio.mp3",
target_language="fr", # French
wait_for_completion=True
)
```
### Async Support
The SDK supports async/await for better performance:
```python
import asyncio
import audiopod
async def main():
async with audiopod.AsyncClient() as client:
# All the same methods are available with async support
job = await client.voice.clone_voice(
voice_file="voice.wav",
text="Async voice cloning!",
wait_for_completion=True
)
print(f"Async result: {job['output_url']}")
asyncio.run(main())
```
### Advanced Examples
#### Create Voice Profile for Reuse
```python
# Create a reusable voice profile
voice_profile = client.voice.create_voice_profile(
name="My Custom Voice",
voice_file="voice_sample.wav",
description="A professional voice for narration",
wait_for_completion=True
)
# Use the voice profile for speech generation (unified approach - recommended)
speech = client.voice.generate_voice(
text="This uses my custom voice profile with the unified method!",
voice_id=voice_profile.id,
language="en",
audio_format="mp3",
generation_params={
"speed": 1.0
},
wait_for_completion=True
)
# Legacy method (still works - uses generate_voice internally)
legacy_speech = client.voice.generate_speech(
voice_id=voice_profile.id,
text="This uses the legacy method.",
wait_for_completion=True
)
```
#### Batch Processing
```python
# Process multiple files
audio_files = ["file1.mp3", "file2.wav", "file3.m4a"]
jobs = []
for audio_file in audio_files:
job = client.transcription.transcribe_audio(
audio_file=audio_file,
language="en"
)
jobs.append(job)
# Wait for all jobs to complete
for job in jobs:
completed_job = client.transcription.get_transcription_job(job.id)
while completed_job.job.status != "completed":
time.sleep(5)
completed_job = client.transcription.get_transcription_job(job.id)
print(f"Transcript for {job.id}: {completed_job.transcript}")
```
#### Music Generation with Custom Parameters
```python
# Generate rap music with specific parameters
rap_job = client.music.generate_rap(
lyrics="""
Started from the bottom now we're here
Building dreams with every single year
AI music generation so clear
AudioPod making magic appear
""",
style="modern",
tempo=120,
wait_for_completion=True
)
# Share the generated music
share_result = client.music.share_music_track(
job_id=rap_job.job.id,
platform="social",
message="Check out this AI-generated rap!"
)
print(f"Shareable URL: {share_result['share_url']}")
```
#### Karaoke Video Generation
```python
# Generate karaoke video from YouTube URL
karaoke_job = client.karaoke.generate_karaoke(
youtube_url="https://www.youtube.com/watch?v=example",
video_style="modern",
wait_for_completion=True
)
print(f"Karaoke video URL: {karaoke_job.result['karaoke_video_path']}")
```
## Error Handling
```python
import audiopod
from audiopod.exceptions import (
AudioPodError,
AuthenticationError,
RateLimitError,
ValidationError,
ProcessingError
)
try:
client = audiopod.Client(api_key="invalid_key")
job = client.voice.clone_voice("voice.wav", "Test text")
except AuthenticationError:
print("Invalid API key")
except RateLimitError as e:
print(f"Rate limit exceeded. Retry after: {e.retry_after} seconds")
except ValidationError as e:
print(f"Invalid input: {e.message}")
except ProcessingError as e:
print(f"Processing failed: {e.message}")
except AudioPodError as e:
print(f"General API error: {e.message}")
```
## Credit Management
```python
# Check credit balance
credits = client.credits.get_credit_balance()
print(f"Available credits: {credits.total_available_credits}")
print(f"Next reset: {credits.next_reset_date}")
# Get usage history
usage = client.credits.get_usage_history()
for record in usage:
print(f"Service: {record['service_type']}, Credits: {record['credits_used']}")
# Get credit multipliers
multipliers = client.credits.get_credit_multipliers()
print(f"Voice cloning: {multipliers['voice_cloning']} credits/second")
```
## Configuration
### Environment Variables
- `AUDIOPOD_API_KEY`: Your AudioPod API key
- `AUDIOPOD_BASE_URL`: Custom API base URL (optional)
- `AUDIOPOD_TIMEOUT`: Request timeout in seconds (default: 30)
### Client Configuration
```python
client = audiopod.Client(
api_key="your_api_key",
base_url="https://api.audiopod.ai", # Custom base URL
timeout=60, # 60 second timeout
max_retries=5, # Retry failed requests
verify_ssl=True, # SSL verification
debug=True # Enable debug logging
)
```
## API Reference
### Client Classes
- `audiopod.Client`: Synchronous client
- `audiopod.AsyncClient`: Asynchronous client
### Services
- `client.voice`: **Voice generation operations** (unified TTS & cloning using `generate_voice()`)
- `client.music`: Music generation and editing
- `client.transcription`: Speech-to-text transcription
- `client.translation`: Audio/video translation
- `client.speaker`: Speaker analysis and diarization
- `client.denoiser`: Audio denoising and enhancement
- `client.karaoke`: Karaoke video generation
- `client.credits`: Credit management and usage tracking
#### Voice Service Methods
**Recommended (Unified Approach):**
- `client.voice.generate_voice()` - Generate speech with voice file (cloning) or voice ID (TTS)
**Legacy Methods (Backward Compatibility):**
- `client.voice.clone_voice()` - Clone voice from audio file (deprecated, uses `generate_voice` internally)
- `client.voice.generate_speech()` - Generate speech with voice profile (deprecated, uses `generate_voice` internally)
**Voice Management:**
- `client.voice.create_voice_profile()` - Create reusable voice profiles
- `client.voice.list_voice_profiles()` - List available voice profiles
- `client.voice.delete_voice_profile()` - Delete voice profiles
### Models
- `Job`: Base job information and status
- `VoiceProfile`: Voice profile details
- `TranscriptionResult`: Transcription results and metadata
- `MusicGenerationResult`: Music generation results
- `TranslationResult`: Translation job results
- `CreditInfo`: User credit information
## CLI Usage
The SDK includes a command-line interface:
```bash
# Check API status
audiopod health
# Get credit balance
audiopod credits balance
# Clone a voice
audiopod voice clone voice.wav "Hello world!" --language en
# Generate music
audiopod music generate "upbeat electronic music" --duration 60
# Transcribe audio
audiopod transcription transcribe audio.mp3 --language en
```
## Requirements
- Python 3.8+
- Active AudioPod account with API access
- Valid API key
## Support
- 📖 [API Reference](https://docs.audiopod.ai)
- 💬 [Discord Community](https://discord.gg/audiopod)
- 📧 [Email Support](mailto:support@audiopod.ai)
- 🐛 [Bug Reports](https://github.com/AudiopodAI/audiopod)
## License
This SDK is released under the MIT License. See [LICENSE](LICENSE) for details.
---
Made with ❤️ by the AudioPod team
Raw data
{
"_id": null,
"home_page": "https://github.com/audiopod-ai/audiopod-python",
"name": "audiopod",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "audio, processing, ai, voice, cloning, transcription, translation, music, generation, denoising, api, sdk",
"author": "AudioPod AI",
"author_email": "AudioPod AI <support@audiopod.ai>",
"download_url": "https://files.pythonhosted.org/packages/b0/54/0f245c133e75e17774fae4682e6290b09825351993f95ca42c3a574f10e9/audiopod-1.2.0.tar.gz",
"platform": null,
"description": "# AudioPod Python SDK\n\nThe official Python SDK for the AudioPod API - Professional Audio Processing powered by AI.\n\n[](https://badge.fury.io/py/audiopod)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n\n## Features\n\n- \ud83c\udfb5 **Music Generation** - Create music from text prompts, lyrics, or audio samples\n- \ud83c\udfa4 **Voice Cloning** - Clone voices from audio samples and generate speech\n- \ud83d\udcdd **Transcription** - Convert speech to text with speaker diarization\n- \ud83c\udf0d **Translation** - Translate audio and video content between languages\n- \ud83c\udfac **Karaoke Generation** - Create karaoke videos with synchronized lyrics\n- \ud83d\udd0a **Audio Enhancement** - Denoise and improve audio quality\n- \ud83d\udc65 **Speaker Analysis** - Identify and separate speakers in audio\n- \ud83d\udcb0 **Credit Management** - Track usage and manage API credits\n\n## Installation\n\n```bash\npip install audiopod\n```\n\n## Quick Start\n\n### Authentication\n\nGet your API key from the [AudioPod Dashboard](https://app.audiopod.ai/dashboard) and set it as an environment variable:\n\n```bash\nexport AUDIOPOD_API_KEY=\"ap_your_api_key_here\"\n```\n\nOr pass it directly to the client:\n\n```python\nimport audiopod\n\nclient = audiopod.Client(api_key=\"ap_your_api_key_here\")\n```\n\n### Basic Usage\n\n#### Voice Generation (Unified TTS & Cloning)\n\n```python\nimport audiopod\n\n# Initialize client\nclient = audiopod.Client()\n\n# Generate voice using file cloning (unified approach)\njob = client.voice.generate_voice(\n text=\"Hello! This is voice generation using a cloned voice.\",\n voice_file=\"path/to/voice_sample.wav\", # For voice cloning\n language=\"en\",\n audio_format=\"mp3\",\n generation_params={\n \"speed\": 1.0\n },\n wait_for_completion=True\n)\n\nprint(f\"Generated audio URL: {job.output_url}\")\n\n# Generate speech with existing voice profile (unified approach)\nspeech = client.voice.generate_voice(\n text=\"Hello from my voice profile!\",\n voice_id=\"voice-profile-id\", # For existing voice profiles\n language=\"en\",\n audio_format=\"mp3\",\n generation_params={\n \"speed\": 1.0\n },\n wait_for_completion=True\n)\n\n# Backward compatibility methods (deprecated - use generate_voice instead)\nlegacy_clone = client.voice.clone_voice(\n voice_file=\"path/to/voice_sample.wav\",\n text=\"Hello! This is a cloned voice speaking.\",\n language=\"en\",\n wait_for_completion=True\n)\n```\n\n#### Music Generation\n\n```python\n# Generate music from text\nmusic_job = client.music.generate_music(\n prompt=\"upbeat electronic dance music with heavy bass\",\n duration=120.0, # 2 minutes\n wait_for_completion=True\n)\n\nprint(f\"Generated music URL: {music_job.output_url}\")\n```\n\n#### Audio Transcription\n\n```python\n# Transcribe audio with speaker diarization\ntranscript = client.transcription.transcribe_audio(\n audio_file=\"path/to/audio.mp3\",\n language=\"en\",\n enable_speaker_diarization=True,\n wait_for_completion=True\n)\n\nprint(f\"Transcript: {transcript.transcript}\")\nprint(f\"Detected {len(transcript.segments)} speakers\")\n```\n\n#### Speech-to-Speech Translation\n\n```python\n# Translate speech while preserving voice characteristics\ntranslation = client.translation.translate_speech(\n audio_file=\"path/to/english_audio.wav\",\n target_language=\"es\", # Spanish\n source_language=\"en\", # English (optional - auto-detect)\n wait_for_completion=True\n)\n\nprint(f\"Translated audio URL: {translation.translated_audio_url}\")\n\n# Or translate from URL\nurl_translation = client.translation.translate_speech(\n url=\"https://example.com/audio.mp3\",\n target_language=\"fr\", # French\n wait_for_completion=True\n)\n```\n\n### Async Support\n\nThe SDK supports async/await for better performance:\n\n```python\nimport asyncio\nimport audiopod\n\nasync def main():\n async with audiopod.AsyncClient() as client:\n # All the same methods are available with async support\n job = await client.voice.clone_voice(\n voice_file=\"voice.wav\",\n text=\"Async voice cloning!\",\n wait_for_completion=True\n )\n print(f\"Async result: {job['output_url']}\")\n\nasyncio.run(main())\n```\n\n### Advanced Examples\n\n#### Create Voice Profile for Reuse\n\n```python\n# Create a reusable voice profile\nvoice_profile = client.voice.create_voice_profile(\n name=\"My Custom Voice\",\n voice_file=\"voice_sample.wav\",\n description=\"A professional voice for narration\",\n wait_for_completion=True\n)\n\n# Use the voice profile for speech generation (unified approach - recommended)\nspeech = client.voice.generate_voice(\n text=\"This uses my custom voice profile with the unified method!\",\n voice_id=voice_profile.id,\n language=\"en\",\n audio_format=\"mp3\",\n generation_params={\n \"speed\": 1.0\n },\n wait_for_completion=True\n)\n\n# Legacy method (still works - uses generate_voice internally)\nlegacy_speech = client.voice.generate_speech(\n voice_id=voice_profile.id,\n text=\"This uses the legacy method.\",\n wait_for_completion=True\n)\n```\n\n#### Batch Processing\n\n```python\n# Process multiple files\naudio_files = [\"file1.mp3\", \"file2.wav\", \"file3.m4a\"]\njobs = []\n\nfor audio_file in audio_files:\n job = client.transcription.transcribe_audio(\n audio_file=audio_file,\n language=\"en\"\n )\n jobs.append(job)\n\n# Wait for all jobs to complete\nfor job in jobs:\n completed_job = client.transcription.get_transcription_job(job.id)\n while completed_job.job.status != \"completed\":\n time.sleep(5)\n completed_job = client.transcription.get_transcription_job(job.id)\n \n print(f\"Transcript for {job.id}: {completed_job.transcript}\")\n```\n\n#### Music Generation with Custom Parameters\n\n```python\n# Generate rap music with specific parameters\nrap_job = client.music.generate_rap(\n lyrics=\"\"\"\n Started from the bottom now we're here\n Building dreams with every single year\n AI music generation so clear\n AudioPod making magic appear\n \"\"\",\n style=\"modern\",\n tempo=120,\n wait_for_completion=True\n)\n\n# Share the generated music\nshare_result = client.music.share_music_track(\n job_id=rap_job.job.id,\n platform=\"social\",\n message=\"Check out this AI-generated rap!\"\n)\nprint(f\"Shareable URL: {share_result['share_url']}\")\n```\n\n#### Karaoke Video Generation\n\n```python\n# Generate karaoke video from YouTube URL\nkaraoke_job = client.karaoke.generate_karaoke(\n youtube_url=\"https://www.youtube.com/watch?v=example\",\n video_style=\"modern\",\n wait_for_completion=True\n)\n\nprint(f\"Karaoke video URL: {karaoke_job.result['karaoke_video_path']}\")\n```\n\n## Error Handling\n\n```python\nimport audiopod\nfrom audiopod.exceptions import (\n AudioPodError,\n AuthenticationError,\n RateLimitError,\n ValidationError,\n ProcessingError\n)\n\ntry:\n client = audiopod.Client(api_key=\"invalid_key\")\n job = client.voice.clone_voice(\"voice.wav\", \"Test text\")\n \nexcept AuthenticationError:\n print(\"Invalid API key\")\nexcept RateLimitError as e:\n print(f\"Rate limit exceeded. Retry after: {e.retry_after} seconds\")\nexcept ValidationError as e:\n print(f\"Invalid input: {e.message}\")\nexcept ProcessingError as e:\n print(f\"Processing failed: {e.message}\")\nexcept AudioPodError as e:\n print(f\"General API error: {e.message}\")\n```\n\n## Credit Management\n\n```python\n# Check credit balance\ncredits = client.credits.get_credit_balance()\nprint(f\"Available credits: {credits.total_available_credits}\")\nprint(f\"Next reset: {credits.next_reset_date}\")\n\n# Get usage history\nusage = client.credits.get_usage_history()\nfor record in usage:\n print(f\"Service: {record['service_type']}, Credits: {record['credits_used']}\")\n\n# Get credit multipliers\nmultipliers = client.credits.get_credit_multipliers()\nprint(f\"Voice cloning: {multipliers['voice_cloning']} credits/second\")\n```\n\n## Configuration\n\n### Environment Variables\n\n- `AUDIOPOD_API_KEY`: Your AudioPod API key\n- `AUDIOPOD_BASE_URL`: Custom API base URL (optional)\n- `AUDIOPOD_TIMEOUT`: Request timeout in seconds (default: 30)\n\n### Client Configuration\n\n```python\nclient = audiopod.Client(\n api_key=\"your_api_key\",\n base_url=\"https://api.audiopod.ai\", # Custom base URL\n timeout=60, # 60 second timeout\n max_retries=5, # Retry failed requests\n verify_ssl=True, # SSL verification\n debug=True # Enable debug logging\n)\n```\n\n## API Reference\n\n### Client Classes\n\n- `audiopod.Client`: Synchronous client\n- `audiopod.AsyncClient`: Asynchronous client\n\n### Services\n\n- `client.voice`: **Voice generation operations** (unified TTS & cloning using `generate_voice()`)\n- `client.music`: Music generation and editing\n- `client.transcription`: Speech-to-text transcription\n- `client.translation`: Audio/video translation\n- `client.speaker`: Speaker analysis and diarization \n- `client.denoiser`: Audio denoising and enhancement\n- `client.karaoke`: Karaoke video generation\n- `client.credits`: Credit management and usage tracking\n\n#### Voice Service Methods\n\n**Recommended (Unified Approach):**\n- `client.voice.generate_voice()` - Generate speech with voice file (cloning) or voice ID (TTS)\n\n**Legacy Methods (Backward Compatibility):**\n- `client.voice.clone_voice()` - Clone voice from audio file (deprecated, uses `generate_voice` internally)\n- `client.voice.generate_speech()` - Generate speech with voice profile (deprecated, uses `generate_voice` internally)\n\n**Voice Management:**\n- `client.voice.create_voice_profile()` - Create reusable voice profiles\n- `client.voice.list_voice_profiles()` - List available voice profiles\n- `client.voice.delete_voice_profile()` - Delete voice profiles\n\n### Models\n\n- `Job`: Base job information and status\n- `VoiceProfile`: Voice profile details\n- `TranscriptionResult`: Transcription results and metadata\n- `MusicGenerationResult`: Music generation results\n- `TranslationResult`: Translation job results\n- `CreditInfo`: User credit information\n\n## CLI Usage\n\nThe SDK includes a command-line interface:\n\n```bash\n# Check API status\naudiopod health\n\n# Get credit balance \naudiopod credits balance\n\n# Clone a voice\naudiopod voice clone voice.wav \"Hello world!\" --language en\n\n# Generate music\naudiopod music generate \"upbeat electronic music\" --duration 60\n\n# Transcribe audio\naudiopod transcription transcribe audio.mp3 --language en\n```\n\n## Requirements\n\n- Python 3.8+\n- Active AudioPod account with API access\n- Valid API key\n\n## Support\n\n- \ud83d\udcd6 [API Reference](https://docs.audiopod.ai)\n- \ud83d\udcac [Discord Community](https://discord.gg/audiopod)\n- \ud83d\udce7 [Email Support](mailto:support@audiopod.ai)\n- \ud83d\udc1b [Bug Reports](https://github.com/AudiopodAI/audiopod)\n\n## License\n\nThis SDK is released under the MIT License. See [LICENSE](LICENSE) for details.\n\n---\n\nMade with \u2764\ufe0f by the AudioPod team\n",
"bugtrack_url": null,
"license": null,
"summary": "Professional Audio Processing API Client for Python",
"version": "1.2.0",
"project_urls": {
"API Reference": "https://docs.audiopod.ai/",
"Bug Tracker": "https://github.com/audiopod-ai/audiopod/issues",
"Homepage": "https://audiopod.ai",
"Repository": "https://github.com/audiopod-ai/audiopod"
},
"split_keywords": [
"audio",
" processing",
" ai",
" voice",
" cloning",
" transcription",
" translation",
" music",
" generation",
" denoising",
" api",
" sdk"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "60bed26ca75509a8c6cc31e8bd27ecdaf9639aee0f53d7ff8036f674e212a784",
"md5": "b101fecfafc6bb975e7c85773249a6d2",
"sha256": "423ad99700a6b9294b92210d9bd0bd95db015c6a0f914fb931a0d206ada7caa8"
},
"downloads": -1,
"filename": "audiopod-1.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b101fecfafc6bb975e7c85773249a6d2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 33045,
"upload_time": "2025-08-16T09:14:00",
"upload_time_iso_8601": "2025-08-16T09:14:00.337358Z",
"url": "https://files.pythonhosted.org/packages/60/be/d26ca75509a8c6cc31e8bd27ecdaf9639aee0f53d7ff8036f674e212a784/audiopod-1.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b0540f245c133e75e17774fae4682e6290b09825351993f95ca42c3a574f10e9",
"md5": "8804a83908b57382f93d9fb2278e93dd",
"sha256": "5c903b746273ac095bc2e04eeac733c0194031fa78c16d86fbf184fd68937ade"
},
"downloads": -1,
"filename": "audiopod-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "8804a83908b57382f93d9fb2278e93dd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 42757,
"upload_time": "2025-08-16T09:14:01",
"upload_time_iso_8601": "2025-08-16T09:14:01.489179Z",
"url": "https://files.pythonhosted.org/packages/b0/54/0f245c133e75e17774fae4682e6290b09825351993f95ca42c3a574f10e9/audiopod-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-16 09:14:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "audiopod-ai",
"github_project": "audiopod-python",
"github_not_found": true,
"lcname": "audiopod"
}