Skip to main content
Community-maintained integration. This service is built and maintained by Gnani-AI-Mintlify. Pipecat does not test or officially support it. Please report issues and request changes on the source repository. Learn more about community integrations.

Overview

GnaniHttpTTSService, GnaniSSETTSService, and GnaniTTSService synthesize speech using Gnani, a production speech AI platform for 10+ Indian languages with real-time streaming and low-latency synthesis. Use the REST service for simple request/response synthesis, the SSE service for streaming with lower latency than REST, or the WebSocket GnaniTTSService for lowest latency with interruption support via InterruptibleTTSService.

Source Repository

Source code, examples, and issues for the Gnani integration

PyPI Package

The pipecat-gnani package on PyPI

Gnani Website

Learn about Gnani’s speech AI platform

Gnani API Docs

TTS REST, SSE, and WebSocket API reference

Demo Video

Gnani × Pipecat integration — STT/TTS pipeline and interruption handling

gnani-vachana SDK

Core Gnani Python SDK (>= 0.9.0) installed as a dependency

Installation

Install the community package directly:
This also installs the gnani-vachana (>= 0.9.0) core SDK. The Python import package name remains gnani.

Prerequisites

Gnani Account Setup

Before using the Gnani TTS services, you need:
  1. Gnani API key: Get one from Gnani APIs.
  2. Set credentials: Export GNANI_API_KEY as an environment variable.

Required Environment Variables

  • GNANI_API_KEY: Your Gnani API key for authentication

Configuration

All three services share the same audio-format settings via their Settings dataclasses. The key difference is transport: REST for single-request synthesis, SSE for chunked streaming, and WebSocket for interruptible real-time synthesis.

Shared constructor parameters

str
required
Gnani API key for authentication.
str
default:"None"
Voice name for synthesis. Must belong to the selected model. When None, the default is Pranav for timbre-v2.5 and Avinash for timbre-v3.0. See Available voices.
str
default:"timbre-v2.5"
TTS model identifier. One of timbre-v2.5 or timbre-v3.0.
int
default:"None"
Output sample rate in Hz. One of 8000, 16000, 22050, 24000, 44100, or 48000. When omitted, negotiated from the pipeline configuration.
Settings
default:"None"
Runtime-updatable TTS settings. See Settings below.

GnaniHttpTTSService and GnaniSSETTSService (HTTP)

aiohttp.ClientSession
required
Shared aiohttp session for HTTP requests.

Settings

Runtime-configurable settings passed via the settings constructor argument using GnaniHttpTTSService.Settings(...), GnaniSSETTSService.Settings(...), or GnaniTTSService.Settings(...). Settings that conflict with the chosen model or fall outside the allowed values raise ValueError when the service is created or updated. Output is always 16-bit PCM, so other encodings and containers (mp3, ogg, mulaw, alaw) are rejected.
Voice, model, language, and speed changes take effect on the next synthesis request. If an update is rejected, the previous settings stay in place. For the supported languages, see the Gnani TTS documentation.

Available voices

timbre-v2.5 (42 voices)

timbre-v3.0 (13 voices)

Avinash, Chetana, Devansh, Harshad, Kalpana, Lakshmi, Prakash, Riyaa, Shivani, Shubham, Tarika, Vasudha, Yashraj The voice lists are also available in code as pipecat_gnani.TIMBRE_V25_VOICES and pipecat_gnani.TIMBRE_V30_VOICES.

Usage

Streaming with interruption (WebSocket)

Choosing a model, language, and speed

SSE streaming

REST (non-streaming)

Minimal pipeline example

Compatibility

Tested with the latest Pipecat main branch (v1.5.0+) using pipecat-gnani. Requires gnani-vachana >= 0.9.0. Check the source repository for the latest tested version and changelog.