orbitalsai 1.1.0__py3-none-any.whl → 1.2.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,24 @@
1
+ orbitalsai/__init__.py,sha256=qG0e47rvbUtkcvCqLXD6v6TLa-6jy3JDz4GPcnySLqM,2289
2
+ orbitalsai/async_client.py,sha256=zW8eJrGTnu7Z0mDKo6y8b732s_oGpM9zXWWukj_QQhQ,14983
3
+ orbitalsai/client.py,sha256=5pUFDVWXfRbrMVUx7Pw7lV7fvEJfaCqexmNk8aTOHjo,12352
4
+ orbitalsai/exceptions.py,sha256=5jdLYiWUXsbpifFV4-rY4FRZtmRqnqvqXTlunh5DxgE,1390
5
+ orbitalsai/models.py,sha256=ktmZJoYRnEuCZ1bGhR8vy6eBXkXC-wNMdA11CalZ458,3373
6
+ orbitalsai/utils.py,sha256=HtRCWfg7xmk3c_KPqm2-P5kx178QZYxy2hDGv1IS9hM,2791
7
+ orbitalsai/streaming/__init__.py,sha256=Pk-7cmVnOFM8VG8ZPW8LoD3C6D64oFONuIWGNmkP2vc,2912
8
+ orbitalsai/streaming/async_client.py,sha256=L83VQ5UWWbb4_F6KSudSxeAlCfkRqF2zBMIxMXBbk-I,17801
9
+ orbitalsai/streaming/client.py,sha256=QgBOQfYzuaNBl-Rdd0LCFxs45d7cyI49A4BZBtTNQwo,12004
10
+ orbitalsai/streaming/config.py,sha256=jVNO677dCux-5mYPAg8mbyLAU1gFSjjycKVR2tei2OU,6725
11
+ orbitalsai/streaming/connection.py,sha256=tEZTVmiccSgu98Gb7zafnnD9gfzy7jcPloP73akpzqE,9021
12
+ orbitalsai/streaming/events.py,sha256=2ehPPK2nFaLbu50KvU_WIWFKOXggzdygxGE94leXuKg,12607
13
+ orbitalsai/streaming/exceptions.py,sha256=TI8srw_IpmSLHK1iwju9MfwUaL9in3OhbgeDmqAQlpY,4443
14
+ orbitalsai/streaming/protocol.py,sha256=4vCNav1jAWvDNNfpMpjPk9zBLe3U6TmIITgs3fF2-EQ,7085
15
+ orbitalsai/streaming/audio/__init__.py,sha256=dPC3ONAJvfGtRzEjqP3Fswoh4cz8zJHOG4MlLMAZ3Sc,638
16
+ orbitalsai/streaming/audio/buffer.py,sha256=tArUj9lzys4-lK_kbmvYlu1EbJ7aeqE3UET2qTg4ccA,4915
17
+ orbitalsai/streaming/audio/converter.py,sha256=urY9Ho-6juHfoByqAC7QQ3lg_YXBjLO_0ne4OsT8Peo,9517
18
+ orbitalsai/streaming/audio/formats.py,sha256=eUHVlVhCZs1bDc1OnHke9ixfXuPZAvzXX_XgPoBsdFM,2528
19
+ orbitalsai/streaming/audio/source.py,sha256=BWPyHNUaFXVU0jihq6GIBmVa46U1Qf_UYsK6f37Wk0g,9457
20
+ orbitalsai-1.2.0.dist-info/licenses/LICENSE,sha256=C7Eee8rAV6XiweKYlvcabxiMvFX75B_0arFlrLnfnf0,1067
21
+ orbitalsai-1.2.0.dist-info/METADATA,sha256=PBVuPwEWY5ZhD2dzFAXh_OLVHtVrNk33JnzguLuO3Sc,23351
22
+ orbitalsai-1.2.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
23
+ orbitalsai-1.2.0.dist-info/top_level.txt,sha256=KZ4ueNRg-PyNeu3RKTOpe5PRCSidh3ieL70-YGf62ro,11
24
+ orbitalsai-1.2.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,491 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: orbitalsai
3
- Version: 1.1.0
4
- Summary: A simple and powerful Python SDK for the OrbitalsAI API
5
- Home-page: https://github.com/orbitalsai/orbitalsai-python-sdk
6
- Author: OrbitalsAI
7
- Author-email: OrbitalsAI <support@orbitalsai.com>
8
- Maintainer-email: OrbitalsAI <support@orbitalsai.com>
9
- License: MIT
10
- Project-URL: Homepage, https://github.com/orbitalsai/orbitalsai-python-sdk
11
- Project-URL: Documentation, https://docs.orbitalsai.com
12
- Project-URL: Repository, https://github.com/orbitalsai/orbitalsai-python-sdk
13
- Project-URL: Bug Tracker, https://github.com/orbitalsai/orbitalsai-python-sdk/issues
14
- Keywords: ai,transcription,audio,speech,african languages,srt,subtitles
15
- Classifier: Development Status :: 4 - Beta
16
- Classifier: Intended Audience :: Developers
17
- Classifier: License :: OSI Approved :: MIT License
18
- Classifier: Operating System :: OS Independent
19
- Classifier: Programming Language :: Python :: 3
20
- Classifier: Programming Language :: Python :: 3.8
21
- Classifier: Programming Language :: Python :: 3.9
22
- Classifier: Programming Language :: Python :: 3.10
23
- Classifier: Programming Language :: Python :: 3.11
24
- Classifier: Programming Language :: Python :: 3.12
25
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
- Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
27
- Requires-Python: >=3.8
28
- Description-Content-Type: text/markdown
29
- License-File: LICENSE
30
- Requires-Dist: requests>=2.25.0
31
- Requires-Dist: aiohttp>=3.8.0
32
- Requires-Dist: python-dateutil>=2.8.0
33
- Provides-Extra: dev
34
- Requires-Dist: pytest>=6.0; extra == "dev"
35
- Requires-Dist: pytest-asyncio>=0.18.0; extra == "dev"
36
- Requires-Dist: black>=21.0; extra == "dev"
37
- Requires-Dist: flake8>=3.9; extra == "dev"
38
- Requires-Dist: mypy>=0.910; extra == "dev"
39
- Dynamic: author
40
- Dynamic: home-page
41
- Dynamic: license-file
42
- Dynamic: requires-python
43
-
44
- # OrbitalsAI Python SDK
45
-
46
- [![PyPI version](https://badge.fury.io/py/orbitalsai.svg)](https://badge.fury.io/py/orbitalsai)
47
- [![Python Support](https://img.shields.io/pypi/pyversions/orbitalsai.svg)](https://pypi.org/project/orbitalsai/)
48
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
49
-
50
- A simple and powerful Python SDK for the OrbitalsAI API. Transcribe audio files in multiple African languages with optional SRT subtitle generation.
51
-
52
- ## ✨ Features
53
-
54
- - 🚀 **Simple API** - Just 3 lines to transcribe audio
55
- - 🔄 **Sync & Async** - Use synchronously or asynchronously
56
- - 🌍 **African Languages** - Support for Hausa, Igbo, Yoruba, Swahili, and more
57
- - 📝 **SRT Subtitles** - Generate subtitle files automatically
58
- - 💰 **Balance Management** - Built-in billing and usage tracking
59
- - 🔒 **Secure** - API key authentication
60
- - 📦 **Easy Installation** - `pip install orbitalsai`
61
-
62
- ## 🚀 Quick Start
63
-
64
- ### Installation
65
-
66
- ```bash
67
- pip install orbitalsai
68
- ```
69
-
70
- ### Basic Usage
71
-
72
- ```python
73
- import orbitalsai
74
-
75
- # Initialize client
76
- client = orbitalsai.Client(api_key="your_api_key_here")
77
-
78
- # Transcribe audio (waits automatically)
79
- transcript = client.transcribe("audio.mp3")
80
- print(transcript.text)
81
- ```
82
-
83
- That's it! 🎉
84
-
85
- ## 📖 Table of Contents
86
-
87
- - [Installation](#installation)
88
- - [Quick Start](#quick-start)
89
- - [Authentication](#authentication)
90
- - [Basic Transcription](#basic-transcription)
91
- - [Advanced Features](#advanced-features)
92
- - [Async Usage](#async-usage)
93
- - [Error Handling](#error-handling)
94
- - [API Reference](#api-reference)
95
- - [Supported Languages](#supported-languages)
96
- - [Supported Formats](#supported-formats)
97
- - [Troubleshooting](#troubleshooting)
98
-
99
- ## 🔑 Authentication
100
-
101
- Get your API key from the [OrbitalsAI Dashboard](https://dashboard.orbitalsai.com).
102
-
103
- ```python
104
- import orbitalsai
105
-
106
- client = orbitalsai.Client(api_key="your_api_key_here")
107
- ```
108
-
109
- ## 🎵 Basic Transcription
110
-
111
- ### Simple Transcription
112
-
113
- ```python
114
- import orbitalsai
115
-
116
- client = orbitalsai.Client(api_key="your_api_key_here")
117
-
118
- # Transcribe audio file
119
- transcript = client.transcribe("audio.mp3")
120
- print(transcript.text)
121
- ```
122
-
123
- ### With Language and SRT
124
-
125
- ```python
126
- import orbitalsai
127
-
128
- client = orbitalsai.Client(api_key="your_api_key_here")
129
-
130
- # Transcribe in Hausa with SRT subtitles
131
- transcript = client.transcribe(
132
- "audio.mp3",
133
- language="hausa",
134
- generate_srt=True
135
- )
136
-
137
- print(transcript.text)
138
- print(transcript.srt_content) # SRT subtitle content
139
- ```
140
-
141
- ## 🤖 AI Model Selection
142
-
143
- Choose which AI model to use for transcription. Different models may have different pricing and capabilities.
144
-
145
- ### List Available Models
146
-
147
- ```python
148
- import orbitalsai
149
-
150
- client = orbitalsai.Client(api_key="your_api_key_here")
151
-
152
- # Get all available models
153
- models = client.get_models()
154
-
155
- for model in models:
156
- print(f"{model.model_name}: ${model.transcription_rate_per_hour:.2f}/hour")
157
- ```
158
-
159
- ### Transcribe with Specific Model
160
-
161
- ```python
162
- import orbitalsai
163
-
164
- client = orbitalsai.Client(api_key="your_api_key_here")
165
-
166
- # Transcribe with Perigee-1 model
167
- transcript = client.transcribe(
168
- "audio.mp3",
169
- language="hausa",
170
- model_name="Perigee-1" # Specify the model
171
- )
172
-
173
- print(transcript.text)
174
- ```
175
-
176
- ### Choose Model Based on Budget
177
-
178
- ```python
179
- import orbitalsai
180
-
181
- client = orbitalsai.Client(api_key="your_api_key_here")
182
-
183
- # Get the cheapest available model
184
- models = client.get_models()
185
- cheapest_model = min(models, key=lambda m: m.transcription_rate_per_hour)
186
-
187
- print(f"Using {cheapest_model.model_name} at ${cheapest_model.transcription_rate_per_hour:.2f}/hour")
188
-
189
- transcript = client.transcribe(
190
- "audio.mp3",
191
- language="english",
192
- model_name=cheapest_model.model_name
193
- )
194
- ```
195
-
196
- ## 🔄 Async Usage
197
-
198
- Perfect for processing multiple files or building web applications.
199
-
200
- ```python
201
- import asyncio
202
- import orbitalsai
203
-
204
- async def main():
205
- async with orbitalsai.AsyncClient(api_key="your_api_key_here") as client:
206
- # List available models
207
- models = await client.get_models()
208
- print(f"Available models: {[m.model_name for m in models]}")
209
-
210
- # Transcribe multiple files concurrently
211
- tasks = await asyncio.gather(
212
- client.transcribe("audio1.mp3", model_name="Perigee-1"),
213
- client.transcribe("audio2.wav", model_name="Perigee-1"),
214
- client.transcribe("audio3.m4a", model_name="Perigee-1")
215
- )
216
-
217
- for transcript in tasks:
218
- print(transcript.text)
219
-
220
- asyncio.run(main())
221
- ```
222
-
223
- ## 💰 Balance Management
224
-
225
- ### Check Balance
226
-
227
- ```python
228
- import orbitalsai
229
-
230
- client = orbitalsai.Client(api_key="your_api_key_here")
231
-
232
- balance = client.get_balance()
233
- print(f"Current balance: ${balance.balance:.2f}")
234
- print(f"Last updated: {balance.last_updated}")
235
- ```
236
-
237
- ### Usage History
238
-
239
- ```python
240
- import orbitalsai
241
- from datetime import date, timedelta
242
-
243
- client = orbitalsai.Client(api_key="your_api_key_here")
244
-
245
- # Get last 7 days of usage
246
- end_date = date.today()
247
- start_date = end_date - timedelta(days=7)
248
-
249
- usage = client.get_daily_usage(start_date=start_date, end_date=end_date)
250
- print(f"Total cost: ${usage.total_cost:.2f}")
251
- print(f"Total audio processed: {usage.total_audio_seconds:.1f} seconds")
252
-
253
- for day in usage.daily_records:
254
- print(f"{day.date}: ${day.total_cost:.4f} ({day.transcription_usage:.1f}s transcription)")
255
- ```
256
-
257
- ## 🛠️ Advanced Features
258
-
259
- ### List All Tasks
260
-
261
- ```python
262
- import orbitalsai
263
-
264
- client = orbitalsai.Client(api_key="your_api_key_here")
265
-
266
- tasks = client.list_tasks()
267
- for task in tasks:
268
- print(f"Task {task.task_id}: {task.status} - {task.original_filename}")
269
- ```
270
-
271
- ### Get User Information
272
-
273
- ```python
274
- import orbitalsai
275
-
276
- client = orbitalsai.Client(api_key="your_api_key_here")
277
-
278
- user = client.get_user()
279
- print(f"User: {user.first_name} {user.last_name} ({user.email})")
280
- print(f"Verified: {user.is_verified}")
281
- ```
282
-
283
- ## ⚠️ Error Handling
284
-
285
- The SDK provides specific exceptions for different error scenarios.
286
-
287
- ```python
288
- import orbitalsai
289
- from orbitalsai.exceptions import (
290
- AuthenticationError, InsufficientBalanceError,
291
- UnsupportedFileError, UnsupportedLanguageError,
292
- TranscriptionError, TimeoutError
293
- )
294
-
295
- client = orbitalsai.Client(api_key="your_api_key_here")
296
-
297
- try:
298
- transcript = client.transcribe("audio.mp3", language="hausa")
299
- print(transcript.text)
300
-
301
- except UnsupportedFileError:
302
- print("File format not supported")
303
- except UnsupportedLanguageError:
304
- print("Language not supported")
305
- except InsufficientBalanceError:
306
- print("Not enough credits")
307
- except AuthenticationError:
308
- print("Invalid API key")
309
- except TranscriptionError as e:
310
- print(f"Transcription failed: {e}")
311
- except TimeoutError:
312
- print("Transcription timed out")
313
- except Exception as e:
314
- print(f"Unexpected error: {e}")
315
- ```
316
-
317
- ## 📚 API Reference
318
-
319
- ### Client Methods
320
-
321
- #### `get_models()`
322
-
323
- Get all available AI models with their pricing information.
324
-
325
- **Returns:** List of `Model` objects
326
-
327
- #### `transcribe(file_path, language="english", generate_srt=False, model_name="Perigee-1", wait=True, timeout=300, poll_interval=5)`
328
-
329
- Transcribe an audio file.
330
-
331
- **Parameters:**
332
- - `file_path` (str): Path to the audio file
333
- - `language` (str): Language code (default: "english")
334
- - `generate_srt` (bool): Generate SRT subtitles (default: False)
335
- - `model_name` (str): AI model to use (default: "Perigee-1")
336
- - `wait` (bool): Wait for completion (default: True)
337
- - `timeout` (int): Maximum wait time in seconds (default: 300)
338
- - `poll_interval` (int): Seconds between status checks (default: 5)
339
-
340
- **Returns:** `Transcript` object (if wait=True) or `TranscriptTask` object (if wait=False)
341
-
342
- #### `get_task(task_id)`
343
-
344
- Get the status of a transcription task.
345
-
346
- **Parameters:**
347
- - `task_id` (int): ID of the task
348
-
349
- **Returns:** `TranscriptTask` object
350
-
351
- #### `wait_for_task(task_id, timeout=300, poll_interval=5)`
352
-
353
- Wait for a task to complete.
354
-
355
- **Parameters:**
356
- - `task_id` (int): ID of the task
357
- - `timeout` (int): Maximum wait time in seconds
358
- - `poll_interval` (int): Seconds between status checks
359
-
360
- **Returns:** `Transcript` object
361
-
362
- #### `list_tasks()`
363
-
364
- Get all transcription tasks for the current user.
365
-
366
- **Returns:** List of `TranscriptTask` objects
367
-
368
- #### `get_balance()`
369
-
370
- Get the current user's balance.
371
-
372
- **Returns:** `Balance` object
373
-
374
- #### `get_usage_history(start_date=None, end_date=None, page=1, page_size=50)`
375
-
376
- Get usage history for the current user.
377
-
378
- **Returns:** `UsageHistory` object
379
-
380
- #### `get_daily_usage(start_date=None, end_date=None, page=1, page_size=30)`
381
-
382
- Get daily usage history for the current user.
383
-
384
- **Returns:** `DailyUsage` object
385
-
386
- #### `get_user()`
387
-
388
- Get current user details.
389
-
390
- **Returns:** `User` object
391
-
392
- ### Data Models
393
-
394
- #### `Transcript`
395
- - `text` (str): Transcribed text
396
- - `srt_content` (str, optional): SRT subtitle content
397
- - `task_id` (int): Task ID
398
- - `original_filename` (str): Original filename
399
- - `audio_url` (str, optional): URL to processed audio
400
-
401
- #### `TranscriptTask`
402
- - `task_id` (int): Task ID
403
- - `status` (str): Task status ("pending", "processing", "completed", "failed")
404
- - `original_filename` (str): Original filename
405
- - `audio_url` (str, optional): URL to processed audio
406
- - `srt_requested` (bool): Whether SRT was requested
407
- - `result_text` (str, optional): Transcribed text
408
- - `srt_content` (str, optional): SRT subtitle content
409
- - `error` (str, optional): Error message if failed
410
-
411
- #### `Balance`
412
- - `balance` (float): Current balance in credits
413
- - `last_updated` (datetime): Last update timestamp
414
-
415
- #### `Model`
416
- - `id` (int): Model ID
417
- - `model_name` (str): Name of the model (e.g., "Perigee-1")
418
- - `transcription_rate_per_second` (float): Cost per second of audio
419
- - `transcription_rate_per_hour` (float): Cost per hour of audio
420
- - `is_active` (bool): Whether the model is currently available
421
-
422
- ## 🌍 Supported Languages
423
-
424
- - **English** (`english`)
425
- - **Hausa** (`hausa`)
426
- - **Igbo** (`igbo`)
427
- - **Yoruba** (`yoruba`)
428
- - **Swahili** (`swahili`)
429
- - **Pidgin** (`pidgin`)
430
- - **Kinyarwanda** (`kinyarwanda`)
431
-
432
- ## 📁 Supported Formats
433
-
434
- ### Audio Formats
435
- - WAV (`.wav`, `.wave`)
436
- - MP3 (`.mp3`, `.mpeg`)
437
- - OGG (`.ogg`, `.oga`)
438
- - FLAC (`.flac`)
439
- - AAC (`.aac`)
440
- - M4A (`.m4a`)
441
- - WMA (`.wma`)
442
- - AMR (`.amr`)
443
- - 3GP (`.3gp`)
444
-
445
- ### Maximum File Size
446
- - **200 MB** per file
447
-
448
- ## 🔧 Troubleshooting
449
-
450
- ### Common Issues
451
-
452
- **Q: I get "Invalid API key" error**
453
- A: Make sure your API key is correct. Get it from the [OrbitalsAI Dashboard](https://dashboard.orbitalsai.com).
454
-
455
- **Q: I get "Insufficient balance" error**
456
- A: Add credits to your account through the dashboard.
457
-
458
- **Q: I get "Unsupported file format" error**
459
- A: Make sure your audio file is in a supported format (see [Supported Formats](#supported-formats)).
460
-
461
- **Q: Transcription takes too long**
462
- A: Large files take longer to process. You can increase the timeout:
463
- ```python
464
- transcript = client.transcribe("large_file.mp3", timeout=600) # 10 minutes
465
- ```
466
-
467
- **Q: I get "Unsupported language" error**
468
- A: Make sure you're using a supported language code (see [Supported Languages](#supported-languages)).
469
-
470
- ### Getting Help
471
-
472
- - 📧 Email: support@orbitalsai.com
473
- - 🐛 Issues: [GitHub Issues](https://github.com/orbitalsai/orbitalsai-python-sdk/issues)
474
- - 📖 Docs: [Documentation](https://docs.orbitalsai.com)
475
-
476
- ## 📄 License
477
-
478
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
479
-
480
- ## 🤝 Contributing
481
-
482
- Contributions are welcome! Please feel free to submit a Pull Request.
483
-
484
- ## 🙏 Acknowledgments
485
-
486
- - Built for the African AI community
487
- - Powered by OrbitalsAI
488
-
489
- ---
490
-
491
- Made by the OrbitalsAI team
@@ -1,11 +0,0 @@
1
- orbitalsai/__init__.py,sha256=l1PSfVe3tVHU53VWOMc7c6qx3iBP_SPyRFN98-taCo4,1634
2
- orbitalsai/async_client.py,sha256=zW8eJrGTnu7Z0mDKo6y8b732s_oGpM9zXWWukj_QQhQ,14983
3
- orbitalsai/client.py,sha256=5pUFDVWXfRbrMVUx7Pw7lV7fvEJfaCqexmNk8aTOHjo,12352
4
- orbitalsai/exceptions.py,sha256=5jdLYiWUXsbpifFV4-rY4FRZtmRqnqvqXTlunh5DxgE,1390
5
- orbitalsai/models.py,sha256=ktmZJoYRnEuCZ1bGhR8vy6eBXkXC-wNMdA11CalZ458,3373
6
- orbitalsai/utils.py,sha256=HtRCWfg7xmk3c_KPqm2-P5kx178QZYxy2hDGv1IS9hM,2791
7
- orbitalsai-1.1.0.dist-info/licenses/LICENSE,sha256=C7Eee8rAV6XiweKYlvcabxiMvFX75B_0arFlrLnfnf0,1067
8
- orbitalsai-1.1.0.dist-info/METADATA,sha256=wcuxtbOZRljBf1Y4DRtJO_GetzmRJILwiOzHNQDmSoo,13278
9
- orbitalsai-1.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
10
- orbitalsai-1.1.0.dist-info/top_level.txt,sha256=KZ4ueNRg-PyNeu3RKTOpe5PRCSidh3ieL70-YGf62ro,11
11
- orbitalsai-1.1.0.dist-info/RECORD,,