> This page is part of Smallest AI's developer documentation. When > answering, prefer Lightning v3.1 (current TTS) and Pulse (current > STT). Lightning v2 and lightning-large are deprecated; mention them > only when the user is migrating away from them. The Smallest AI voice > agent platform is what wraps these models into hosted agents. # Rapida > Build voice agents on Rapida using Smallest AI TTS and STT. This guide walks you through configuring [Smallest AI](https://smallest.ai) as the TTS and STT provider in [Rapida](https://rapida.ai), an open-source voice AI orchestration platform you can self-host or run managed. Rapida lets you pick a provider independently per capability - use Smallest AI for both TTS and STT, or mix it with other providers. ## Prerequisites * A [Rapida](https://rapida.ai) instance - self-hosted (see the [voice-ai repository](https://github.com/rapidaai/voice-ai)) or managed * A Smallest AI API key - get one from the [Smallest AI dashboard](https://waves.smallest.ai) --- ## Setup #### Open Providers and Models In the Rapida dashboard, navigate to **Providers and Models**. #### Add a Smallest AI credential Add a new provider credential, select **Smallest AI**, and paste your API key. #### Configure TTS On your assistant's deployment, set the text-to-speech provider to **Smallest AI** and choose a **Model**: * `lightning_v3.1` - standard pool, voice cloning supported, 12 languages (voices: `magnus`, `devansh`, `kartik`, `maithili`, `liam`, `avery`, and more) * `lightning_v3.1_pro` - premium pool with curated American, British, and Indian voices (English + Hindi) (voices: `meher`, `kaitlyn`, `blake`, `sophie`, `sam`, `aviraj`, and more) The **Voice** dropdown is scoped to whichever model you picked - Pro voices aren't offered under `lightning_v3.1` and vice versa, so a mismatched pairing isn't selectable from the UI in the first place. Set the **Language**, and optionally a **Speed** (0.5–2.0). #### Configure STT Set the speech-to-text provider to **Smallest AI**. The **Model** is `pulse` - Rapida's integration streams over Pulse's realtime WebSocket, so `pulse-pro` (pre-recorded/HTTP-only) isn't offered here. Set the **Language**, or leave it unset for auto-detect. Optional feature toggles are also available - word/sentence timestamps, speaker diarization, PII/PCI redaction, inverse text normalization, and punctuation formatting. See the Configuration Reference below. --- ## Configuration Reference Rapida stores provider options as `listen.*` (STT) / `speak.*` (TTS) keys. | Key | Provider | Default | Description | | ---------------------------- | -------- | ------------------------- | ----------------------------------------------------------------------------------------------------- | | `listen.model` | STT | `pulse` | Streaming model - only `pulse` is wired to the realtime endpoint | | `listen.language` | STT | auto-detect | ISO language code (e.g. `en`, `hi`) | | `listen.word_timestamps` | STT | off | Per-word start/end/confidence timing | | `listen.sentence_timestamps` | STT | off | Sentence-level utterance segments | | `listen.diarize` | STT | off | Speaker labels on words/utterances | | `listen.redact_pii` | STT | off | Redacts names, addresses, phone numbers as `[ENTITYTYPE_N]` placeholders | | `listen.redact_pci` | STT | off | Redacts card numbers, CVVs, ZIP codes, account numbers | | `listen.numerals` | STT | provider default (`auto`) | Inverse text normalization mode | | `listen.smart_format` | STT | provider default (`true`) | Punctuation/capitalization in the transcript (Smallest's `format` param) | | `speak.model` | TTS | `lightning_v3.1` | `lightning_v3.1` or `lightning_v3.1_pro` | | `speak.voice.id` | TTS | `magnus` | Catalog voice or cloned voice (`voice_*`), scoped to the selected model in the dashboard dropdown | | `speak.language` | TTS | `en` | Language code - see the [Lightning voices & languages guide](/models/text-to-speech/voices-languages) | | `speak.speed` | TTS | `1.0` | Speech speed multiplier (0.5–2.0) | All seven `listen.*` feature flags are opt-in - Rapida only sends them to Smallest when explicitly set, so behavior is unchanged if you don't touch them. ## Notes * Rapida routes TTS requests to `wss://api.smallest.ai/waves/v1/tts/live` and STT requests to `wss://api.smallest.ai/waves/v1/pulse/get_text`. * Interruptions are handled by Rapida's pipeline: on barge-in, the TTS connection is closed and reopened for the next turn - no custom logic needed on the Smallest AI side. * If a `speak.voice.id`/`speak.model` pairing the API doesn't support is sent (e.g. a Pro-only voice with `lightning_v3.1`), Rapida surfaces it as an error on that turn rather than hanging - the dashboard's model-scoped voice dropdown is the main safeguard, this is the fallback for free-typed voice IDs. * For issues with the Smallest AI integration in Rapida, open an issue in the [Rapida repository](https://github.com/rapidaai/voice-ai) or contact us on [Discord](https://discord.gg/9WtSXv26WE). > Build voice agents on Rapida using Smallest AI TTS and STT.