> ## Documentation Index
> Fetch the complete documentation index at: https://docs.praison.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Realtime

> Realtime audio/video streaming with PraisonAI

## Overview

Create realtime sessions for audio and video streaming with OpenAI's Realtime API.

## Python Usage

### Create Session

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai.capabilities import realtime_connect

session = realtime_connect(
    model="gpt-4o-realtime-preview",
    modalities=["text", "audio"],
    voice="alloy"
)

print(f"Session ID: {session.id}")
print(f"URL: {session.url}")
print(f"Status: {session.status}")
```

### Session Configuration

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
from praisonai.capabilities import realtime_connect

session = realtime_connect(
    model="gpt-4o-realtime-preview",
    modalities=["text", "audio"],
    voice="shimmer",
    instructions="You are a helpful voice assistant."
)

# Connect via WebSocket to session.url
print(f"Connect to: {session.url}")
```

### Async Usage

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import asyncio
from praisonai.capabilities import arealtime_connect

async def main():
    session = await arealtime_connect(
        model="gpt-4o-realtime-preview"
    )
    print(f"Session: {session.id}")

asyncio.run(main())
```

## Parameters

| Parameter      | Type       | Default                   | Description            |
| -------------- | ---------- | ------------------------- | ---------------------- |
| `model`        | str        | "gpt-4o-realtime-preview" | Realtime model         |
| `modalities`   | List\[str] | \["text", "audio"]        | Supported modalities   |
| `instructions` | str        | None                      | System instructions    |
| `voice`        | str        | "alloy"                   | Voice for audio output |
| `api_key`      | str        | None                      | API key override       |

## Available Voices

* `alloy` - Neutral
* `echo` - Male
* `fable` - British
* `onyx` - Deep male
* `nova` - Female
* `shimmer` - Soft female

## Result Object

The `RealtimeSession` object contains:

* `id`: Session ID
* `status`: Session status
* `model`: Model being used
* `url`: WebSocket URL to connect to
* `metadata`: Session configuration

## WebSocket Connection

After creating a session, connect via WebSocket:

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
import websockets
import json

async def connect_realtime(session):
    async with websockets.connect(
        session.url,
        extra_headers={"Authorization": f"Bearer {api_key}"}
    ) as ws:
        # Send and receive events
        await ws.send(json.dumps({
            "type": "input_audio_buffer.append",
            "audio": base64_audio_data
        }))
```
