ElevenLabs — Example Configuration
Partial support — textToSpeech.convert is currently instrumented. Use the char_count middleware to track character usage and cost.
Text-to-speech
const { weflayr_setup, weflayr_instrument } = require('weflayr');
weflayr_setup({
intake_url: process.env.WEFLAYR_INTAKE_URL,
client_id: process.env.WEFLAYR_CLIENT_ID,
client_secret: process.env.WEFLAYR_CLIENT_SECRET,
event_mode: 'default',
ignore_fields: (data) => { delete data.text; return data; },
methods: [
{
call: 'textToSpeech.convert',
middleware: (args) => ({ char_count: args?.text?.length ?? 0 }),
},
],
});
const { ElevenLabsClient } = require('@elevenlabs/elevenlabs-js');
const client = weflayr_instrument(new ElevenLabsClient({ apiKey: process.env.ELEVENLABS_API_KEY }));
import os
from elevenlabs import ElevenLabs
from weflayr import weflayr_setup, weflayr_instrument
weflayr_setup({
"intake_url": os.environ["WEFLAYR_INTAKE_URL"],
"client_id": os.environ["WEFLAYR_CLIENT_ID"],
"client_secret": os.environ["WEFLAYR_CLIENT_SECRET"],
"event_mode": "default",
"ignore_fields": lambda data: {k: v for k, v in data.items() if k != "text"},
"methods": [
{
"call": "text_to_speech.convert",
"middleware": lambda args, resp: {"char_count": len(args.get("text") or "")},
},
],
})
client = weflayr_instrument(ElevenLabs(api_key=os.environ["ELEVENLABS_API_KEY"]))
Calling the API
Pass __weflayr_tags on any instrumented call to slice analytics by feature, voice, or environment:
// Rachel — stable default voice available on all ElevenLabs plans
const VOICE_ID = '21m00Tcm4TlvDq8ikWAM';
const audio = await client.textToSpeech.convert(VOICE_ID, {
text: 'Hello! This is a Weflayr ElevenLabs TTS demo.',
model_id: 'eleven_multilingual_v2',
output_format: 'mp3_44100_128',
__weflayr_tags: {
feature: 'tts',
provider: 'elevenlabs',
customer_id: 'id',
},
});
// Stream audio chunks to a file
const fs = require('fs');
const chunks = [];
for await (const chunk of audio) {
chunks.push(chunk);
}
fs.writeFileSync('speech.mp3', Buffer.concat(chunks));
# Rachel — stable default voice available on all ElevenLabs plans
VOICE_ID = "21m00Tcm4TlvDq8ikWAM"
audio = client.text_to_speech.convert(
voice_id=VOICE_ID,
text="Hello! This is a Weflayr ElevenLabs TTS demo.",
model_id="eleven_multilingual_v2",
output_format="mp3_44100_128",
__weflayr_tags={
"feature": "tts",
"provider": "elevenlabs",
"customer_id": "id",
},
)
with open("speech.mp3", "wb") as f:
for chunk in audio:
f.write(chunk)
Configuration notes
| Setting | Value | Reason |
|---|---|---|
ignore_fields |
data.text |
Strip the synthesised text from events; keep metadata |
middleware on textToSpeech.convert |
char_count |
Compute character usage for cost tracking |