audiopod 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,395 @@
1
+ Metadata-Version: 2.4
2
+ Name: audiopod
3
+ Version: 1.0.0
4
+ Summary: Professional Audio Processing API Client for Python
5
+ Home-page: https://github.com/audiopod-ai/audiopod-python
6
+ Author: AudioPod AI
7
+ Author-email: AudioPod AI <support@audiopod.ai>
8
+ Project-URL: Homepage, https://audiopod.ai
9
+ Project-URL: Repository, https://github.com/audiopod-ai/audiopod
10
+ Project-URL: Bug Tracker, https://github.com/audiopod-ai/audiopod/issues
11
+ Project-URL: API Reference, https://docs.audiopod.ai/
12
+ Keywords: audio,processing,ai,voice,cloning,transcription,translation,music,generation,denoising,api,sdk
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Multimedia :: Sound/Audio
23
+ Classifier: Topic :: Multimedia :: Sound/Audio :: Analysis
24
+ Classifier: Topic :: Multimedia :: Sound/Audio :: Conversion
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Requires-Python: >=3.8
27
+ Description-Content-Type: text/markdown
28
+ Requires-Dist: requests>=2.28.0
29
+ Requires-Dist: aiohttp>=3.8.0
30
+ Requires-Dist: pydantic>=1.10.0
31
+ Requires-Dist: python-dotenv>=0.19.0
32
+ Requires-Dist: tqdm>=4.64.0
33
+ Requires-Dist: websockets>=10.4
34
+ Requires-Dist: click>=8.0.0
35
+ Provides-Extra: dev
36
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
37
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
38
+ Requires-Dist: black>=22.0.0; extra == "dev"
39
+ Requires-Dist: flake8>=5.0.0; extra == "dev"
40
+ Requires-Dist: mypy>=0.991; extra == "dev"
41
+ Requires-Dist: twine>=4.0.0; extra == "dev"
42
+ Requires-Dist: build>=0.10.0; extra == "dev"
43
+ Provides-Extra: docs
44
+ Requires-Dist: sphinx>=5.0.0; extra == "docs"
45
+ Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "docs"
46
+ Requires-Dist: sphinx-autodoc-typehints>=1.19.0; extra == "docs"
47
+ Dynamic: author
48
+ Dynamic: home-page
49
+ Dynamic: requires-python
50
+
51
+ # AudioPod Python SDK
52
+
53
+ The official Python SDK for the AudioPod API - Professional Audio Processing powered by AI.
54
+
55
+ [![PyPI version](https://badge.fury.io/py/audiopod.svg)](https://badge.fury.io/py/audiopod)
56
+ [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
57
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
58
+
59
+ ## Features
60
+
61
+ - 🎵 **Music Generation** - Create music from text prompts, lyrics, or audio samples
62
+ - 🎤 **Voice Cloning** - Clone voices from audio samples and generate speech
63
+ - 📝 **Transcription** - Convert speech to text with speaker diarization
64
+ - 🌍 **Translation** - Translate audio and video content between languages
65
+ - 🎬 **Karaoke Generation** - Create karaoke videos with synchronized lyrics
66
+ - 🔊 **Audio Enhancement** - Denoise and improve audio quality
67
+ - 👥 **Speaker Analysis** - Identify and separate speakers in audio
68
+ - 💰 **Credit Management** - Track usage and manage API credits
69
+
70
+ ## Installation
71
+
72
+ ```bash
73
+ pip install audiopod
74
+ ```
75
+
76
+ ## Quick Start
77
+
78
+ ### Authentication
79
+
80
+ Get your API key from the [AudioPod Dashboard](https://app.audiopod.ai/dashboard) and set it as an environment variable:
81
+
82
+ ```bash
83
+ export AUDIOPOD_API_KEY="ap_your_api_key_here"
84
+ ```
85
+
86
+ Or pass it directly to the client:
87
+
88
+ ```python
89
+ import audiopod
90
+
91
+ client = audiopod.Client(api_key="ap_your_api_key_here")
92
+ ```
93
+
94
+ ### Basic Usage
95
+
96
+ #### Voice Cloning
97
+
98
+ ```python
99
+ import audiopod
100
+
101
+ # Initialize client
102
+ client = audiopod.Client()
103
+
104
+ # Clone a voice and generate speech
105
+ job = client.voice.clone_voice(
106
+ voice_file="path/to/voice_sample.wav",
107
+ text="Hello! This is a cloned voice speaking.",
108
+ language="en",
109
+ wait_for_completion=True
110
+ )
111
+
112
+ print(f"Generated audio URL: {job['output_url']}")
113
+ ```
114
+
115
+ #### Music Generation
116
+
117
+ ```python
118
+ # Generate music from text
119
+ music_job = client.music.generate_music(
120
+ prompt="upbeat electronic dance music with heavy bass",
121
+ duration=120.0, # 2 minutes
122
+ wait_for_completion=True
123
+ )
124
+
125
+ print(f"Generated music URL: {music_job.output_url}")
126
+ ```
127
+
128
+ #### Audio Transcription
129
+
130
+ ```python
131
+ # Transcribe audio with speaker diarization
132
+ transcript = client.transcription.transcribe_audio(
133
+ audio_file="path/to/audio.mp3",
134
+ language="en",
135
+ enable_speaker_diarization=True,
136
+ wait_for_completion=True
137
+ )
138
+
139
+ print(f"Transcript: {transcript.transcript}")
140
+ print(f"Detected {len(transcript.segments)} speakers")
141
+ ```
142
+
143
+ #### Audio Translation
144
+
145
+ ```python
146
+ # Translate audio to another language
147
+ translation = client.translation.translate_audio(
148
+ audio_file="path/to/english_audio.wav",
149
+ target_language="es", # Spanish
150
+ wait_for_completion=True
151
+ )
152
+
153
+ print(f"Translated audio URL: {translation.audio_output_url}")
154
+ ```
155
+
156
+ ### Async Support
157
+
158
+ The SDK supports async/await for better performance:
159
+
160
+ ```python
161
+ import asyncio
162
+ import audiopod
163
+
164
+ async def main():
165
+ async with audiopod.AsyncClient() as client:
166
+ # All the same methods are available with async support
167
+ job = await client.voice.clone_voice(
168
+ voice_file="voice.wav",
169
+ text="Async voice cloning!",
170
+ wait_for_completion=True
171
+ )
172
+ print(f"Async result: {job['output_url']}")
173
+
174
+ asyncio.run(main())
175
+ ```
176
+
177
+ ### Advanced Examples
178
+
179
+ #### Create Voice Profile for Reuse
180
+
181
+ ```python
182
+ # Create a reusable voice profile
183
+ voice_profile = client.voice.create_voice_profile(
184
+ name="My Custom Voice",
185
+ voice_file="voice_sample.wav",
186
+ description="A professional voice for narration",
187
+ wait_for_completion=True
188
+ )
189
+
190
+ # Use the voice profile for speech generation
191
+ speech = client.voice.generate_speech(
192
+ voice_id=voice_profile.id,
193
+ text="This uses my custom voice profile!",
194
+ wait_for_completion=True
195
+ )
196
+ ```
197
+
198
+ #### Batch Processing
199
+
200
+ ```python
201
+ # Process multiple files
202
+ audio_files = ["file1.mp3", "file2.wav", "file3.m4a"]
203
+ jobs = []
204
+
205
+ for audio_file in audio_files:
206
+ job = client.transcription.transcribe_audio(
207
+ audio_file=audio_file,
208
+ language="en"
209
+ )
210
+ jobs.append(job)
211
+
212
+ # Wait for all jobs to complete
213
+ for job in jobs:
214
+ completed_job = client.transcription.get_transcription_job(job.id)
215
+ while completed_job.job.status != "completed":
216
+ time.sleep(5)
217
+ completed_job = client.transcription.get_transcription_job(job.id)
218
+
219
+ print(f"Transcript for {job.id}: {completed_job.transcript}")
220
+ ```
221
+
222
+ #### Music Generation with Custom Parameters
223
+
224
+ ```python
225
+ # Generate rap music with specific parameters
226
+ rap_job = client.music.generate_rap(
227
+ lyrics="""
228
+ Started from the bottom now we're here
229
+ Building dreams with every single year
230
+ AI music generation so clear
231
+ AudioPod making magic appear
232
+ """,
233
+ style="modern",
234
+ tempo=120,
235
+ wait_for_completion=True
236
+ )
237
+
238
+ # Share the generated music
239
+ share_result = client.music.share_music_track(
240
+ job_id=rap_job.job.id,
241
+ platform="social",
242
+ message="Check out this AI-generated rap!"
243
+ )
244
+ print(f"Shareable URL: {share_result['share_url']}")
245
+ ```
246
+
247
+ #### Karaoke Video Generation
248
+
249
+ ```python
250
+ # Generate karaoke video from YouTube URL
251
+ karaoke_job = client.karaoke.generate_karaoke(
252
+ youtube_url="https://www.youtube.com/watch?v=example",
253
+ video_style="modern",
254
+ wait_for_completion=True
255
+ )
256
+
257
+ print(f"Karaoke video URL: {karaoke_job.result['karaoke_video_path']}")
258
+ ```
259
+
260
+ ## Error Handling
261
+
262
+ ```python
263
+ import audiopod
264
+ from audiopod.exceptions import (
265
+ AudioPodError,
266
+ AuthenticationError,
267
+ RateLimitError,
268
+ ValidationError,
269
+ ProcessingError
270
+ )
271
+
272
+ try:
273
+ client = audiopod.Client(api_key="invalid_key")
274
+ job = client.voice.clone_voice("voice.wav", "Test text")
275
+
276
+ except AuthenticationError:
277
+ print("Invalid API key")
278
+ except RateLimitError as e:
279
+ print(f"Rate limit exceeded. Retry after: {e.retry_after} seconds")
280
+ except ValidationError as e:
281
+ print(f"Invalid input: {e.message}")
282
+ except ProcessingError as e:
283
+ print(f"Processing failed: {e.message}")
284
+ except AudioPodError as e:
285
+ print(f"General API error: {e.message}")
286
+ ```
287
+
288
+ ## Credit Management
289
+
290
+ ```python
291
+ # Check credit balance
292
+ credits = client.credits.get_credit_balance()
293
+ print(f"Available credits: {credits.total_available_credits}")
294
+ print(f"Next reset: {credits.next_reset_date}")
295
+
296
+ # Get usage history
297
+ usage = client.credits.get_usage_history()
298
+ for record in usage:
299
+ print(f"Service: {record['service_type']}, Credits: {record['credits_used']}")
300
+
301
+ # Get credit multipliers
302
+ multipliers = client.credits.get_credit_multipliers()
303
+ print(f"Voice cloning: {multipliers['voice_cloning']} credits/second")
304
+ ```
305
+
306
+ ## Configuration
307
+
308
+ ### Environment Variables
309
+
310
+ - `AUDIOPOD_API_KEY`: Your AudioPod API key
311
+ - `AUDIOPOD_BASE_URL`: Custom API base URL (optional)
312
+ - `AUDIOPOD_TIMEOUT`: Request timeout in seconds (default: 30)
313
+
314
+ ### Client Configuration
315
+
316
+ ```python
317
+ client = audiopod.Client(
318
+ api_key="your_api_key",
319
+ base_url="https://api.audiopod.ai", # Custom base URL
320
+ timeout=60, # 60 second timeout
321
+ max_retries=5, # Retry failed requests
322
+ verify_ssl=True, # SSL verification
323
+ debug=True # Enable debug logging
324
+ )
325
+ ```
326
+
327
+ ## API Reference
328
+
329
+ ### Client Classes
330
+
331
+ - `audiopod.Client`: Synchronous client
332
+ - `audiopod.AsyncClient`: Asynchronous client
333
+
334
+ ### Services
335
+
336
+ - `client.voice`: Voice cloning and TTS operations
337
+ - `client.music`: Music generation and editing
338
+ - `client.transcription`: Speech-to-text transcription
339
+ - `client.translation`: Audio/video translation
340
+ - `client.speaker`: Speaker analysis and diarization
341
+ - `client.denoiser`: Audio denoising and enhancement
342
+ - `client.karaoke`: Karaoke video generation
343
+ - `client.credits`: Credit management and usage tracking
344
+
345
+ ### Models
346
+
347
+ - `Job`: Base job information and status
348
+ - `VoiceProfile`: Voice profile details
349
+ - `TranscriptionResult`: Transcription results and metadata
350
+ - `MusicGenerationResult`: Music generation results
351
+ - `TranslationResult`: Translation job results
352
+ - `CreditInfo`: User credit information
353
+
354
+ ## CLI Usage
355
+
356
+ The SDK includes a command-line interface:
357
+
358
+ ```bash
359
+ # Check API status
360
+ audiopod health
361
+
362
+ # Get credit balance
363
+ audiopod credits balance
364
+
365
+ # Clone a voice
366
+ audiopod voice clone voice.wav "Hello world!" --language en
367
+
368
+ # Generate music
369
+ audiopod music generate "upbeat electronic music" --duration 60
370
+
371
+ # Transcribe audio
372
+ audiopod transcription transcribe audio.mp3 --language en
373
+ ```
374
+
375
+ ## Requirements
376
+
377
+ - Python 3.8+
378
+ - Active AudioPod account with API access
379
+ - Valid API key
380
+
381
+ ## Support
382
+
383
+ - 📖 [Documentation](https://docs.audiopod.ai)
384
+ - 🎯 [API Reference](https://api.audiopod.ai/docs)
385
+ - 💬 [Discord Community](https://discord.gg/audiopod)
386
+ - 📧 [Email Support](mailto:support@audiopod.ai)
387
+ - 🐛 [Bug Reports](https://github.com/audiopod-ai/audiopod-python/issues)
388
+
389
+ ## License
390
+
391
+ This SDK is released under the MIT License. See [LICENSE](LICENSE) for details.
392
+
393
+ ---
394
+
395
+ Made with ❤️ by the AudioPod team
@@ -0,0 +1,21 @@
1
+ audiopod/__init__.py,sha256=GyQ7PUWGF3t4Ljuk_DD6O9MvG_A96T5bedXc3jJQCD4,1790
2
+ audiopod/cli.py,sha256=ZYzAQ3UpoYuOEWivMwMneJUf2z8DGGYTx1Nb6yRfdVY,9339
3
+ audiopod/client.py,sha256=AF5goB5CG5lJZ3XyGojRskvUNrNzn9A34BAx9Z1sEOE,11580
4
+ audiopod/config.py,sha256=fuGtbuES4tXdHwqQqoZa5izCH6nVfFRP06D8eK1Cg10,1683
5
+ audiopod/exceptions.py,sha256=c3Ym2tWyRE1kemVkXDaXFcfP3h6AokhKcUcCBImwGes,2386
6
+ audiopod/models.py,sha256=gAfQkufA_hZdYBkniFJ_EXETy9ts-wr-soUEbT7ZKFM,7827
7
+ audiopod/services/__init__.py,sha256=rt_9CHqmEJgHyVFdF2WwTE403CXpDGBCYzfCxJZZjgE,573
8
+ audiopod/services/base.py,sha256=mNbziYy2KsWWZrdHFlTl9pKLvoQUW-ZkkJuVWfCVP74,6731
9
+ audiopod/services/credits.py,sha256=CjE2W8kmYjM4B02BwfPvvB3kl0YdVimM2kR7lhg43h8,1796
10
+ audiopod/services/denoiser.py,sha256=Oi_1rCKs_L5lCG_2QuKwHzLe8_mbEIzlzM2X8TJ7Rnc,1750
11
+ audiopod/services/karaoke.py,sha256=M0Befh4Y2DNM_uWFTmCIrzKfjqkvygrzCt0f_Dubj2o,2012
12
+ audiopod/services/music.py,sha256=m6cF_2cbB4X-BHvJH36oqD2NBF_dIWCAUB2HIpZgoxo,15948
13
+ audiopod/services/speaker.py,sha256=OPSOwArfrGXVzRgciS13n1QsCJSK1PB-Mz6VgwxuHAA,1866
14
+ audiopod/services/transcription.py,sha256=HyH6WpGWZsggYxIvt2dhB6_5UHaigk3XwXsVgarWzcE,7565
15
+ audiopod/services/translation.py,sha256=Gpxmom-ZSLMXBwSQlOL5PyqxQCwRYNT2IUp2ZD5QhYc,3177
16
+ audiopod/services/voice.py,sha256=_IHv3zU3k184kfijxr1QRBenrIpmhhPOBS96DddZ8yw,13456
17
+ audiopod-1.0.0.dist-info/METADATA,sha256=S7iD1nLEk-xXknM1K8sze0ucL2oVGtxcXpvtIFRGtTY,10956
18
+ audiopod-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
19
+ audiopod-1.0.0.dist-info/entry_points.txt,sha256=uLcNDzXuOXnJAz9j91TDGayVjjZ7-ZiHBGDydqNUErU,47
20
+ audiopod-1.0.0.dist-info/top_level.txt,sha256=M6yyOFFNpLdH4i1AMRqJZLRIgfpg1NvrQVmnPd8A6N8,9
21
+ audiopod-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ audiopod = audiopod.cli:main
@@ -0,0 +1 @@
1
+ audiopod