- Python
- Python (Async)
- TypeScript
def tts_sse_basic(client: Cartesia) -> None:
"""Basic SSE streaming."""
stream = client.tts.generate_sse(
model_id="sonic-latest",
transcript="Hello, world!",
voice={"mode": "id", "id": "6ccbfb76-1fc6-48f7-b71d-91ac6298247b"},
output_format={"container": "raw", "encoding": "pcm_s16le", "sample_rate": 44100},
language="en",
)
import datetime
filename = f"tts_sse_basic_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.pcm"
with open(filename, "wb") as f:
for event in stream:
if event.type == "chunk":
# v3.x returns raw bytes in event.audio
if event.audio:
f.write(event.audio)
elif event.type == "done":
break
elif event.type == "error":
raise Exception(f"{event.title}: {event.message}")
print(f"Saved audio to {filename}")
print(f"Play with: ffplay -f s16le -ar 44100 {filename}")
async def tts_sse_basic_async(client: AsyncCartesia) -> None:
"""Async SSE streaming."""
import datetime
stream = await client.tts.generate_sse(
model_id="sonic-latest",
transcript="Hello, world!",
voice={"mode": "id", "id": "6ccbfb76-1fc6-48f7-b71d-91ac6298247b"},
output_format={"container": "raw", "encoding": "pcm_s16le", "sample_rate": 44100},
language="en",
)
filename = f"tts_sse_async_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.pcm"
with open(filename, "wb") as f:
async for event in stream:
if event.type == "chunk":
if event.audio:
f.write(event.audio)
elif event.type == "done":
break
elif event.type == "error":
raise Exception(f"{event.title}: {event.message}")
print(f"Saved audio to {filename}")
print(f"Play with: ffplay -f s16le -ar 44100 {filename}")
async function ttsSSEBasic(client: Cartesia): Promise<void> {
const stream = await client.tts.generateSSE({
model_id: 'sonic-latest',
transcript: 'Hello, world!',
voice: { mode: 'id', id: '6ccbfb76-1fc6-48f7-b71d-91ac6298247b' },
output_format: { container: 'raw', encoding: 'pcm_f32le', sample_rate: 44100 },
language: 'en',
});
const filename = `tts_sse_${timestamp()}.pcm`;
const file = fs.createWriteStream(filename);
try {
for await (const event of stream) {
if (event.type === 'chunk') {
file.write(Buffer.from(event.data, 'base64'));
} else if (event.type === 'done') {
break;
} else if (event.type === 'error') {
throw new Error(`${event.title}: ${event.message}`);
}
}
} finally {
file.end();
}
console.log(`Saved audio to ${filename}`);
console.log(`Play with: ffplay -f f32le -ar 44100 ${filename}`);
}
Run this example
- Python
- Python (Async)
- TypeScript
git clone --branch v3.2.0 https://github.com/cartesia-ai/cartesia-python
cd cartesia-python
uv sync
CARTESIA_API_KEY=YOUR_KEY uv run examples/examples.py tts_sse_basic
git clone --branch v3.2.0 https://github.com/cartesia-ai/cartesia-python
cd cartesia-python
uv sync
CARTESIA_API_KEY=YOUR_KEY uv run examples/async_examples.py tts_sse_basic_async
git clone --branch v3.2.0 https://github.com/cartesia-ai/cartesia-js
cd cartesia-js
pnpm i
CARTESIA_API_KEY=YOUR_KEY pnpm tsn examples/node_examples.ts ttsSSEBasic