Metadata-Version: 2.4
Name: voiceforge-sdk
Version: 0.6.0
Summary: VoiceForge — Real-Time Voice Conversion API Client
Home-page: https://github.com/voiceforge/voiceforge-python
Author: VoiceForge
Author-email: VoiceForge <dev@voiceforge.ai>
License-Expression: MIT
Project-URL: Homepage, https://voiceforge.spiron.io
Project-URL: Documentation, https://voiceforge.spiron.io/docs
Project-URL: Source, https://github.com/voiceforge/voiceforge-python
Project-URL: Bug Tracker, https://github.com/voiceforge/voiceforge-python/issues
Keywords: voice,conversion,api,real-time,streaming,rvc
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Sound/Audio
Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.27.0
Requires-Dist: websockets>=12.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
Requires-Dist: ruff>=0.6.0; extra == "dev"
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# VoiceForge Python SDK

Real-time voice conversion API client for Python.

## Install

```bash
pip install voiceforge
```

## Quick Start

```python
from voiceforge import Client

client = Client(api_key="vf_...")

# List available voices
voices = client.list_voices()

# Convert a file
result = client.convert("input.wav", voice_id="deep_male_01")
result.save("output.wav")
print(f"Converted in {result.latency_ms}ms")

# Check usage
usage = client.get_usage()
print(f"{usage.minutes_remaining} minutes remaining")
```

## Async Client

```python
from voiceforge import AsyncClient

async with AsyncClient(api_key="vf_...") as client:
    result = await client.convert("input.wav", voice_id="deep_male_01")
```

## Real-Time Streaming

```python
from voiceforge import AsyncClient

async with AsyncClient(api_key="vf_...") as client:
    async with client.stream("deep_male_01", pitch_shift=2) as session:
        await session.send(audio_chunk)
        converted, latency = await session.receive()
```

## Documentation

Full docs at [docs.voiceforge.ai](https://docs.voiceforge.ai)
