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

# Chariot Text-to-Speech

> ChariotTTSService streams Indian-language and English speech from Chariot's multi-context WebSocket API.

> [!NOTE]
>
> **Community-maintained integration.** This service is built and
> maintained by
> [Chariot-AI](https://github.com/Chariot-AI)
> . Pipecat does not test or officially support it. Please report issues and
> request changes on the
> [source repository](https://github.com/Chariot-AI/pipecat-chariot)
> . Learn more about
> [community integrations](https://docs.pipecat.ai/api-reference/server/services/community-integrations.md)
> .

## Overview

`ChariotTTSService` synthesizes speech using [Chariot](https://chariot.in), which
serves lifelike voices for Indian languages and English.

The service keeps one WebSocket open for the whole conversation, with each bot
turn as its own context, and streams audio while the server is still
generating. Any voice speaks any supported language, so the audio follows the
text rather than the voice, and there is no language parameter to set.

> [card] [Source Repository](https://github.com/Chariot-AI/pipecat-chariot)
>
> Package source, the voice agent example, and issue tracker

> [card] [PyPI Package](https://pypi.org/project/pipecat-chariot/)
>
> The `pipecat-chariot` package on PyPI

> [card] [Chariot](https://docs.chariot.in/api-reference/introduction)
>
> API reference, voices, and supported languages

> [card] [API Keys](https://platform.chariot.in)
>
> Create an account and manage your Chariot API keys

## Installation

```bash theme={null}
uv add pipecat-chariot
```

## Prerequisites

1. Create an account at [platform.chariot.in](https://platform.chariot.in). New accounts include free credits.
2. Copy an API key from the console and set `CHARIOT_API_KEY`.
3. Optionally pick a voice from `GET https://api.chariot.in/v1/voices`. Without one the service uses a Chariot stock voice.

## Configuration

**api\_key** `str` *required*

Chariot API key.

**voice\_id** `str` (default: None)

Voice UUID from `GET /v1/voices`. `settings.voice` takes precedence. Defaults
to a Chariot stock voice.

**model** `str` (default: chariot-multilingual-v1)

`chariot-multilingual-v1` or `chariot-v0`. `settings.model` takes precedence.

**speed** `float` (default: None)

Speaking rate. Leave unset for the voice as recorded. `settings.speed` takes
precedence.

**enable\_logging** `bool` (default: None)

Not sent unless set. Unset or `True`: your workspace's data retention setting
decides. `False` keeps the generated audio out of storage.

**sample\_rate** `int` (default: 44100)

Chariot streams 44.1 kHz; a mismatch logs a warning.

### Settings

Pass these through `ChariotTTSService.Settings(...)`. They can also be updated
while the pipeline is running with `TTSUpdateSettingsFrame`.

| Parameter | Type | Default | Description |
| - | - | - | - |
| `voice` | `str` | stock voice | Voice UUID. Applies from the next turn, without reconnecting. |
| `model` | `str` | `chariot-multilingual-v1` | Changing it reconnects. |
| `speed` | `float` | voice as recorded | Applies from the next turn, without reconnecting. |

> [!NOTE]
>
> Speaking rates are pre-encoded per voice and per model, so `speed` is one of a
> fixed set rather than a range. `GET /v1/voices` lists what each voice offers
> under each model as `speeds`.

## Usage

```python theme={null}
import os

from pipecat_chariot import ChariotTTSService

tts = ChariotTTSService(
    api_key=os.getenv("CHARIOT_API_KEY"),
    settings=ChariotTTSService.Settings(voice=os.getenv("CHARIOT_VOICE_ID")),
)
```

## Interruptions

When the user barges in, the turn's Chariot context is cancelled: generation
stops at once and the connection stays open, so the next turn starts without a
new handshake. Nothing needs configuring.

## Compatibility

Tested with Pipecat v1.15.0 (`pipecat-ai>=1.13,<2`). See the
[changelog](https://github.com/Chariot-AI/pipecat-chariot/blob/main/CHANGELOG.md)
for updates.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.