> ## 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">
      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-[#24211D] px-5 py-3 text-sm font-semibold text-[#F8F3EA] no-underline transition-opacity hover:opacity-90 dark:bg-[#F8F3EA] dark:text-[#24211D]" 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-[#147D91] underline decoration-[#147D91]/60 underline-offset-4 hover:text-[#0F6070] dark:text-[#4FC3D9] dark:decoration-[#4FC3D9]/60 dark:hover:text-[#7AD3E3]" 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-[#147D91] dark:text-[#4FC3D9]">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">
      <a className="font-medium text-[#147D91] underline decoration-[#147D91]/60 underline-offset-4 hover:text-[#0F6070] dark:text-[#4FC3D9] dark:decoration-[#4FC3D9]/60 dark:hover:text-[#7AD3E3]" href="/docs/quickstart-five-minute">TTS in five minutes</a> is the complete walkthrough. The <a className="font-medium text-[#147D91] underline decoration-[#147D91]/60 underline-offset-4 hover:text-[#0F6070] dark:text-[#4FC3D9] dark:decoration-[#4FC3D9]/60 dark:hover:text-[#7AD3E3]" href="/docs/quickstart-cli">Rime CLI</a> covers the same steps from the terminal.
    </p>
  </div>

  <div className="mt-20">
    <p className="text-sm font-semibold uppercase tracking-wider text-[#147D91] dark:text-[#4FC3D9]">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.
    </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-[#147D91] dark:text-[#4FC3D9]">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 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4">
      <div className="rounded-2xl border border-zinc-200 bg-white p-6 dark:border-zinc-800 dark:bg-white/[0.03]">
        <div className="flex items-center gap-2.5">
          <Icon icon="rocket" size={19} color="#147D91" />

          <h3 className="m-0 text-base font-semibold text-zinc-950 dark:text-zinc-50">Get started</h3>
        </div>

        <div className="mt-4 flex flex-col gap-2.5 text-sm">
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/quickstart-five-minute">Generate your first audio</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="https://app.rime.ai/tokens">Create an API token</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/api-authentication">Authenticate requests</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/voices">Choose a voice</a>
        </div>
      </div>

      <div className="rounded-2xl border border-zinc-200 bg-white p-6 dark:border-zinc-800 dark:bg-white/[0.03]">
        <div className="flex items-center gap-2.5">
          <Icon icon="code" size={19} color="#147D91" />

          <h3 className="m-0 text-base font-semibold text-zinc-950 dark:text-zinc-50">Build</h3>
        </div>

        <div className="mt-4 flex flex-col gap-2.5 text-sm">
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/streaming">Stream audio over HTTP</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/websockets">Use WebSockets</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/quickstart-livekit">Build with LiveKit</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/pipecat">Integrate with Pipecat</a>
        </div>
      </div>

      <div className="rounded-2xl border border-zinc-200 bg-white p-6 dark:border-zinc-800 dark:bg-white/[0.03]">
        <div className="flex items-center gap-2.5">
          <Icon icon="sliders" size={19} color="#147D91" />

          <h3 className="m-0 text-base font-semibold text-zinc-950 dark:text-zinc-50">Customize</h3>
        </div>

        <div className="mt-4 flex flex-col gap-2.5 text-sm">
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/models">Choose a model</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/prompting">Guide delivery with prompts</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/platform/pronunciation-control">Control pronunciation</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/text-normalization">Format text</a>
        </div>
      </div>

      <div className="rounded-2xl border border-zinc-200 bg-white p-6 dark:border-zinc-800 dark:bg-white/[0.03]">
        <div className="flex items-center gap-2.5">
          <Icon icon="gauge-simple-max" size={19} color="#147D91" />

          <h3 className="m-0 text-base font-semibold text-zinc-950 dark:text-zinc-50">Operate</h3>
        </div>

        <div className="mt-4 flex flex-col gap-2.5 text-sm">
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/latency">Reduce latency</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/regional-endpoints">Select a region</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/on-prem/quickstart">Deploy on-prem</a>
          <a className="text-[#147D91] no-underline transition-colors hover:underline dark:text-[#4FC3D9]" href="/docs/privacy-compliance">Review privacy and compliance</a>
        </div>
      </div>
    </div>
  </div>

  <div className="mt-20">
    <p className="text-sm font-semibold uppercase tracking-wider text-[#147D91] dark:text-[#4FC3D9]">Models and voices</p>
    <h2 className="mt-2 text-3xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-50">Choose a model and voice</h2>

    <p className="mt-3 max-w-3xl text-zinc-600 dark:text-zinc-400">
      Voice availability depends on the model and language, so compare models first.
    </p>

    <div className="mt-8">
      <Columns cols={2}>
        <Card title="Compare models" icon="layer-group" href="/docs/models">
          Understand the tradeoffs across Coda 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">
    <p className="text-sm font-semibold uppercase tracking-wider text-[#147D91] dark:text-[#4FC3D9]">Resources</p>
    <h2 className="mt-2 text-3xl font-semibold tracking-tight text-zinc-950 dark:text-zinc-50">Reference and tooling</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>
