Metadata-Version: 2.1
Name: fixie
Version: 0.0.8
Summary: Fixie.ai SDK for Python. Enables you to build AI-powered voice applications.
Home-page: https://github.com/fixie-ai/fixie-sdk-python
License: MIT
Keywords: fixie,fixie.ai,voice,ai
Author: Fixie.ai Team
Author-email: hello@fixie.ai
Requires-Python: >=3.11,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: dataclasses-json (>=0.6.2,<0.7.0)
Requires-Dist: livekit (==0.7.0.dev1)
Requires-Dist: numpy (>=1.26.2,<2.0.0)
Requires-Dist: pydub (>=0.25.1,<0.26.0)
Requires-Dist: pyee (>=11.1.0,<12.0.0)
Requires-Dist: setuptools (>=69.0.2,<70.0.0)
Requires-Dist: sounddevice (>=0.4.6,<0.5.0)
Requires-Dist: websockets (>=12.0,<13.0)
Project-URL: Repository, https://github.com/fixie-ai/fixie-sdk-python
Description-Content-Type: text/markdown

# fixie-sdk-python
Fixie SDK for Python


## Quickstart

```bash
pip install fixie
```

### Hello Agent

To start a voice session with a Fixie agent, create a `VoiceSession` object and call `session.start()`.

```python
from fixie_sdk.voice import audio_local
from fixie_sdk.voice import types
from fixie_sdk.voice.session import VoiceSession
from fixie_sdk.voice.session import VoiceSessionParams


async def main():
    source = audio_local.LocalAudioSource()
    sink = audio_local.LocalAudioSink()
    params = VoiceSessionParams(agent_id=<your agent uuid>)
    client = VoiceSession(source, sink, params)
    await client.warmup()
    await client.start()
    await asyncio.Event().wait()


asyncio.run(main())
```

### Hello Santa

For a more complete example, see the command-line client included with the Fixie SDK: https://github.com/fixie-ai/fixie-sdk-python/blob/main/fixie_sdk/examples/voice_example.py


## Installing & Running from Source

1. Install
```bash
poetry install
```

1. Run included voice example
```bash
poetry run python examples/voice_example.py
```
Use `Ctrl-C` to terminate the program.

The example program will use the default microphone and output device (i.e. speaker) for your computer. These are set in this code:

```python
# Get the default microphone and audio output device.
source = audio_local.LocalAudioSource()
sink = audio_local.LocalAudioSink()
```

You can find more information in the file `voice/audio_local.py`.

### Using Your Own Agent
You can pass in the `--agent` (or `-a`) input parameter followed by a space and then the ID of your agent.

### Using a Different Voice
Adding more voices is a WIP. For now you can use the default voice or can pick any of the voices that are defined [here](https://github.com/fixie-ai/hisanta.ai/blob/main/lib/config.ts). Pass in the desired voiceID with the `--tts-voice` (`-tv`) parameter.

### Using Your Own Audio Devices
Typically you will want to supply your own audio source and sink (e.g., to pipe the data to the phone network rather than the local audio devices). To do this, simply create your own classes derived from AudioSource and AudioSink and pass them in to the VoiceSession constructor.

