Skip to main content
Build a minimal voice-agent loop in FastAPI: the browser captures speech, your backend decides what to say, and Rime speaks the reply. This starter uses browser speech recognition and a stub response function; replace both with production components. Keep RIME_API_KEY on the server and call Rime over HTTPS with httpx. No Rime-specific PyPI package is required.

Prerequisites

  • A Rime API key from the API Tokens page, exported as RIME_API_KEY
  • Python 3.10+ with pip install fastapi uvicorn httpx

1. Server: FastAPI app with a TTS endpoint

Create main.py:
main.py
Verify it works before touching the frontend:
test.mp3 should be playable audio. A KeyError: 'RIME_API_KEY' at startup means the environment variable isn’t set.

2. Client: mic in, Rime audio out

Create index.html next to main.py. It uses the browser’s built-in SpeechRecognition for input (Chrome/Edge/Safari), a stub respond() function as the agent brain, and your /api/tts endpoint for the voice:
index.html
Open http://localhost:8000, select Speak, say something, and the agent answers in Rime’s astra voice.

Add streaming when latency matters

Legacy Coda /ws3. Use this section only for an existing /ws3 integration. For new clients, use the Coda WebSocket v1 JSON quickstart. Coda WebSocket v1 uses a different message format and does not return word timestamps.
For an existing /ws3 integration, connect your server to wss://users-ws.rime.ai/ws3 with the Python websockets library and relay events through FastAPI’s WebSocket support. Audio can then start while later sentences are still generating. Browser WebSockets cannot send the required Authorization header, so the Rime connection stays server-side.

Production building blocks

WebSocket API overview

Compare Coda WebSocket v1 with the legacy endpoints, their message formats, and their synthesis controls.

Voices

Swap astra for any Coda voice. Coda covers ten languages, and each voice serves one of them.

Streaming formats

Choose between Opus, MP3, WAV, PCM, and μ-law for your latency budget.

Pipecat

Building a full Python voice pipeline? Use the ready-made Rime plugin.