LiveKit docs › Build Agents › Models › STT › Cartesia

---

# Cartesia STT

> How to use Cartesia STT with LiveKit Agents.

- **[Use in Agent Builder](https://cloud.livekit.io/projects/p_/agents/builder/new?stt=cartesia%2Fink-whisper)**: Create a new agent in your browser using cartesia/ink-whisper

## Overview

Cartesia speech-to-text is available in LiveKit Agents through [LiveKit Inference](https://docs.livekit.io/agents/models/inference.md) and the [Cartesia plugin](#plugin). With LiveKit Inference, your agent runs on LiveKit's infrastructure to minimize latency. No separate provider API key is required, and usage and rate limits are managed through LiveKit Cloud. Use the plugin instead if you want to manage your own billing and rate limits. Pricing for LiveKit Inference is available on the [pricing page](https://livekit.com/pricing/inference#stt).

## LiveKit Inference

Use [LiveKit Inference](https://docs.livekit.io/agents/models/inference.md) to access Cartesia STT without a separate Cartesia API key.

A checkmark in the **EU endpoint** column in the following tables means the model has a dedicated EU endpoint, in addition to the global endpoint. To learn more, see [Data residency](https://docs.livekit.io/agents/models/inference.md#data-residency).

| Model name | Model ID | Languages | EU endpoint |
| -------- | -------- | --------- | ------ |
| Ink 2 | `cartesia/ink-2` | `en` | ✓ |
| Ink Whisper | `cartesia/ink-whisper` | `en`, `zh`, `de`, `es`, `ru`, `ko`, `fr`, `ja`, `pt`, `tr`, `pl`, `ca`, `nl`, `ar`, `sv`, `it`, `id`, `hi`, `fi`, `vi`, `he`, `uk`, `el`, `ms`, `cs`, `ro`, `da`, `hu`, `ta`, `no`, `th`, `ur`, `hr`, `bg`, `lt`, `la`, `mi`, `ml`, `cy`, `sk`, `te`, `fa`, `lv`, `bn`, `sr`, `az`, `sl`, `kn`, `et`, `mk`, `br`, `eu`, `is`, `hy`, `ne`, `mn`, `bs`, `kk`, `sq`, `sw`, `gl`, `mr`, `pa`, `si`, `km`, `sn`, `yo`, `so`, `af`, `oc`, `ka`, `be`, `tg`, `sd`, `gu`, `am`, `yi`, `lo`, `uz`, `fo`, `ht`, `ps`, `tk`, `nn`, `mt`, `sa`, `lb`, `my`, `bo`, `tl`, `mg`, `as`, `tt`, `haw`, `ln`, `ha`, `ba`, `jw`, `su`, `yue` |  |

### Usage

To use Cartesia, use the `STT` class from the `inference` module:

**Python**:

```python
from livekit.agents import AgentSession, inference

session = AgentSession(
    stt=inference.STT(
        model="cartesia/ink-whisper", 
        language="en"
    ),
    # ... tts, stt, vad, turn_handling, etc.
)

```

---

**Node.js**:

```typescript
import { AgentSession, inference } from '@livekit/agents';

const session = new AgentSession({
    stt: new inference.STT({ 
        model: "cartesia/ink-whisper", 
        language: "en" 
    }),
    // ... tts, stt, vad, turnHandling, etc.
});

```

### Parameters

- **`model`** _(string)_: The model to use for the STT.

- **`language`** _(LanguageCode)_ (optional): [Language code](https://docs.livekit.io/agents/models/stt.md#language-codes) for the transcription. If not set, the provider default applies.

- **`extra_kwargs`** _(dict)_ (optional): Additional parameters to pass to the Cartesia STT API. See [model parameters](#model-parameters) for supported fields.

In Node.js this parameter is called `modelOptions`.

#### Model parameters

Pass the following parameters inside `extra_kwargs` (Python) or `modelOptions` (Node.js):

| Parameter | Type | Default | Notes |
| min_volume | `float` |  | Minimum input volume level required to start transcription. |
| max_silence_duration_secs | `float` |  | Maximum duration of silence in seconds before ending a transcription segment. |

### String descriptors

As a shortcut, you can also pass a [model ID](#inference) string directly to the `stt` argument in your `AgentSession`:

**Python**:

```python
from livekit.agents import AgentSession

session = AgentSession(
    stt="cartesia/ink-whisper:en",
    # ... tts, stt, vad, turn_handling, etc.
)

```

---

**Node.js**:

```typescript
import { AgentSession } from '@livekit/agents';

const session = new AgentSession({
    stt: "cartesia/ink-whisper:en",
    // ... tts, stt, vad, turnHandling, etc.
});

```

## Plugin

LiveKit's plugin support for Cartesia lets you connect directly to Cartesia's STT API with your own API key. For Node.js, use [LiveKit Inference](#inference).

Available in:
- [ ] Node.js
- [x] Python

### Installation

Install the plugin from PyPI:

```shell
uv add "livekit-agents[cartesia]~=1.8"

```

### Authentication

The Cartesia plugin requires a [Cartesia API key](https://play.cartesia.ai/keys).

Set `CARTESIA_API_KEY` in your `.env` file.

### Usage

Use Cartesia STT in an `AgentSession` or as a standalone transcription service. For example, you can use this STT in the [Voice AI quickstart](https://docs.livekit.io/agents/start/voice-ai.md).

The plugin defaults to the `ink-2` model, which detects the end of turn on its own. Set `turn_detection="stt"` so the session uses those signals to know when the user stops speaking:

```python
from livekit.plugins import cartesia

session = AgentSession(
   stt=cartesia.STT(),  # defaults to ink-2
   turn_handling={
      "turn_detection": "stt",
   },
   # ... llm, tts, etc.
)

```

> ℹ️ **Langauge support**
> 
> `ink-2` supports English only. To transcribe other languages, pass `model="ink-whisper"` explicitly. Setting a non-English `language` without a `model` automatically selects `ink-whisper`.

> 🔀 **Behavior change: Migrating from ink-whisper**
> 
> As of `livekit-agents` 1.5.15, `cartesia.STT()` defaults to `ink-2` instead of `ink-whisper`, which changes two behaviors:
> 
> - `update_options(model=...)` has no effect. Set the model when you construct the `STT` instance instead.
> - Word-aligned transcripts aren't supported. Use `ink-whisper` if your app depends on them.

### Parameters

This section describes some of the available parameters. See the [plugin reference](https://docs.livekit.io/reference/python/livekit/plugins/cartesia/index.html.md#livekit.plugins.cartesia.STT) for a complete list of all available parameters.

- **`model`** _(string)_ (optional) - Default: `ink-2`: Selected model to use for STT. Defaults to `ink-2` for English and to `ink-whisper` for other languages. See [Cartesia STT models](https://docs.cartesia.ai/build-with-cartesia/models/stt) for supported values.

- **`language`** _(LanguageCode)_ (optional) - Default: `en`: [Language code](https://docs.livekit.io/agents/models/stt.md#language-codes) for the input audio. For supported languages, see [Cartesia STT models](https://docs.cartesia.ai/build-with-cartesia/models/stt).

## Additional resources

The following resources provide more information about using Cartesia with LiveKit Agents.

- **[Python package](https://pypi.org/project/livekit-plugins-cartesia/)**: The `livekit-plugins-cartesia` package on PyPI.

- **[Plugin reference](https://docs.livekit.io/reference/python/livekit/plugins/cartesia/index.html.md#livekit.plugins.cartesia.STT)**: Reference for the Cartesia STT plugin.

- **[GitHub repo](https://github.com/livekit/agents/tree/main/livekit-plugins/livekit-plugins-cartesia)**: View the source or contribute to the LiveKit Cartesia STT plugin.

- **[Cartesia docs](https://docs.cartesia.ai/build-with-cartesia/models/stt)**: Cartesia STT docs.

- **[Voice AI quickstart](https://docs.livekit.io/agents/start/voice-ai.md)**: Get started with LiveKit Agents and Cartesia STT.

- **[Cartesia TTS](https://docs.livekit.io/agents/models/tts/cartesia.md)**: Guide to the Cartesia TTS plugin with LiveKit Agents.

---

This document was rendered at 2026-10-07T15:26:38.760Z.
For the latest version of this document, see [https://docs.livekit.io/agents/models/stt/cartesia.md](https://docs.livekit.io/agents/models/stt/cartesia.md).

To explore all LiveKit documentation, see [llms.txt](https://docs.livekit.io/llms.txt).