Griptape Text To Speech Driver: ElevenLabs
ElevenLabs voices inside ComfyUI
- DRIVER
This node doesn't make sound. It makes a driver - a configured object that tells the rest of the Griptape pack which ElevenLabs model and voice to use when your agent is asked to speak. If you've ever wanted a ComfyUI workflow that ends with an actual voice reading the result back at you instead of another string on a node, this is the piece that makes it happen. The name is doing double duty though: it says "driver," and in this pack a driver is a config block you wire into a consumer, not a thing that runs on its own.
The ElevenLabs driver is the one people reach for when the voice matters. ElevenLabs is still the default answer for natural, hard-to-place-as-AI voices, and this node gives you the pick of the litter - your chosen model and voice get baked into a TEXT_TO_SPEECH_DRIVER that a Text-to-Speech task or tool then uses. If you're on a budget or just want the thing to work with a key you already have, the OpenAI TTS driver is the cheaper sibling. If you want your agent to announce results in a voice people actually believe is human, you're here.
How it works
Under the hood it wraps Griptape's ElevenLabsTextToSpeechDriver. You pick a model and a voice, it hands back a driver object, and that object gets passed along the wire until something consumes it - typically the "Griptape Tool: Text to Speech" node or a Text-to-Speech task. The API key is pulled at runtime from an environment variable, not typed into the graph.
The inputs that matter
All four inputs are optional, which is nice - you can drop this node in and it'll work with defaults.
- model - the ElevenLabs model, default
eleven_multilingual_v2. That default is genuinely good: it's multilingual and handles a huge range of use cases. - voice - default
Matilda. This is the one you'll actually fiddle with. Voice names are ElevenLabs' own, so whatever you've set up on their site is what you can use. - api_key_env_var - default
ELEVEN_LABS_API_KEY. Read the tooltip twice: this is the name of the environment variable holding your key, not the key itself. Paste a real key in here and you've just committed a credential to a workflow file. - text_to_speech_model - an inherited field that mirrors
modelwith the same default; changemodel, and you're set.
The single output, DRIVER (TEXT_TO_SPEECH_DRIVER), plugs into any node that takes that socket.
Install and keys
If you don't have the pack yet, ComfyUI Manager → search "Griptape" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/griptape-ai/ComfyUI-Griptape
The pack pulls in griptape[all], which is a big install - see the torch troubleshooting below. For the key: open ComfyUI Settings → the Griptape section, set ELEVEN_LABS_API_KEY, or set the same env var before launching. Get the key from https://elevenlabs.io/app/ under Profile + API Key.
Where people get burned
The classic failure is a silent one: the driver gets created but the key isn't there, and the speech just never comes back. Check that the key is set in Settings → Griptape (or your env) under the exact name in api_key_env_var. The second classic is a torch version fight - griptape[all] installs its own torch and can clobber ComfyUI's CUDA build, which then breaks everything downstream. The pack's own README recommends, if that happens:
pip uninstall torch
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu121
One more thing: ElevenLabs is a paid API. Every character your agent speaks costs money, so if you're building a workflow that narrates on every run, budget for it - or swap in the OpenAI driver for the heavy lifting.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text_to_speech_modelopt | STRING | eleven_multilingual_v2 | Select the text-to-speech model to use. |
| voiceopt | STRING | Matilda | The voice to use for text-to-speech. |
| modelopt | STRING | eleven_multilingual_v2 | The model to use for text-to-speech. |
| api_key_env_varopt | STRING | ELEVEN_LABS_API_KEY | The environment variable name for the API key. Do not use your actual API key here. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| DRIVER | TEXT_TO_SPEECH_DRIVER | — |