Metadata-Version: 2.4
Name: ultravox-client
Version: 0.1.0
Summary: Python client SDK for Ultravox.
Keywords: ultravox,audio,realtime,artificial intelligence
Author: Fixie Team
Author-email: Fixie Team <hello@fixie.ai>
License-Expression: Apache-2.0
Requires-Dist: livekit>=0.18.1,<0.19
Requires-Dist: websockets>=14.1,<15
Requires-Dist: pyee>=11.0.1,<12
Requires-Dist: numpy>=2.1.3,<3
Requires-Dist: dataclasses-json>=0.6.7,<0.7
Requires-Dist: exceptiongroup>=1.3.1 ; python_full_version < '3.11'
Requires-Dist: sounddevice>=0.5.1,<0.6 ; extra == 'local'
Requires-Python: >=3.10, <4
Project-URL: Documentation, https://fixie-ai.github.io/ultradox/
Project-URL: Homepage, https://ultravox.ai
Project-URL: Repository, https://github.com/fixie-ai/ultravox-client-sdk-python
Provides-Extra: local
Description-Content-Type: text/markdown

# Ultravox client SDK for Python
Python client SDK for [Ultravox](https://ultravox.ai).

[![pypi-v](https://img.shields.io/pypi/v/ultravox-client.svg?label=ultravox-client&color=orange)](https://pypi.org/project/ultravox-client/)

## Getting started

```bash
pip install ultravox-client
```

## Usage

```python
import asyncio
import signal

import ultravox_client as uv

session = uv.UltravoxSession()
done = asyncio.Event()

@session.on("status")
def on_status():
    if session.status == uv.UltravoxSessionStatus.DISCONNECTED:
        done.set()

await session.join_call(os.getenv("JOIN_URL", None))
loop = asyncio.get_running_loop()
loop.add_signal_handler(signal.SIGINT, lambda: done.set())
loop.add_signal_handler(signal.SIGTERM, lambda: done.set())
await done.wait()
await session.leave_call()
```

See the included example app for a more complete example. To get a `joinUrl`, you'll want to integrate your server with the [Ultravox REST API](https://fixie-ai.github.io/ultradox/).
