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

# Voice Agent Starter

> Build a conversational voice AI agent that listens, thinks, and responds in real time

<Card title="View Simple Agent Example on GitHub" icon="github" href="https://github.com/GetStream/Vision-Agents/tree/main/examples/01_simple_agent_example">
  Check out the complete Simple Agent example in our GitHub repository
</Card>

Build a custom STT → LLM → TTS voice agent with [Gemini](https://ai.google.dev/) for reasoning, [Deepgram](https://deepgram.com/) for speech recognition, and [ElevenLabs](https://elevenlabs.io/) for natural-sounding responses. The agent joins a video call, handles voice conversation, and can observe the camera feed.

<Info>
  Complete the [Quickstart](/introduction/quickstart) first. This example uses a **custom pipeline** (not Realtime mode) — see [Voice Agents](/introduction/voice-agents) for the same pattern with additional providers.
</Info>

## What You Will Build

* Listen to user speech and convert it to text with [Deepgram](https://deepgram.com/) STT
* Process conversations using [Gemini](https://ai.google.dev/) with function calling (weather tool)
* Respond with natural-sounding speech via [ElevenLabs](https://elevenlabs.io/) TTS
* Run on [Stream's](https://getstream.io/) low-latency edge network

## Prerequisites

API keys for Stream, Gemini, Deepgram, and ElevenLabs. Free tiers are available from each provider.

```bash theme={null}
STREAM_API_KEY=
STREAM_API_SECRET=
GOOGLE_API_KEY=
DEEPGRAM_API_KEY=
ELEVENLABS_API_KEY=
```

## Run the example

<Steps>
  <Step title="Clone and install" icon="folder-plus">
    Clone the repo and install dependencies from the root:

    ```bash theme={null}
    git clone git@github.com:GetStream/Vision-Agents.git
    cd Vision-Agents
    uv sync
    ```
  </Step>

  <Step title="Configure environment" icon="key">
    Create a `.env` file at the repo root with your API keys (see Prerequisites above).
  </Step>

  <Step title="Run the agent" icon="play">
    From the example directory:

    ```bash theme={null}
    cd examples/01_simple_agent_example
    uv run simple_agent_example.py run
    ```

    The CLI opens a browser demo. Join the call and speak to the agent. Ask about the weather to trigger the registered `get_weather` function.
  </Step>
</Steps>

## How it works

The agent uses a custom pipeline instead of a Realtime model:

```python theme={null}
agent = Agent(
    edge=getstream.Edge(),
    agent_user=User(name="My happy AI friend", id="agent"),
    instructions=INSTRUCTIONS,
    llm=setup_llm(),  # gemini.LLM() with @register_function
    tts=elevenlabs.TTS(model_id="eleven_flash_v2_5"),
    stt=deepgram.STT(eager_turn_detection=True),
)
```

Audio flows: user speaks → **Deepgram STT** transcribes → **Gemini LLM** generates a response (or calls a tool) → **ElevenLabs TTS** speaks it back.

Deepgram's `eager_turn_detection=True` reduces latency by starting LLM inference before the user fully stops speaking.

## Customize

* **Swap providers**: any STT, LLM, and TTS plugin works — see [Integrations](/integrations/introduction-to-integrations).
* **Use Realtime instead**: replace the pipeline with `llm=gemini.Realtime()` and remove `stt` and `tts` — same pattern as the [Quickstart](/introduction/quickstart).
* **Add processors**: pass items to `processors=[]` for video analysis — see [AI Golf Coach](/examples/golf-coach).

## Next Steps

<CardGroup cols={2}>
  <Card title="AI Golf Coach" icon="golf-ball-tee" href="/examples/golf-coach">
    Add video processing with YOLO pose detection
  </Card>

  <Card title="Voice Agents" icon="microphone" href="/introduction/voice-agents">
    Custom pipelines and function calling
  </Card>

  <Card title="Integrations" icon="plug" href="/integrations/introduction-to-integrations">
    Swap in any of 35+ supported AI providers
  </Card>
</CardGroup>
