# Send Elevenlabs Tts to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "elevenlabs-tts",
    "name": "Elevenlabs Tts",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/Shaharsha/elevenlabs-tts",
    "canonicalUrl": "https://clawhub.ai/Shaharsha/elevenlabs-tts",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/elevenlabs-tts",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=elevenlabs-tts",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "references/audio-tags.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/elevenlabs-tts"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/elevenlabs-tts",
    "downloadUrl": "https://openagent3.xyz/downloads/elevenlabs-tts",
    "agentUrl": "https://openagent3.xyz/skills/elevenlabs-tts/agent",
    "manifestUrl": "https://openagent3.xyz/skills/elevenlabs-tts/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/elevenlabs-tts/agent.md"
  }
}
```
## Documentation

### ElevenLabs TTS (Text-to-Speech)

Generate expressive voice messages using ElevenLabs v3 with audio tags.

### Prerequisites

ElevenLabs API Key (ELEVENLABS_API_KEY): Required. Get one at elevenlabs.io → Profile → API Keys. Configure in openclaw.json under messages.tts.elevenlabs.apiKey.
ffmpeg: Required for audio format conversion (MP3 → Opus for WhatsApp compatibility). Must be installed and available on PATH.

### Quick Start Examples

Storytelling (emotional journey):

[soft] It started like any other day... [pause] But something felt different. [nervous] My hands were shaking as I opened the envelope. [gasps] I got in! [excited] I actually got in! [laughs] [happy] This changes everything!

Horror/Suspense (building dread):

[whispers] The house has been empty for years... [pause] At least, that's what they told me. [nervous] But I keep hearing footsteps. [scared] They're getting closer. [gasps] [panicking] The door— it's opening by itself!

Conversation with reactions:

[curious] So what happened at the meeting? [pause] [surprised] Wait, they fired him?! [gasps] [sad] That's terrible... [sighs] He had a family. [thoughtful] I wonder what he'll do now.

Hebrew (romantic moment):

[soft] היא עמדה שם, מול השקיעה... [pause] הלב שלי פעם כל כך חזק. [nervous] לא ידעתי מה להגיד. [hesitates] אני... [breathes] [tender] את יודעת שאני אוהב אותך, נכון?

Spanish (celebration to reflection):

[excited] ¡Lo logramos! [laughs] [happy] No puedo creerlo... [pause] [thoughtful] Fueron tantos años de trabajo. [emotional] [soft] Gracias a todos los que creyeron en mí. [sighs] [content] Valió la pena cada momento.

### Configuration (OpenClaw)

In openclaw.json, configure TTS under messages.tts:

{
  "messages": {
    "tts": {
      "provider": "elevenlabs",
      "elevenlabs": {
        "apiKey": "sk_your_api_key_here",
        "voiceId": "pNInz6obpgDQGcFmaJgB",
        "modelId": "eleven_v3",
        "languageCode": "en",
        "voiceSettings": {
          "stability": 0.5,
          "similarityBoost": 0.75,
          "style": 0,
          "useSpeakerBoost": true,
          "speed": 1
        }
      }
    }
  }
}

Getting your API Key:

Go to https://elevenlabs.io
Sign up/login
Click profile → API Keys
Copy your key

### Recommended Voices for v3

These premade voices are optimized for v3 and work well with audio tags:

VoiceIDGenderAccentBest ForAdampNInz6obpgDQGcFmaJgBMaleAmericanDeep narration, general useRachel21m00Tcm4TlvDq8ikWAMFemaleAmericanCalm narration, conversationalBriannPczCjzI2devNBz1zQrbMaleAmericanDeep narration, podcastsCharlotteXB0fDUnXU5powFXDhCwaFemaleEnglish-SwedishExpressive, video gamesGeorgeJBFqnCBsd6RMkjVDRZzbMaleBritishRaspy narration, storytelling

Finding more voices:

Browse: https://elevenlabs.io/voice-library
v3-optimized collection: https://elevenlabs.io/app/voice-library/collections/aF6JALq9R6tXwCczjhKH
API: GET https://api.elevenlabs.io/v1/voices

Voice selection tips:

Use IVC (Instant Voice Clone) or premade voices - PVC not optimized for v3 yet
Match voice character to your use case (whispering voice won't shout well)
For expressive IVCs, include varied emotional tones in training samples

### Model Settings

Model: eleven_v3 (alpha) - ONLY model supporting audio tags
Languages: 70+ supported with full audio tag control

### Stability Modes

ModeStabilityDescriptionCreative0.3-0.5More emotional/expressive, may hallucinateNatural0.5-0.7Balanced, closest to original voiceRobust0.7-1.0Highly stable, less responsive to tags

For audio tags, use Creative (0.5) or Natural. Higher stability reduces tag responsiveness.

### Speed Control

Range: 0.7 (slow) to 1.2 (fast), default 1.0

Extreme values affect quality. For pacing, prefer audio tags like [rushed] or [drawn out].

### Length Limits

Optimal: <800 characters per segment (best quality)
Maximum: 10,000 characters (API hard limit)
Quality degrades with longer text - voice becomes inconsistent

### Audio Tags - Best Practices for Natural Sound

How many tags to use:

1-2 tags per sentence or phrase (not more!)
Tags persist until the next tag - no need to repeat
Overusing tags sounds unnatural and robotic

Where to place tags:

At emotional transition points
Before key dramatic moments
When energy/pace changes

Context matters:

Write text that matches the tag emotion
Longer text with context = better interpretation
Example: [nervous] I... I'm not sure about this. What if it doesn't work? works better than [nervous] Hello.

Combine tags for nuance:

[nervously][whispers] = nervous whispering
[excited][laughs] = excited laughter
Keep combinations to 2 tags max

Regenerate for best results:

v3 is non-deterministic - same text = different outputs
Generate 3+ versions, pick the best
Small text tweaks can improve results

Match tag to voice:

Don't use [shouts] on a whispering voice
Don't use [whispers] on a loud/energetic voice
Test tags with your chosen voice

### SSML Not Supported

v3 does NOT support SSML break tags. Use audio tags and punctuation instead.

### Punctuation Effects (use with tags!)

Punctuation enhances audio tags:

Ellipses (...) → dramatic pauses: [nervous] I... I don't know...
CAPS → emphasis: [excited] That's AMAZING!
Dashes (—) → interruptions: [explaining] So what you do is— [interrupting] Wait!
Question marks → uncertainty: [nervous] Are you sure about this?
Exclamation! → energy boost: [happy] We did it!

Combine tags + punctuation for maximum effect:

[tired] It was a long day... [sighs] Nobody listens anymore.

### Complete Workflow

Generate with tts tool (returns MP3)
Convert to Opus (required for Android!)
Send with message tool

### Step-by-Step

1. Generate TTS (add [pause] at end to prevent cutoff):

tts text="[excited] This is amazing! [pause]" channel=whatsapp

Returns: MEDIA:/tmp/tts-xxx/voice-123.mp3

2. Convert MP3 → Opus:

ffmpeg -i /tmp/tts-xxx/voice-123.mp3 -c:a libopus -b:a 64k -vbr on -application voip /tmp/tts-xxx/voice-123.ogg

3. Send the Opus file:

Note: The message field below contains a Unicode Left-to-Right Mark (U+200E) between the quotes.
This is intentional — WhatsApp requires a non-empty message body to send voice notes.
The LTR mark is invisible but satisfies this requirement without displaying any text.

message action=send channel=whatsapp target="+972..." filePath="/tmp/tts-xxx/voice-123.ogg" asVoice=true message="‎"

### Why Opus?

FormatiOSAndroidTranscribeMP3✅ Works❌ May fail❌ NoOpus (.ogg)✅ Works✅ Works✅ Yes

Always convert to Opus - it's the only format that:

Works on all devices (iOS + Android)
Supports WhatsApp's transcribe button

### Audio Cutoff Fix

ElevenLabs sometimes cuts off the last word. Always add [pause] or ... at the end:

[excited] This is amazing! [pause]

### Long-Form Audio (Podcasts)

For content >800 chars:

Split into short segments (<800 chars each)
Generate each with tts tool
Concatenate with ffmpeg:
cat > list.txt << EOF
file '/path/file1.mp3'
file '/path/file2.mp3'
EOF
ffmpeg -f concat -safe 0 -i list.txt -c copy final.mp3


Convert to Opus for WhatsApp
Send as single voice message

Important: Don't mention "part 2" or "chapter" - keep it seamless.

### Multi-Speaker Dialogue

v3 can handle multiple characters in one generation:

Jessica: [whispers] Did you hear that?
Chris: [interrupting] —I heard it too!
Jessica: [panicking] We need to hide!

Dialogue tags: [interrupting], [overlapping], [cuts in], [interjecting]

### Audio Tags Quick Reference

CategoryTagsWhen to UseEmotions[excited], [happy], [sad], [angry], [nervous], [curious]Main emotional state - use 1 per sectionDelivery[whispers], [shouts], [soft], [rushed], [drawn out]Volume/speed changesReactions[laughs], [sighs], [gasps], [clears throat], [gulps]Natural human moments - sprinkle sparinglyPacing[pause], [hesitates], [stammers], [breathes]Dramatic timingCharacter[French accent], [British accent], [robotic tone]Character voice shiftsDialogue[interrupting], [overlapping], [cuts in]Multi-speaker conversations

Most effective tags (reliable results):

Emotions: [excited], [nervous], [sad], [happy]
Reactions: [laughs], [sighs], [whispers]
Pacing: [pause]

Less reliable (test and regenerate):

Sound effects: [explosion], [gunshot]
Accents: results vary by voice

Full tag list: See references/audio-tags.md

### Troubleshooting

Tags read aloud?

Verify using eleven_v3 model
Use IVC/premade voices, not PVC
Simplify tags (no "tone" suffix)
Increase text length (250+ chars)

Voice inconsistent?

Segment is too long - split at <800 chars
Regenerate (v3 is non-deterministic)
Try lower stability setting

WhatsApp won't play?

Convert to Opus format (see above)

No emotion despite tags?

Voice may not match tag style
Try Creative stability mode (0.5)
Add more context around the tag
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: Shaharsha
- Version: 2.2.0
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-04-23T16:43:11.935Z
- Expires at: 2026-04-30T16:43:11.935Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/elevenlabs-tts)
- [Send to Agent page](https://openagent3.xyz/skills/elevenlabs-tts/agent)
- [JSON manifest](https://openagent3.xyz/skills/elevenlabs-tts/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/elevenlabs-tts/agent.md)
- [Download page](https://openagent3.xyz/downloads/elevenlabs-tts)