Metadata-Version: 2.4
Name: xyberos-tts
Version: 0.1.0
Summary: Text-to-speech plugin (RFC-0019, M8): ElevenLabs/OpenAI/Polly/Piper
License: Apache-2.0
Keywords: xyberos,plugin,tts,speech,elevenlabs,openai,polly,piper
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: xyberos>=1.0
Provides-Extra: aws
Requires-Dist: boto3; extra == "aws"
Provides-Extra: local
Requires-Dist: piper-tts; extra == "local"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"

# xyberos-tts

**Text-to-speech plugin — RFC-0019, M8.** Synthesize speech via ElevenLabs,
OpenAI, AWS Polly, or local Piper through one `TextToSpeech` contract.

## Install

```bash
pip install -e ./tts
```

## Usage

```python
from xyberos import create_app
from xyberos_tts import TtsPlugin

app = create_app()
app.load_plugin(TtsPlugin(provider="elevenlabs"))   # key from ELEVENLABS_API_KEY

path = app.tools.execute("tts_synthesize", None, text="Hello!", output_path="out.mp3")
```

Provider selection: `TTS_PROVIDER` env or `provider=` (`elevenlabs` default,
`openai`, `polly`, `piper`).

| Provider | Type | Key / config |
| -------- | ---- | ------------ |
| `elevenlabs` | cloud | `ELEVENLABS_API_KEY` |
| `openai` | cloud | `OPENAI_API_KEY` |
| `polly` | cloud (lazy `boto3`) | AWS credentials |
| `piper` | local CLI | `PIPER_MODEL` + `piper` executable |

## Tools

- `tts_synthesize(text, output_path) -> str` (writes the audio file)

## Tests

```bash
pip install pytest
pytest tests/
```

Cloud adapters are tested via injectable raw transports; Polly via a fake
client; Piper via an injectable runner.

## Ship location

Plugin (`xyberos.plugins` entry point) — voice (M8).
