#how can we make our ai agents to have certain tones ? like soft and calm
1 messages · Page 1 of 1 (latest)
Short answer: in ElevenLabs you set tone through the voice you choose/design, the voice settings you send with synthesis, and the way you prompt/punctuate the text.
What to do
- Start from an inherently calm voice:
- Use Voice Design and describe the voice: include tone, pacing and speaking style (e.g., “soft‑spoken, calm, slow, warm”). You can also adjust “Guidance scale” and “Loudness” in Voice Design. (help.elevenlabs.io)
- Tune Voice Settings in the API or UI:
- speed: set below 1.0 to slow delivery (range 0.7–1.2). (elevenlabs.io)
- stability: increase to reduce variation and keep the delivery steady/less emotive. (elevenlabs.io)
- style: keep low (near 0) to avoid exaggerated prosody. (elevenlabs.io)
- similarity_boost/use_speaker_boost: raise if you want closer adherence to the chosen voice’s timbre and articulation. (elevenlabs.io)
- Prompt and pace the text:
- Provide calm context and explicit dialogue cues in the script; punctuation and quotes influence delivery. (help.elevenlabs.io, elevenlabs.io)
- Insert natural pauses with <break time="1.0s" /> (up to 3s) in TTS and API. (help.elevenlabs.io)
- If you’re building with ElevenLabs Conversational AI:
- Set the agent’s system prompt to define behavior/style (e.g., “Speak softly, be calm and reassuring”). (help.elevenlabs.io)
- If you need guaranteed “soft/calm” performance:
- Use Voice Changer (speech‑to‑speech) with a softly delivered source recording; the conversion preserves tone and delivery while changing the voice. (help.elevenlabs.io)
- Optional (v3 Alpha):
- Eleven v3 (Alpha) adds audio tags for emotions and delivery such as [whispers]; useful for softer delivery. Note v3 is an alpha model. (help.elevenlabs.io)
Key parameters to try for “soft and calm”
- speed < 1.0 (e.g., slightly below 1) to slow pacing. (elevenlabs.io)
- higher stability and low style to keep the read steady and understated. (elevenlabs.io)
If you tell me which product surface you’re using
and how do i prompt my generated voice to be in spanish, with a mexican accent like woman, soft and comfortable, to help go along in hard emotionoal times, similar to a calm psychologist ?
Short answer:
- Write your script in Spanish; the model picks the language from the text. Accent comes from the voice you use, not from the text. (help.elevenlabs.io)
- For a true Mexican Spanish accent, use a native Spanish (Mexico) voice (Voice Library filter: Language = Spanish, then Accent = Mexico) or clone a Mexican Spanish voice; default and Voice Design voices are English and may carry an English accent in Spanish. (help.elevenlabs.io)
- Use a multilingual TTS model (e.g., Eleven v3, Multilingual v2, or Flash v2.5). Eleven v3 offers the richest expressivity; Flash v2.5 is fastest. (help.elevenlabs.io)
How to get “female, soft, comfortable, calm-psychologist” in Mexican Spanish:
- Pick model
- Quality/expressivity: Eleven v3 (Alpha). Real-time/low latency: Flash v2.5. (help.elevenlabs.io)
- Pick voice
- Voice Library: select Spanish, then Accent = Mexico; choose a female voice. Or clone a native Mexican Spanish female voice (PVC supports Spanish—Mexico). (help.elevenlabs.io)
- Write the script in Spanish and guide delivery
- Provide calming context in the text and use gentle punctuation; this most strongly drives emotion. (help.elevenlabs.io)
- Insert natural pauses with <break time="…s" /> to slow pacing. Example: “Respira conmigo. <break time="1.2s" /> Estoy aquà para acompañarte.” (help.elevenlabs.io)
- If you must generate a new voice (Voice Design)
- Use a detailed prompt describing age, gender, accent, tone, pacing, and style, e.g., “mujer mexicana adulta joven, acento mexicano neutro, tono suave y reconfortante, ritmo lento, estilo de psicóloga.” Then set Guidance Scale higher to adhere closely to the prompt. Note: Voice Design outputs are English-native; speaking Spanish may retain an English tint—prefer a native Mexican Spanish voice for the accent. (help.elevenlabs.io)
Notes and options
- You normally don’t set a language code; just write Spanish. There is an experimental API-only language code for Turbo v2.5, but results may vary and it’s not in other models. (help.elevenlabs.io)
- ElevenLabs doesn’t translate text; supply Spanish text yourself (or translate upstream). (help.elevenlabs.io)
Model/voice recap for your use case:
- Model: Eleven v3 (best emotion) or Flash v2.5 (fast). (help.elevenlabs.io)
- Voice: a native “Spanish (Mexico)” female voice from the Voice Library or your own PVC clone for authentic accent. (help.elevenlabs.io)
If you want, tell me which product/API path you’re using (Web app, TTS HTTP, or Streaming), and I’ll map
if i want to, how can i keep track of the duration of the ongoing conversation with an ai agent ?
🔍 Searching the web...
if i want to, how can i keep track of the duration of the ongoing conversation with an ai agent ?
You have a few supported ways to track call length while a conversation is ongoing:
-
Poll the Conversations API for the active conversation_id. GET /v1/convai/conversations/:conversation_id returns metadata.start_time_unix_secs and metadata.call_duration_secs, and each transcript item includes time_in_call_secs. Polling this endpoint gives you the live elapsed time. (elevenlabs.io)
-
Use the system dynamic variable inside tools/prompts. system__call_duration_secs is available to your agent at runtime (and updates as the call progresses), so a tool can read it and emit the current duration to your UI or logs. (elevenlabs.io)
-
Maintain a client-side timer starting when you open the WebSocket or widget session, and reconcile with the server’s duration. ElevenLabs measures billable call length from connection open to connection close, which you can mirror client-side; use the API values above for authoritative timing. (elevenlabs.io, help.elevenlabs.io)
-
For aggregate monitoring (not per-call live), the Dashboard shows metrics like average duration and current Active Calls, and notes the active-calls counter is also accessible via API. (elevenlabs.io)
For listings/history, GET /v1/convai/conversations returns call records with start_time_unix_secs and call_duration_secs you can use for post-call checks. (elevenlabs.io)
Sources:
Get conversation details | ElevenLabs Documentation
Dynamic variables | ElevenLabs Documentation
Client events | ElevenLabs Documentation
How much does Conversational AI cost? – ElevenLabs
Conversational AI dashboard | ElevenLabs Documentation
List conversations | ElevenLabs Documentation
Use the system dynamic variable inside tools/prompts. system__call_duration_secs is available to your agent at runtime (and updates as the call progresses), so a tool can read it and emit the current duration to your UI or logs. (elevenlabs.io)
so i can say in the prompt something like periodically check {{system__call_duration_secs}}
Short answer: use {{system__call_duration_secs}} in a tool, not in the prompt, if you need a live-updating value.
Details:
- system__call_duration_secs is a built‑in system dynamic variable. It can be inserted into prompts, first messages, and tool parameters. However, system variables in system prompts are evaluated only once at conversation start; in tool calls they are evaluated at call time (so the duration keeps updating).
- To emit the current duration to your UI/logs, add a server (webhook) tool and include a parameter like duration_secs={{system__call_duration_secs}}. Each time the tool runs, it will receive the latest duration.
- “Periodically check {{system__call_duration_secs}}” inside the prompt won’t poll—prompts aren’t timers. If you need periodic updates, trigger the tool on a cadence from your client (e.g., a timer that sends a client‑to‑server event to prompt the tool call), or instruct the agent to call the tool when appropriate.
So: yes, you can reference {{system__call_duration_secs}}, but use it in a tool and trigger that tool whenever you want the current value.
Dynamic variables are not pickedd up insidde tools and they cannot be overriding tools when initiating the call. We're building a multi-tenant call automation system where we need to make concurrent outbound calls with different tool configurations (specifically transfer_to_number and voicemail_detection with call-specific parameters like redirect phone numbers and personalized voicemail messages).
Current Challenge:
When multiple calls happen simultaneously, updating the same agent's tools creates race conditions where calls get the wrong configuration.
Questions:
Agent Duplication Strategy: Is using the /v1/convai/agents/{agent_id}/duplicate endpoint for temporary, call-specific agents a recommended pattern for concurrent calls with different tool configurations?
Performance & Limits: Are there rate limits or performance considerations when creating/deleting agents frequently? What's the recommended cleanup strategy?
Alternative Approaches: Is there a planned feature for per-conversation tool configuration, or any other recommended patterns for this use case?
Best Practices: For high-concurrency scenarios (50+ simultaneous calls), what's the recommended architecture to avoid tool configuration conflicts?