Please rotate your device

To continue exploring this website, please rotate your device to a vertical orientation

Sonic 3.6

Cartesia/Sonic 3.6

Real-time text-to-speech model, built on State Space Models (SSMs) for streaming speech generation.

text to speech

Sonic 3.6 is Cartesia’s most natural and expressive text-to-speech model, built for real-time use with sub-90ms latency and 44 languages. It says exactly what’s written and reads numbers, letters, and confirmation codes accurately. It also adjusts pacing, tone, and emotion to fit the context, so conversations feel human.

See full documentation

Upgrading from Sonic 3.5? Sonic 3.6 is fully backwards compatible. Change model_id to sonic-3.6, or pin sonic-3.6-2026-08-27 for production. Existing voice IDs, including instant and professional voice clones, carry over unchanged. Traffic on sonic-3.5 does not move automatically.

python
import asyncio
import os

from cartesia import AsyncCartesia

SAMPLE_RATE = 44100


async def main() -> None:
    # Defaults to https://api.cartesia.ai and sends Authorization: Bearer <api_key>.
    client = AsyncCartesia(api_key=os.environ["CARTESIA_API_KEY"])

    audio = bytearray()
    async with client.tts.with_streaming_response.generate(
        model_id="sonic-3.6",
        transcript="Hello from Cartesia!",
        voice={"id": "db6b0ed5-d5d3-463d-ae85-518a07d3c2b4"},
        output_format={"container": "wav", "encoding": "pcm_s16le", "sample_rate": SAMPLE_RATE},
        language="en",
    ) as response:
        async for chunk in response.iter_bytes():
            audio += chunk

    # The API returns a complete WAV file, header included.
    with open("output.wav", "wb") as f:
        f.write(audio)
    print(f"wrote {len(audio)} bytes")


asyncio.run(main())

Output

json
{
  "type": "chunk",
  "done": false,
  "status_code": 206,
  "step_time": 123,
  "context_id": "50dc3b5e-5841-4aa1-9f94-60cfb9aead79",
  "data": "aSDinaTvuI8gbWludGxpZnk="
}