Text to Dialogue quickstart
Learn how to generate immersive dialogue from text.
This guide will show you how to generate immersive, natural-sounding dialogue from text using the Text to Dialogue API.
Using the Text to Dialogue API
Section titled “Using the Text to Dialogue API”Create an API key
Create an API key in the dashboard here, which you’ll use to securely access the API.
Store the key as a managed secret and pass it to the SDKs either as a environment variable via an
.envfile, or directly in your app’s configuration depending on your preference..env
JavaScript ELEVENLABS_API_KEY=<your_api_key_here>Install the SDK
We’ll also use the
dotenvlibrary to load our API key from an environment variable.Python pip install elevenlabs pip install python-dotenvInstall the ElevenLabs CLI. Homebrew (macOS) and Scoop (Windows) are recommended.
Homebrew (macOS)Homebrew (macOS) brew install elevenlabs/tap/elevenlabsScoop (Windows)Scoop (Windows) scoop bucket add elevenlabs https://github.com/elevenlabs/scoop-bucket scoop install elevenlabsnpmnpm npm install -g @elevenlabs/clicurlcurl curl --proto '=https' --tlsv1.2 -LsSf https://github.com/elevenlabs/cli/releases/latest/download/elevenlabs-cli-installer.sh | shWorking with an AI coding assistant? Run
elevenlabs generate-skillsin your project to write aSKILL.mdfor every command group intoskills/, so your assistant knows the CLI's full surface without you pasting docs. Use--output-dirto put them elsewhere. This reads the CLI's own embedded API definition, so it needs no API key and works offline — and it stays in step with whichever CLI version you have installed.Then authenticate — this opens your browser to authorize the CLI:
Bash elevenlabs auth loginMake the API request
Create a new file named
example.pyorexample.mts, depending on your language of choice, and add the following code. Add audio tags inside eachtextvalue to guide that speaker’s delivery. Thevoice_idselects the speaker voice for the same input item.Python # example.py import os from dotenv import load_dotenv from elevenlabs.client import ElevenLabs from elevenlabs.play import play load_dotenv() elevenlabs = ElevenLabs( api_key=os.getenv("ELEVENLABS_API_KEY"), ) audio = elevenlabs.text_to_dialogue.convert( inputs=[ { "text": "[cheerfully] Hello, how are you?", "voice_id": "9BWtsMINqrJLrRacOk9x", }, { "text": "[stuttering] I'm... I'm doing well, thank you.", "voice_id": "IKne3meq5aSn9XLyUdCD", } ] ) play(audio)Then run it:
Python python example.pyYou should hear the dialogue audio play.
Pass the dialogue inputs as a JSON array and save the audio to a file:
Bash elevenlabs text-to-dialogue convert \ --output dialogue.mp3 \ --inputs '[ { "text": "[cheerfully] Hello, how are you?", "voice_id": "9BWtsMINqrJLrRacOk9x" }, { "text": "[stuttering] I... I am doing well, thank you.", "voice_id": "IKne3meq5aSn9XLyUdCD" } ]'Open
dialogue.mp3to hear the result.
WebSocket streaming
Section titled “WebSocket streaming”For incremental dialogue over a long-lived connection with Eleven v3 models, follow Realtime Text to Dialogue. To compare this WebSocket with the standard TTS WebSocket, see Text to Speech vs Text to Dialogue WebSockets.