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

# Build real-time voice experiences

> Generate natural speech, build responsive voice agents, and run Rime in production.

<div className="mx-auto max-w-5xl px-6 py-16 lg:py-24">
  <div className="mx-auto max-w-3xl text-center">
    <h1 className="text-4xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-50 sm:text-5xl">
      Build real-time voice experiences
    </h1>

    <p className="mx-auto mt-5 max-w-2xl text-lg leading-8 text-zinc-600 dark:text-zinc-400">
      Everything you need to generate natural speech, build responsive voice agents, and run Rime in production.
    </p>

    <div className="mt-8 flex flex-wrap justify-center gap-3">
      <a className="rounded-lg bg-[#B2321A] px-5 py-3 text-sm font-semibold text-white no-underline transition-colors hover:bg-[#8f2815]" href="/docs/quickstart-five-minute">
        Generate your first audio
      </a>

      <a className="rounded-lg border border-zinc-300 px-5 py-3 text-sm font-semibold text-zinc-900 no-underline transition-colors hover:bg-zinc-100 dark:border-zinc-700 dark:text-zinc-100 dark:hover:bg-zinc-900" href="/docs/voice-agents">
        Build a voice agent
      </a>

      <a className="rounded-lg border border-zinc-300 px-5 py-3 text-sm font-semibold text-zinc-900 no-underline transition-colors hover:bg-zinc-100 dark:border-zinc-700 dark:text-zinc-100 dark:hover:bg-zinc-900" href="/docs/voices">
        Explore voices & models
      </a>
    </div>

    <p className="mt-4 text-sm text-zinc-500 dark:text-zinc-500">
      Need a key? Create an API token in the <a className="font-medium text-[#B2321A] underline decoration-[#B2321A]/60 underline-offset-4 hover:text-[#8f2815] dark:text-[#E68732] dark:decoration-[#E68732]/60 dark:hover:text-[#f0a35c]" href="https://app.rime.ai/tokens">Rime dashboard</a>.
    </p>
  </div>

  <div className="mt-16">
    <div className="mb-6">
      <p className="text-sm font-semibold uppercase tracking-wider text-[#B2321A] dark:text-[#E68732]">First request</p>
      <h2 className="mt-2 text-2xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-50">Go from text to audio</h2>

      <p className="mt-2 text-zinc-600 dark:text-zinc-400">
        Set <code>RIME\_API\_KEY</code>, run one of these examples, and play the generated <code>hello.mp3</code> file.
      </p>
    </div>

    <CodeGroup>
      ```bash cURL theme={null}
      curl --request POST \
        --url https://users.rime.ai/v1/rime-tts \
        --header "Authorization: Bearer $RIME_API_KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: audio/mpeg" \
        --output hello.mp3 \
        --data '{
          "speaker": "astra",
          "text": "Hello from Rime.",
          "modelId": "coda",
          "lang": "en"
        }'
      ```

      ```python Python theme={null}
      import os
      import requests

      response = requests.post(
          "https://users.rime.ai/v1/rime-tts",
          headers={
              "Authorization": f"Bearer {os.environ['RIME_API_KEY']}",
              "Accept": "audio/mpeg",
          },
          json={
              "speaker": "astra",
              "text": "Hello from Rime.",
              "modelId": "coda",
              "lang": "en",
          },
      )
      response.raise_for_status()

      with open("hello.mp3", "wb") as audio:
          audio.write(response.content)
      ```

      ```javascript JavaScript theme={null}
      import { writeFile } from "node:fs/promises";

      const response = await fetch("https://users.rime.ai/v1/rime-tts", {
        method: "POST",
        headers: {
          Authorization: `Bearer ${process.env.RIME_API_KEY}`,
          "Content-Type": "application/json",
          Accept: "audio/mpeg",
        },
        body: JSON.stringify({
          speaker: "astra",
          text: "Hello from Rime.",
          modelId: "coda",
          lang: "en",
        }),
      });

      if (!response.ok) throw new Error(`Rime API error: ${response.status}`);
      await writeFile("hello.mp3", Buffer.from(await response.arrayBuffer()));
      ```
    </CodeGroup>

    <p className="mt-4 text-sm text-zinc-500 dark:text-zinc-500">
      Want the complete walkthrough? Follow <a className="font-medium text-[#B2321A] underline decoration-[#B2321A]/60 underline-offset-4 hover:text-[#8f2815] dark:text-[#E68732] dark:decoration-[#E68732]/60 dark:hover:text-[#f0a35c]" href="/docs/quickstart-five-minute">TTS in five minutes</a>. Prefer the terminal? Try the <a className="font-medium text-[#B2321A] underline decoration-[#B2321A]/60 underline-offset-4 hover:text-[#8f2815] dark:text-[#E68732] dark:decoration-[#E68732]/60 dark:hover:text-[#f0a35c]" href="/docs/quickstart-cli">Rime CLI</a>.
    </p>
  </div>

  <div className="mt-20">
    <p className="text-sm font-semibold uppercase tracking-wider text-[#B2321A] dark:text-[#E68732]">Choose what you're building</p>
    <h2 className="mt-2 text-3xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-50">Start with the path that matches your application</h2>

    <p className="mt-3 max-w-3xl text-zinc-600 dark:text-zinc-400">
      Rime exposes one HTTP and WebSocket API surface. Choose a workflow, then move into the implementation and reference material you need.
    </p>

    <div className="mt-8">
      <Columns cols={3}>
        <Card title="Add speech to an application" icon="wave-sine" href="/docs/quickstart-five-minute">
          Generate speech over HTTP, stream the response, and play it in your application.
        </Card>

        <Card title="Build a real-time voice agent" icon="microphone-lines" href="/docs/voice-agents">
          Connect Rime to an STT, LLM, and audio transport for responsive conversations.
        </Card>

        <Card title="Deploy on your infrastructure" icon="server" href="/docs/on-prem/quickstart">
          Run Rime privately with Docker Compose or Kubernetes.
        </Card>
      </Columns>
    </div>
  </div>

  <div className="mt-20">
    <p className="text-sm font-semibold uppercase tracking-wider text-[#B2321A] dark:text-[#E68732]">Developer journey</p>
    <h2 className="mt-2 text-3xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-50">From first audio to production</h2>

    <p className="mt-3 max-w-3xl text-zinc-600 dark:text-zinc-400">
      Follow the lifecycle or jump directly to the problem you're solving.
    </p>

    <div className="mt-8">
      <Columns cols={4}>
        <Card title="Get started" icon="rocket">
          * [Generate your first audio](/docs/quickstart-five-minute)
          * [Create an API token](https://app.rime.ai/tokens)
          * [Authenticate requests](/docs/api-authentication)
          * [Choose a voice](/docs/voices)
        </Card>

        <Card title="Build" icon="code">
          * [Stream audio over HTTP](/docs/streaming)
          * [Use WebSockets](/docs/websockets)
          * [Build with LiveKit](/docs/quickstart-livekit)
          * [Integrate with Pipecat](/docs/pipecat)
        </Card>

        <Card title="Customize" icon="sliders">
          * [Choose a model](/docs/models)
          * [Guide delivery with prompts](/docs/prompting)
          * [Control pronunciation](/platform/pronunciation-control)
          * [Format text](/docs/text-normalization)
        </Card>

        <Card title="Operate" icon="gauge-simple-max">
          * [Reduce latency](/docs/latency)
          * [Select a region](/docs/regional-endpoints)
          * [Deploy on-prem](/docs/on-prem/quickstart)
          * [Review privacy and compliance](/docs/privacy-compliance)
        </Card>
      </Columns>
    </div>
  </div>

  <div className="mt-20">
    <p className="text-sm font-semibold uppercase tracking-wider text-[#B2321A] dark:text-[#E68732]">Models and voices</p>
    <h2 className="mt-2 text-3xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-50">Choose the right sound for your application</h2>

    <p className="mt-3 max-w-3xl text-zinc-600 dark:text-zinc-400">
      Compare model capabilities, then browse voices by model and language before choosing what to put into production.
    </p>

    <div className="mt-8">
      <Columns cols={2}>
        <Card title="Compare models" icon="layer-group" href="/docs/models">
          Understand the tradeoffs across Coda, Arcana, and Mist before choosing a model ID.
        </Card>

        <Card title="Browse voices" icon="headphones" href="/docs/voices">
          Explore the voice catalog and find voices available for your model and language.
        </Card>
      </Columns>
    </div>
  </div>

  <div className="mt-20 border-t border-zinc-200 pt-12 dark:border-zinc-800">
    <p className="text-sm font-semibold uppercase tracking-wider text-[#B2321A] dark:text-[#E68732]">Resources</p>
    <h2 className="mt-2 text-3xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-50">Keep building</h2>

    <div className="mt-8">
      <Columns cols={4}>
        <Card title="API reference" icon="brackets-curly" href="/docs/api-reference">
          Endpoints, parameters, formats, and examples.
        </Card>

        <Card title="API cheat sheet" icon="rectangle-list" href="/docs/api-cheat-sheet">
          Common requests and endpoints on one page.
        </Card>

        <Card title="CLI" icon="terminal" href="/docs/quickstart-cli">
          Generate and inspect audio from your terminal.
        </Card>

        <Card title="MCP server" icon="robot" href="/docs/mcp">
          Use Rime from Claude, Codex, and compatible IDEs.
        </Card>
      </Columns>
    </div>
  </div>
</div>
