> ## Documentation Index
> Fetch the complete documentation index at: https://daily-main.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Giggy TTS

> GiggyHttpTTSService provides expressive HTTP speech synthesis with progressive PCM audio in Pipecat pipelines.

export const CommunityMaintained = ({maintainer, maintainerUrl, repo}) => <Note>
    <strong>Community-maintained integration.</strong> This service is built and
    maintained by{" "}
    <a href={maintainerUrl} target="_blank" rel="noreferrer">
      {maintainer}
    </a>
    . Pipecat does not test or officially support it. Please report issues and
    request changes on the{" "}
    <a href={repo} target="_blank" rel="noreferrer">
      source repository
    </a>
    . Learn more about{" "}
    <a href="/api-reference/server/services/community-integrations">
      community integrations
    </a>
    .
  </Note>;

<CommunityMaintained maintainer="giggy-ai" maintainerUrl="https://github.com/giggy-ai" repo="https://github.com/giggy-ai/pipecat-giggy" />

## Overview

Giggy makes expressive Voice AI accessible to more developers. This integration
brings Giggy's paid streaming speech API into Pipecat, so developers can give
their assistants a distinctive voice while keeping their existing transcription,
language model, and transport providers.

`GiggyHttpTTSService` connects Pipecat to Giggy's HTTP speech endpoint, using
Giggy voice UUIDs and progressive mono PCM16 at 24 kHz. The integration is
maintained by Giggy, the speech API provider. It supports runtime voice/speed
updates, first-audio and usage metrics, and cancellation on interruption.

## Installation

```sh theme={null}
uv add pipecat-giggy
```

Requires Python 3.11 or later. Last tested with Python 3.12 and Pipecat 1.12.0.
The package currently pins that Pipecat version.

## Prerequisites

For a step-by-step account, API key, voice and Streaming setup walkthrough,
see the [Giggy Pipecat setup guide](https://giggy.ai/docs/speech-api?utm_source=pipecat\&utm_medium=referral\&utm_campaign=pipecat_integration\&utm_content=pipecat_docs#api-pipecat).

* A [Giggy account and API key](https://giggy.ai).
* A Giggy voice UUID from `GET /v1/voices` or `GET /v1/my-voices`.
* Streaming credits. This endpoint uses paid Streaming admission;
  see [Giggy pricing](https://giggy.ai/pricing).
* Set `GIGGY_API_KEY` and `GIGGY_VOICE_ID` in your application environment.

## Configuration

| Parameter | Default | Description |
| - | - | - |
| `api_key` | Required | Giggy API key |
| `voice_id` | Required | Public or owned Giggy voice UUID |
| `aiohttp_session` | Required | Caller-owned HTTP session |
| `sample_rate` | `24000` | Only supported Streaming output rate |
| `speed` | `1.0` | Speech speed, 0.25â€“4 inclusive |

Additional keyword arguments pass to Pipecat's `TTSService`. Runtime updates use
`GiggyHttpTTSService.Settings(voice="voice-uuid", speed=1.1)` inside a
`TTSUpdateSettingsFrame(delta=...)`. The model is fixed to `giggyspeech`.

## Usage

```python theme={null}
import os
import aiohttp
from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.worker import PipelineParams, PipelineWorker
from pipecat.workers.runner import WorkerRunner
from pipecat_giggy import GiggyHttpTTSService

async def run_pipeline(transport, stt, llm):
    async with aiohttp.ClientSession() as session:
        tts = GiggyHttpTTSService(
            api_key=os.environ["GIGGY_API_KEY"],
            voice_id=os.environ["GIGGY_VOICE_ID"],
            aiohttp_session=session,
        )
        # Supply your application's transport, STT, and LLM processors.
        worker = PipelineWorker(
            Pipeline([transport.input(), stt, llm, tts, transport.output()]),
            params=PipelineParams(audio_out_sample_rate=24000),
        )
        runner = WorkerRunner()
        await runner.add_workers(worker)
        await runner.run()
```

The application owns the session and must keep it open until the pipeline stops.
Your transport/turn-detection processors generate `InterruptionFrame` and your
output transport clears queued playback. Cancellation closes the active HTTP
response; it does not guarantee immediate GPU preemption. Failed requests are
not retried. This TTS service provides no microphone transcription or word
timestamps.

See the [source repository](https://github.com/giggy-ai/pipecat-giggy) for the
single-file runnable WAV example, timeout behavior, maintenance and changelog.

## Demo

[Watch the Angela Fowler demo](https://github.com/giggy-ai/pipecat-giggy/releases/download/v0.1.0/giggy-angela-starts-with-speech.mp4)
in Giggy's repository. It shows real speech synthesis, a simulated user
interruption and resumed speech. The displayed text is synthesis text, not
microphone transcription.


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