Metadata-Version: 2.5
Name: livekit-plugins-gandr
Version: 0.1.2
Summary: Gandr TTS plugin for LiveKit Agents
Project-URL: Homepage, https://gandr.ai
Project-URL: Documentation, https://gandr.ai/docs
Project-URL: Source, https://github.com/Gandr-AI/gandr-livekit
Author-email: Gandr <sam@gandr.ai>
License-Expression: MIT
Keywords: gandr,livekit,text-to-speech,tts,voice-agents,webrtc
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Multimedia :: Sound/Audio
Requires-Python: >=3.9
Requires-Dist: aiohttp>=3.9.0
Requires-Dist: livekit-agents>=1.6.9
Description-Content-Type: text/markdown

# livekit-plugins-gandr

Gandr text to speech for [LiveKit Agents](https://github.com/livekit/agents).

```bash
pip install livekit-plugins-gandr
```

```python
from livekit.agents import AgentSession
from livekit.plugins import gandr

session = AgentSession(
    stt=...,
    llm=...,
    tts=gandr.TTS(voice="gandr-mia"),   # key from GANDR_API_KEY
)
```

Get a key at [gandr.ai](https://gandr.ai). The free tier is 50,000 tokens.

## Voices

`gandr-mia`, `gandr-ava`, `gandr-jenny`, `gandr-dane`, `gandr-leo`, `gandr-lewis`, or a `gnd:` clone id.
One cloned voice speaks 23 languages. Swap mid-session with `session.tts.update_options(voice=...)`.

## Behaviour worth knowing

- **Audio streams back in chunks as it is generated**, so playback starts while the rest is still rendering.
- **A truncated stream is never played as if complete.** The API flags an early end and the plugin raises
  instead of handing back half a sentence, so a `FallbackAdapter` can take the turn.
- **One retry through a busy moment**, rather than letting the first caller in that window hear silence.
  `await tts.prewarm()` opens the path early if you would rather do it on the SIP invite than on first speech.

## Accuracy

Word error rate 1.982% against a 2.171% human reference, scored by one `whisper-large-v3` configuration
across everything including the human baseline, n=1,088. Numbers, dates and order IDs are read correctly
rather than approximated, which is the failure that actually breaks phone agents.

Every render carries an inaudible watermark.

MIT.
