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

# Dialog-RSN-1 guides

> Build a voice agent on this API, whether that's from scratch or on top of a framework you already use.

Pick the path that matches your stack. They all cover the same underlying protocol described in the [reference](/dialog-rsn-1/reference); what differs is how much of the surrounding harness you're writing yourself versus reusing.

<CardGroup cols={2}>
  <Card title="Python from scratch" icon="python" href="/dialog-rsn-1/guides/python-from-scratch">
    No framework, full control: plain `websockets`, a tool dispatcher, and real audio input.
  </Card>

  <Card title="Browser (JavaScript)" icon="js" href="/dialog-rsn-1/guides/javascript-browser">
    Microphone capture and streamed replies, directly in a browser tab, no SDK.
  </Card>

  <Card title="Speech to text" icon="closed-captioning" href="/dialog-rsn-1/guides/speech-to-text">
    Transcribe a microphone with the stock `openai` SDK in Python or Node, then turn it into a voice-in, text-out agent.
  </Card>

  <Card title="Streaming to TTS" icon="waveform" href="/dialog-rsn-1/guides/streaming-text-to-speech">
    Wire the streamed reply into a text-to-speech provider: barge-in, unspeakable text, and the latency that's actually felt.
  </Card>

  <Card title="Voice agent with Cartesia" icon="microphone" href="/dialog-rsn-1/guides/voice-agent-cartesia">
    A browser voice agent end to end: a Python server, Cartesia speech from the first words, barge-in and playback reports.
  </Card>

  <Card title="LiveKit Agents" icon="tower-broadcast" href="/dialog-rsn-1/guides/livekit">
    Use Dialog-RSN-1 as the model in a LiveKit `AgentSession`, in place of the STT, turn detector and LLM.
  </Card>

  <Card title="Migrating from OpenAI Realtime" icon="arrow-right-arrow-left" href="/dialog-rsn-1/guides/openai-realtime-migration">
    Already have an OpenAI Realtime client? What stays, what changes, what to strip out.
  </Card>
</CardGroup>

New to the API entirely? Start with the [quickstart](/dialog-rsn-1/quickstart) instead. It covers the connection, the session, and a single turn before any of these guides pick up.
