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

# Gemini Live (Speech-to-Speech)

> Build voice agents with Google Gemini Live for direct speech-to-speech processing

Build a voice agent using Google Gemini Live for native speech-to-speech processing. Gemini Live processes audio directly without intermediate text conversion, enabling lower latency and more natural conversations.

**Best for:** Multimodal applications requiring audio, video, and text processing with low latency.

***

## How Speech-to-Speech Differs

**Standard Pipeline (STT → LLM → TTS):**

<div className="sipflow">
  <div className="sipflow__head">
    <span>Standard pipeline</span>
    <span className="sipflow__head-right"><span className="sipflow__led" aria-hidden="true" />Audio in · Audio out</span>
  </div>

  <ol className="sipflow__body">
    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">Deepgram</span><span className="sipflow__sub">Speech-to-Text</span></span></div>
      <div className="sipflow__link"><span className="sipflow__rail" aria-hidden="true" /><span className="sipflow__edge-label">Text</span><span className="sipflow__arrow" aria-hidden="true" /></div>
    </li>

    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">OpenAI</span><span className="sipflow__sub">LLM</span></span></div>
      <div className="sipflow__link"><span className="sipflow__rail" aria-hidden="true" /><span className="sipflow__edge-label">Text</span><span className="sipflow__arrow" aria-hidden="true" /></div>
    </li>

    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">Cartesia</span><span className="sipflow__sub">Text-to-Speech</span></span></div>
    </li>
  </ol>
</div>

**Speech-to-Speech (Direct):**

<div className="sipflow">
  <div className="sipflow__head">
    <span>Speech-to-speech</span>
    <span className="sipflow__head-right"><span className="sipflow__led" aria-hidden="true" />Audio in · Audio out</span>
  </div>

  <ol className="sipflow__body">
    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">Gemini Live</span><span className="sipflow__sub">Direct audio-to-audio</span></span></div>
    </li>
  </ol>
</div>

Speech-to-speech models process audio natively, preserving tone, emotion, and context that may be lost in text transcription.

***

## Prerequisites

| Service    | What You Need                                                                        |
| ---------- | ------------------------------------------------------------------------------------ |
| **Plivo**  | Auth ID, Auth Token, Voice-enabled phone number                                      |
| **Google** | API key from [AI Studio](https://aistudio.google.com/apikey) with Gemini Live access |

***

## Installation

```bash theme={null}
pip install "pipecat-ai[google]"
```

***

## Environment Variables

```env theme={null}
# Plivo credentials
PLIVO_AUTH_ID=your_auth_id
PLIVO_AUTH_TOKEN=your_auth_token
PLIVO_PHONE_NUMBER=+1234567890

# Google credentials
GOOGLE_API_KEY=your_google_key
```

***

## Pipeline Configuration

```python theme={null}
from pipecat.services.google import GeminiLiveLLMService

# Speech-to-Speech service
llm = GeminiLiveLLMService(
    api_key=os.getenv("GOOGLE_API_KEY"),
    # model="gemini-2.0-flash-exp",  # Check available models
)
```

***

## Gemini Live Features

| Feature                      | Description                                   |
| ---------------------------- | --------------------------------------------- |
| **Multimodal processing**    | Handle audio, video, and text inputs together |
| **Real-time streaming**      | Low-latency audio and video processing        |
| **Voice activity detection** | Automatic speech handling                     |
| **Function calling**         | Integrate external tools and APIs             |
| **Context management**       | Maintain conversation history                 |

***

## Architecture

With Gemini Live, the pipeline is simplified:

<div className="sipflow sipflow--vertical">
  <div className="sipflow__head">
    <span>Architecture</span>
    <span className="sipflow__head-right"><span className="sipflow__led" aria-hidden="true" />Gemini Live</span>
  </div>

  <ol className="sipflow__body">
    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">Phone Call</span></span></div>

      <div className="sipflow__link sipflow__link--bi" aria-hidden="true">
        <span className="sipflow__arrow sipflow__arrow--back" />

        <span className="sipflow__rail" />

        <span className="sipflow__arrow" />
      </div>
    </li>

    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">Plivo</span></span></div>

      <div className="sipflow__link sipflow__link--bi" aria-hidden="true">
        <span className="sipflow__arrow sipflow__arrow--back" />

        <span className="sipflow__rail" />

        <span className="sipflow__arrow" />
      </div>
    </li>

    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">WebSocket</span></span></div>

      <div className="sipflow__link sipflow__link--bi" aria-hidden="true">
        <span className="sipflow__arrow sipflow__arrow--back" />

        <span className="sipflow__rail" />

        <span className="sipflow__arrow" />
      </div>
    </li>

    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">Pipecat</span></span></div>

      <div className="sipflow__link sipflow__link--bi" aria-hidden="true">
        <span className="sipflow__arrow sipflow__arrow--back" />

        <span className="sipflow__rail" />

        <span className="sipflow__arrow" />
      </div>
    </li>

    <li>
      <div className="sipflow__node"><span className="sipflow__node-body"><span className="sipflow__title">Gemini Live</span></span></div>
    </li>
  </ol>
</div>

A single service handles:

* Speech recognition
* Language understanding
* Response generation
* Voice synthesis

***

## Quick Start

### Inbound Calls

```bash theme={null}
git clone https://github.com/pipecat-ai/pipecat-examples.git
cd pipecat-examples/plivo-chatbot/inbound

# Configure environment
cp env.example .env
# Edit .env with Plivo and Google credentials

# Modify bot.py to use GeminiLiveLLMService
# Start server
uv sync && uv run server.py

# Expose with ngrok (development)
ngrok http 7860
```

Configure your Plivo number's Answer URL to your ngrok URL.

### Outbound Calls

```bash theme={null}
cd pipecat-examples/plivo-chatbot/outbound

cp env.example .env
uv sync && uv run server.py

# Initiate a call
curl -X POST http://localhost:7860/start \
  -H "Content-Type: application/json" \
  -d '{"phone_number": "+1234567890"}'
```

***

## When to Use Gemini Live

**Choose Gemini Live when:**

* You need multimodal capabilities (audio + video + text)
* Latency is critical
* You want simplified architecture
* You're already in the Google ecosystem

**Choose standard STT → LLM → TTS when:**

* You need specific voice characteristics (ElevenLabs, Cartesia)
* You want to mix providers (e.g., Deepgram STT + OpenAI LLM)
* You need fine-grained control over each component

***

## Related

* [Pipecat Overview](/docs/voice-agents/audio-streaming/integration-guides/pipecat/overview) - Architecture and setup
* [Gemini Live Docs](https://docs.pipecat.ai/server/services/s2s/gemini-live) - Full configuration
* [Google AI Studio](https://aistudio.google.com/) - API key management
