@letta-ai/letta-code 0.34.10 → 0.34.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mcp-client.js +2 -2
- package/dist/mcp-client.js.map +1 -1
- package/dist/mcp-oauth.js +2 -2
- package/dist/mcp-oauth.js.map +1 -1
- package/dist/types/agent/skills.d.ts.map +1 -1
- package/dist/types/browser-device-mcp-oauth.d.ts +7 -0
- package/dist/types/browser-device-mcp-oauth.d.ts.map +1 -1
- package/dist/types/cli/subcommands/mcp-connect.d.ts +20 -0
- package/dist/types/cli/subcommands/mcp-connect.d.ts.map +1 -0
- package/dist/types/cli/subcommands/mcp-io.d.ts.map +1 -1
- package/dist/types/cli/subcommands/mcp.d.ts +2 -1
- package/dist/types/cli/subcommands/mcp.d.ts.map +1 -1
- package/dist/types/headless-listener-launch.d.ts.map +1 -1
- package/letta.js +311 -164
- package/npm-shrinkwrap.json +8 -8
- package/package.json +2 -2
- package/skills/speech-generation/LICENSE +21 -0
- package/skills/speech-generation/SKILL.md +216 -0
- package/skills/speech-generation/references/voice-settings.md +68 -0
- package/skills/submitting-feedback/SKILL.md +4 -2
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@letta-ai/letta-code",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.11",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"packages": {
|
|
6
6
|
"node_modules/@alcalzone/ansi-tokenize": {
|
|
@@ -3687,9 +3687,9 @@
|
|
|
3687
3687
|
}
|
|
3688
3688
|
},
|
|
3689
3689
|
"node_modules/ip-address": {
|
|
3690
|
-
"version": "10.7.
|
|
3691
|
-
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.
|
|
3692
|
-
"integrity": "sha512-
|
|
3690
|
+
"version": "10.7.4",
|
|
3691
|
+
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.4.tgz",
|
|
3692
|
+
"integrity": "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==",
|
|
3693
3693
|
"license": "MIT",
|
|
3694
3694
|
"engines": {
|
|
3695
3695
|
"node": ">= 12"
|
|
@@ -5423,9 +5423,9 @@
|
|
|
5423
5423
|
"license": "MIT"
|
|
5424
5424
|
},
|
|
5425
5425
|
"node_modules/zod": {
|
|
5426
|
-
"version": "4.6.
|
|
5427
|
-
"resolved": "https://registry.npmjs.org/zod/-/zod-4.6.
|
|
5428
|
-
"integrity": "sha512-
|
|
5426
|
+
"version": "4.6.6",
|
|
5427
|
+
"resolved": "https://registry.npmjs.org/zod/-/zod-4.6.6.tgz",
|
|
5428
|
+
"integrity": "sha512-4UmzQUF5fxvfcYHlbjBmejU+w+hbDnWFx4aS8kBx7nPBHcO2SqPbpAG8snbdg+Xse4pRefR98hgjFgIMCI/UhA==",
|
|
5429
5429
|
"license": "MIT",
|
|
5430
5430
|
"funding": {
|
|
5431
5431
|
"url": "https://github.com/sponsors/colinhacks"
|
|
@@ -5452,7 +5452,7 @@
|
|
|
5452
5452
|
},
|
|
5453
5453
|
"": {
|
|
5454
5454
|
"name": "@letta-ai/letta-code",
|
|
5455
|
-
"version": "0.34.
|
|
5455
|
+
"version": "0.34.11",
|
|
5456
5456
|
"dependencies": {
|
|
5457
5457
|
"@earendil-works/pi-ai": "^0.99.1",
|
|
5458
5458
|
"@janhapke/sharp-electron": "0.35.3-electron.1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@letta-ai/letta-code",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.11",
|
|
4
4
|
"lettaStartupLogProtocol": 1,
|
|
5
5
|
"description": "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
|
|
6
6
|
"type": "module",
|
|
@@ -275,5 +275,5 @@
|
|
|
275
275
|
},
|
|
276
276
|
"lettaLifecycleProtocol": 1,
|
|
277
277
|
"lettaRuntimeGraphProtocol": 1,
|
|
278
|
-
"lettaRuntimeGraphSha512": "sha512-
|
|
278
|
+
"lettaRuntimeGraphSha512": "sha512-R2czT+w/9GF9edoE5k4YkzYyy9hALZjCA1uusJFAsnBKCQHlzE+5Kv4ZIVrBOA1oHPHcr8c08zc00L4q8oYLjA=="
|
|
279
279
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 ElevenLabs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: speech-generation
|
|
3
|
+
description: Convert text to speech using ElevenLabs voice AI through Letta. Use when generating audio from text, sending a voice message, reading text aloud, creating voiceovers, speaking in your own voice, or synthesizing speech in 90+ languages.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ElevenLabs Text-to-Speech (via Letta)
|
|
8
|
+
|
|
9
|
+
Generate natural speech from text - supports 90+ languages, multiple models for quality vs latency tradeoffs. Examples default to `eleven_v4`, the latest and highest-quality model.
|
|
10
|
+
|
|
11
|
+
This skill is adapted from ElevenLabs' `text-to-speech` skill
|
|
12
|
+
([elevenlabs/skills](https://github.com/elevenlabs/skills), MIT; see `LICENSE`).
|
|
13
|
+
Instead of calling ElevenLabs with your own key, you call Letta's hosted endpoint
|
|
14
|
+
`POST /v1/audio/speech`. It forwards the request to ElevenLabs with Letta's key
|
|
15
|
+
and charges the organization's Letta credits, so you do not need an ElevenLabs
|
|
16
|
+
API key. The request body uses the same field names as ElevenLabs "Create
|
|
17
|
+
speech"; the voice ID goes in the body.
|
|
18
|
+
|
|
19
|
+
## Quick Start
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
base_url="${LETTA_BASE_URL%/}"
|
|
23
|
+
|
|
24
|
+
curl -sS -X POST "$base_url/v1/audio/speech" \
|
|
25
|
+
-H "Authorization: Bearer $LETTA_API_KEY" \
|
|
26
|
+
-H "Content-Type: application/json" \
|
|
27
|
+
-d '{"text":"Hello, welcome to ElevenLabs!","voice_id":"JBFqnCBsd6RMkjVDRZzb","model_id":"eleven_v4"}' \
|
|
28
|
+
> speech-response.json
|
|
29
|
+
|
|
30
|
+
python3 - <<'PY'
|
|
31
|
+
import base64, json
|
|
32
|
+
|
|
33
|
+
with open("speech-response.json") as f:
|
|
34
|
+
response = json.load(f)
|
|
35
|
+
if "audio_b64" not in response:
|
|
36
|
+
raise SystemExit(response.get("message", response))
|
|
37
|
+
|
|
38
|
+
with open("output.mp3", "wb") as f:
|
|
39
|
+
f.write(base64.b64decode(response["audio_b64"]))
|
|
40
|
+
print("saved output.mp3")
|
|
41
|
+
PY
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Use the runtime-provided `LETTA_BASE_URL` and `LETTA_API_KEY` together. Build
|
|
45
|
+
URLs relative to `${LETTA_BASE_URL%/}` and do not hardcode
|
|
46
|
+
`https://api.letta.com`. If either variable is missing, the user needs to
|
|
47
|
+
authenticate with Letta Cloud; do not ask for an ElevenLabs key.
|
|
48
|
+
|
|
49
|
+
Share the saved file the way your current surface supports: attach or upload it
|
|
50
|
+
to the conversation or channel you are replying in. Never paste the base64 into
|
|
51
|
+
a reply. Keep credit amounts out of replies unless the user asks about cost.
|
|
52
|
+
|
|
53
|
+
## Models
|
|
54
|
+
|
|
55
|
+
| Model ID | Languages | Latency | Best For |
|
|
56
|
+
|----------|-----------|---------|----------|
|
|
57
|
+
| `eleven_v4` | 90+ | Standard | **Default.** Highest quality, emotional range, audio tags, voice cloning accuracy |
|
|
58
|
+
| `eleven_v4_turbo` | 90+ | ~100ms | Faster v4 for shorter, time-sensitive replies |
|
|
59
|
+
| `eleven_flash_v2_5` | 32 | ~75ms | Lowest latency, lowest cost |
|
|
60
|
+
| `eleven_flash_v2` | English | ~75ms | English-only, lowest latency |
|
|
61
|
+
| `eleven_multilingual_v2` | 29 | Standard | Previous generation; most stable on very long-form generations |
|
|
62
|
+
| `eleven_v3` | 70+ | Standard | Previous generation expressive model |
|
|
63
|
+
|
|
64
|
+
`eleven_turbo_v2_5` and `eleven_turbo_v2` are superseded by the Flash models (same output, lower latency) — use `eleven_flash_v2_5` / `eleven_flash_v2` instead.
|
|
65
|
+
|
|
66
|
+
**Eleven v4 notes:** supports only `stability` and `similarity_boost` voice settings (no `style` or `speed`) and does not support SSML. Direct delivery with audio tags such as `[whispers]`, `[laughs]`, `[sarcastic]` (see "Audio Tags").
|
|
67
|
+
|
|
68
|
+
## Voice IDs
|
|
69
|
+
|
|
70
|
+
The Letta endpoint accepts ElevenLabs premade voices and voices Letta provides.
|
|
71
|
+
If your memory names your own voice ID, use it whenever you speak as yourself.
|
|
72
|
+
Other voices (cloned or designed voices from someone's own ElevenLabs account)
|
|
73
|
+
are rejected with 400; to use one, call ElevenLabs directly with the user's own
|
|
74
|
+
`ELEVENLABS_API_KEY` secret and ElevenLabs' `text-to-speech` skill.
|
|
75
|
+
|
|
76
|
+
**Premade voices:**
|
|
77
|
+
- `JBFqnCBsd6RMkjVDRZzb` - George (male, warm storyteller)
|
|
78
|
+
- `EXAVITQu4vr4xnSDxMaL` - Sarah (female, mature, reassuring)
|
|
79
|
+
- `cgSgspJ2msm6clMCkdW9` - Jessica (female, playful, conversational)
|
|
80
|
+
- `onwK4e9ZLuTAKqWW03F9` - Daniel (male, steady broadcaster)
|
|
81
|
+
- `SAz9YHcvj6GT2YYXdXww` - River (neutral, relaxed)
|
|
82
|
+
|
|
83
|
+
## Voice Settings
|
|
84
|
+
|
|
85
|
+
Fine-tune how the voice sounds:
|
|
86
|
+
|
|
87
|
+
- **Stability**: How consistent the voice stays. Lower values = more emotional range and variation, but can sound unstable. Higher = steady, predictable delivery.
|
|
88
|
+
- **Similarity boost**: How closely to match the original voice sample. Higher values sound more like the original but may amplify audio artifacts.
|
|
89
|
+
- **Style**: Exaggerates the voice's unique style characteristics (v2/v3 models; not supported on Eleven v4).
|
|
90
|
+
- **Speed**: Speech speed multiplier (v2/v3 models; not supported on Eleven v4).
|
|
91
|
+
- **Speaker boost**: Post-processing that enhances clarity and voice similarity.
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"text": "Customize my voice settings.",
|
|
96
|
+
"voice_id": "JBFqnCBsd6RMkjVDRZzb",
|
|
97
|
+
"model_id": "eleven_v4",
|
|
98
|
+
"voice_settings": {
|
|
99
|
+
"stability": 0.5,
|
|
100
|
+
"similarity_boost": 0.75
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
`stability`: lower = more expressive, higher = more consistent.
|
|
106
|
+
`similarity_boost`: higher = closer to the reference voice. See
|
|
107
|
+
[references/voice-settings.md](references/voice-settings.md) for ranges and
|
|
108
|
+
use-case presets.
|
|
109
|
+
|
|
110
|
+
## Audio Tags
|
|
111
|
+
|
|
112
|
+
Eleven v4 reads bracketed, natural-language cues in `text` as stage directions:
|
|
113
|
+
|
|
114
|
+
- Place a tag before the words it affects: `[shouts] I can't believe you said that to me.`
|
|
115
|
+
- A tag's emotion carries forward, so add another tag only where the delivery should shift.
|
|
116
|
+
- Combine tags inside one set of brackets: `[whispering, playful]`. Plain-language tags work, such as `[nervous, trying to sound confident]` or `[phone buzzing]`.
|
|
117
|
+
- Use one emotion per clause; contrasting tags on the same words blur the performance.
|
|
118
|
+
- Pair tags with punctuation: ellipses slow a line, dashes cut a speaker off, and `[pause]` / `[long pause]` add beats.
|
|
119
|
+
- If a delivery misses, swap the tag (try `[let down]` instead of `[despair]`) and regenerate rather than rewriting the line.
|
|
120
|
+
|
|
121
|
+
## Language Selection
|
|
122
|
+
|
|
123
|
+
Use `language_code` with models that support language enforcement to guide pronunciation and text normalization. Unsupported language codes are ignored, and `language_code` is not supported on `eleven_multilingual_v2`.
|
|
124
|
+
|
|
125
|
+
```json
|
|
126
|
+
{
|
|
127
|
+
"text": "Bonjour, comment allez-vous?",
|
|
128
|
+
"voice_id": "JBFqnCBsd6RMkjVDRZzb",
|
|
129
|
+
"model_id": "eleven_v4",
|
|
130
|
+
"language_code": "fr"
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Text Normalization
|
|
135
|
+
|
|
136
|
+
Controls how numbers, dates, and abbreviations are converted to spoken words. For example, "01/15/2026" becomes "January fifteenth, twenty twenty-six":
|
|
137
|
+
|
|
138
|
+
- `"auto"` (default): Model decides based on context
|
|
139
|
+
- `"on"`: Always normalize (use when you want natural speech)
|
|
140
|
+
- `"off"`: Speak literally (use when you want "zero one slash one five...")
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"text": "Call 1-800-555-0123 on 01/15/2026",
|
|
145
|
+
"voice_id": "JBFqnCBsd6RMkjVDRZzb",
|
|
146
|
+
"model_id": "eleven_v4",
|
|
147
|
+
"apply_text_normalization": "on"
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Request Stitching
|
|
152
|
+
|
|
153
|
+
When generating long audio in multiple requests, the audio can have pops, unnatural pauses, or tone shifts at the boundaries. Request stitching solves this by letting each request know what comes before/after it:
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{"text": "This is the first part.", "voice_id": "JBFqnCBsd6RMkjVDRZzb", "model_id": "eleven_v4", "next_text": "And this continues the story."}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{"text": "And this continues the story.", "voice_id": "JBFqnCBsd6RMkjVDRZzb", "model_id": "eleven_v4", "previous_text": "This is the first part."}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Each response includes `request_id`. Instead of `previous_text`, you can pass up
|
|
164
|
+
to three earlier `request_id` values in `previous_request_ids` (and later ones in
|
|
165
|
+
`next_request_ids` when regenerating a middle part). Keep the same voice, model,
|
|
166
|
+
and voice settings for every part, split long text at sentence or paragraph
|
|
167
|
+
boundaries (each request takes up to 10,000 characters), and concatenate the
|
|
168
|
+
files in order, for example with `ffmpeg -f concat`.
|
|
169
|
+
|
|
170
|
+
## Output Formats
|
|
171
|
+
|
|
172
|
+
Pass `output_format` in the body.
|
|
173
|
+
|
|
174
|
+
| Format | Description |
|
|
175
|
+
|--------|-------------|
|
|
176
|
+
| `mp3_44100_128` | MP3 44.1kHz 128kbps (default) - compressed, good for web/apps |
|
|
177
|
+
| `mp3_44100_192` | MP3 44.1kHz 192kbps - higher quality compressed |
|
|
178
|
+
| `mp3_44100_64` | MP3 44.1kHz 64kbps - lower quality, smaller files |
|
|
179
|
+
| `mp3_22050_32` | MP3 22.05kHz 32kbps - smallest MP3 files |
|
|
180
|
+
| `pcm_16000` | Raw PCM 16kHz - use for real-time processing |
|
|
181
|
+
| `pcm_22050` | Raw PCM 22.05kHz |
|
|
182
|
+
| `pcm_24000` | Raw PCM 24kHz |
|
|
183
|
+
| `pcm_44100` | Raw PCM 44.1kHz - CD quality |
|
|
184
|
+
| `pcm_48000` | Raw PCM 48kHz - highest quality |
|
|
185
|
+
| `ulaw_8000` | μ-law 8kHz - standard for phone systems (Twilio, telephony) |
|
|
186
|
+
| `alaw_8000` | A-law 8kHz - telephony (alternative to μ-law) |
|
|
187
|
+
| `opus_48000_64` | Opus 48kHz 64kbps - efficient codec, small files |
|
|
188
|
+
| `wav_44100` | WAV 44.1kHz - uncompressed with headers |
|
|
189
|
+
|
|
190
|
+
The Letta endpoint returns the whole file at once (as `audio_b64`); it does not stream.
|
|
191
|
+
|
|
192
|
+
## Response
|
|
193
|
+
|
|
194
|
+
```json
|
|
195
|
+
{
|
|
196
|
+
"model_id": "eleven_v4",
|
|
197
|
+
"voice_id": "JBFqnCBsd6RMkjVDRZzb",
|
|
198
|
+
"output_format": "mp3_44100_128",
|
|
199
|
+
"audio_b64": "<base64>",
|
|
200
|
+
"request_id": "Frhov0LQNC3M9HcHKY3t",
|
|
201
|
+
"characters": 46,
|
|
202
|
+
"billing": { "credits_charged": 4, "transaction_id": "...", "new_credit_balance": "..." }
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Error Handling
|
|
207
|
+
|
|
208
|
+
Errors return JSON with a `message`:
|
|
209
|
+
- **400 "Voice … is not available"**: use your own voice or a premade voice (see "Voice IDs").
|
|
210
|
+
- **400 with an ElevenLabs message**: invalid parameters (check `model_id`, voice settings the model does not support, or text length).
|
|
211
|
+
- **402**: the organization is out of Letta credits. Tell the user; do not retry.
|
|
212
|
+
- **500**: retry once, then report the failure.
|
|
213
|
+
|
|
214
|
+
## References
|
|
215
|
+
|
|
216
|
+
- [Voice Settings](references/voice-settings.md)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Voice Settings
|
|
2
|
+
|
|
3
|
+
Fine-tune voice characteristics for your use case. Adapted from ElevenLabs'
|
|
4
|
+
`text-to-speech` skill (MIT; see `../LICENSE`), with examples rewritten for
|
|
5
|
+
Letta's `POST /v1/audio/speech` request body.
|
|
6
|
+
|
|
7
|
+
## Parameters
|
|
8
|
+
|
|
9
|
+
| Parameter | Range | Default | Description |
|
|
10
|
+
|-----------|-------|---------|-------------|
|
|
11
|
+
| `stability` | 0.0 - 1.0 | 0.5 | How consistent the voice sounds across the generation. Lower = more emotional variation and expressiveness (but can sound erratic). Higher = steady, predictable tone. |
|
|
12
|
+
| `similarity_boost` | 0.0 - 1.0 | 0.75 | How closely to match the original voice sample. Higher sounds more like the source voice but may amplify audio artifacts or background noise from the original recording. |
|
|
13
|
+
| `style` | 0.0 - 1.0 | 0.0 | Exaggerates the unique characteristics of the voice's speaking style (v2 and v3 models; not supported on Eleven v4). Higher values make the voice more "characterful" but can reduce stability. |
|
|
14
|
+
| `speed` | 0.25 - 4.0 | 1.0 | Speech speed multiplier. 1.0 = normal speed. Not supported on Eleven v4. |
|
|
15
|
+
| `use_speaker_boost` | boolean | true | Post-processing that enhances voice clarity and similarity to the original. Generally leave this on unless you're experiencing artifacts. |
|
|
16
|
+
|
|
17
|
+
**Eleven v4** (`eleven_v4`, `eleven_v4_turbo`) uses only `stability` and `similarity_boost`. Control pacing and emotion with audio tags (`[whispers]`, `[excited]`, `[sighs]`) and punctuation (ellipses for pauses, capitals for emphasis) instead of `style`/`speed`. SSML is not supported on v4.
|
|
18
|
+
|
|
19
|
+
## Example
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"text": "Testing different voice settings.",
|
|
24
|
+
"voice_id": "JBFqnCBsd6RMkjVDRZzb",
|
|
25
|
+
"model_id": "eleven_v4",
|
|
26
|
+
"voice_settings": {
|
|
27
|
+
"stability": 0.5,
|
|
28
|
+
"similarity_boost": 0.75
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Use Case Recommendations
|
|
34
|
+
|
|
35
|
+
These presets work with `eleven_v4`. On v2/v3 models you can also add `style` for extra character.
|
|
36
|
+
|
|
37
|
+
### Audiobooks / Narration
|
|
38
|
+
```json
|
|
39
|
+
{ "stability": 0.7, "similarity_boost": 0.5 }
|
|
40
|
+
```
|
|
41
|
+
Consistent tone, natural variation.
|
|
42
|
+
|
|
43
|
+
### Conversational / Chatbots
|
|
44
|
+
```json
|
|
45
|
+
{ "stability": 0.4, "similarity_boost": 0.75 }
|
|
46
|
+
```
|
|
47
|
+
More expressive.
|
|
48
|
+
|
|
49
|
+
### News / Professional
|
|
50
|
+
```json
|
|
51
|
+
{ "stability": 0.8, "similarity_boost": 0.6 }
|
|
52
|
+
```
|
|
53
|
+
Very consistent.
|
|
54
|
+
|
|
55
|
+
### Character Voices / Drama
|
|
56
|
+
```json
|
|
57
|
+
{ "stability": 0.3, "similarity_boost": 0.8 }
|
|
58
|
+
```
|
|
59
|
+
Highly expressive. Add delivery direction in the text: `"[excited] We did it! [laughs]"`
|
|
60
|
+
|
|
61
|
+
## Tips
|
|
62
|
+
|
|
63
|
+
- **Start with defaults** and adjust incrementally
|
|
64
|
+
- **Lower stability** if voice sounds monotonous
|
|
65
|
+
- **Reduce similarity_boost** if you hear audio artifacts
|
|
66
|
+
- **Style and speed** work with v2 and v3 models only; on v4 use audio tags and punctuation
|
|
67
|
+
- **Test with representative text** from your actual use case
|
|
68
|
+
- **Flash models** ignore some voice settings for speed
|
|
@@ -24,12 +24,14 @@ If the user says yes, or directly asks you to submit feedback:
|
|
|
24
24
|
- Concrete evidence already available, such as exact error text, the failed command or action, relevant paths or links, and reliable reproduction steps. Distinguish what the user reported from what you observed or inferred.
|
|
25
25
|
|
|
26
26
|
Prefer specific nouns and observable behavior over generic judgments. Do not submit context-free summaries such as “the feature is broken,” “the UX should be improved,” or polished product-language filler. Keep unknowns explicit rather than guessing.
|
|
27
|
-
3.
|
|
27
|
+
3. Write the report to a temporary text file, then submit it with:
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
letta feedback --message
|
|
30
|
+
letta feedback --message-file <path-to-report>
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
Pass the report as a file rather than inline with `--message`: multi-line command arguments can be cut off at the first line on some platforms (Windows routes `letta` through a `.cmd` shim).
|
|
34
|
+
|
|
33
35
|
4. Tell the user whether submission succeeded. If it failed, report the safe CLI error and do not claim the team received it.
|
|
34
36
|
|
|
35
37
|
Do not include secrets, credentials, unrelated conversation content, or private file contents. The command adds the current agent and conversation identifiers so the team can find the relevant run.
|