Quick reference#
{ voice: "elevenlabs:JBFqnCBsd6RMkjVDRZzb" }
{ voice: "cartesia:a0e99841-438c-4a64-b679-ae501e7d6091" }
{ voice: "polly:Joanna" }Discovering voices#
Use the fetchVoices REST helper to list voices on your account:
import { fetchVoices } from "@pinecall/sdk";
const voices = await fetchVoices({ provider: "elevenlabs", language: "es" });
voices.forEach((v) => console.log(`${v.name} → ${v.provider}:${v.id}`));ElevenLabs#
voice: {
provider: "elevenlabs",
voice_id: "JBFqnCBsd6RMkjVDRZzb",
model: "eleven_flash_v2_5",
speed: 1.0,
stability: 0.5,
similarity_boost: 0.75,
style: 0,
use_speaker_boost: true,
}Shortcut: "elevenlabs:JBFqnCBsd6RMkjVDRZzb"
Tuning notes:
model: "eleven_flash_v2_5"— fastest, best for real-timestabilityhigher = more consistent, less expressivesimilarity_boosthigher = closer to the cloned voicestyle0–1, only oneleven_multilingual_v2
Cartesia#
voice: {
provider: "cartesia",
voice_id: "a0e99841-438c-4a64-b679-ae501e7d6091",
model: "sonic",
speed: 1.0,
volume: 1.0,
emotion: null,
language: "en",
}Shortcut: "cartesia:a0e99841-438c-4a64-b679-ae501e7d6091"
Tuning notes:
model: "sonic"— fastest Cartesia model, designed for streamingemotionaccepts named emotion presets (check Cartesia docs for the current list)
AWS Polly#
voice: {
provider: "polly",
voice_id: "Joanna",
engine: "neural",
language: "en-US",
}Shortcut: "polly:Joanna"
Tuning notes:
engine: "neural"is required for natural-sounding output. The olderstandardengine is robotic.- Polly is the cheapest option but the least natural — fine for IVR-style flows, not for engaging conversation.
Which to choose#
| Provider | Best for | Trade-off |
|---|---|---|
| ElevenLabs | Most natural-sounding output | Higher cost per character |
| Cartesia | Real-time streaming, low latency | Smaller voice library |
| Polly | Cheap IVR, simple flows | Less natural |
For most agents, start with ElevenLabs (eleven_flash_v2_5) or Cartesia (sonic). Use Polly only for high-volume, low-engagement flows.
Hot-reloading voices#
Voice can change at any time:
// Agent-wide
agent.configure({ voice: "cartesia:newVoice" });
// One call only
call.configure({ voice: "elevenlabs:differentVoice" });
// Per-channel override
agent.addChannel("phone", "+34911234567", {
voice: "elevenlabs:spanishVoiceId",
});