Voice Design is a two-step workflow for creating entirely new AI voices. In the first step you submit a natural-language description of the voice character you want and ElevenLabs generates several audio previews for you to evaluate. In the second step you select the preview you prefer and save it as a named, reusable voice in your ElevenLabs workspace. That saved voice then carries a permanent voice ID you can pass to any other SDK operation, includingDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/phpaisdk/elevenlabs/llms.txt
Use this file to discover all available pages before exploring further.
Generate::speech().
An optional remix operation lets you take an eligible existing voice and generate variations of it based on a description — the previews are then saved in exactly the same way.
Step-by-step flow
Design: generate previews
Call Each preview in
ElevenLabs::voiceDesign()->design() with a text description of the
voice you want. ElevenLabs returns a VoiceDesignResult containing an
array of audio previews along with any sample text that was
auto-generated for the previews.$design->previews is a VoicePreview with its own
generatedVoiceId and audio content. Listen to each one to decide which
to keep:Design and remix options
The$options array accepted by both design() and remix() supports the
following fields. The $description string argument is sent to ElevenLabs
under the voice_description JSON key; any voice_description key you also
include in $options will override it.
The text-to-voice model to use. ElevenLabs recommends
eleven_ttv_v3 for
the highest quality voice generation results.When
true, ElevenLabs automatically generates a sample text passage for
the previews. Set to false to supply your own text via the text field.The desired audio format for the preview files returned in the response.
Automatically extracted from
$options and sent as a query parameter
instead of a body field. Examples: mp3_44100_128, wav_44100.output_format is silently removed from the JSON body and appended to the
request URL as a query parameter. All other keys in $options are sent in
the request body.Create options
create() also accepts an optional $options array. Any keys supplied there
are merged into the JSON body alongside generated_voice_id, voice_name,
and voice_description. The $name and $description arguments map to the
voice_name and voice_description JSON keys respectively; keys in $options
override them when the same name is present in both.
Remix an existing voice
Useremix() to generate variations of an eligible existing voice based on a
new description. The return type and save flow are identical to design().
Return types
VoiceDesignResult
Returned by both design() and remix().
An array of voice previews generated from the description. Each entry is a
VoicePreview — see below.The sample text that was spoken in all previews. When
auto_generate_text
is true this is filled in by ElevenLabs; otherwise it reflects the text
you supplied.The full decoded JSON response from ElevenLabs for advanced inspection.
VoicePreview
A temporary identifier for this specific generated preview. Pass this to
create() to save the preview as a permanent voice.The preview audio decoded from the base-64 response.
The language of the audio preview when returned by ElevenLabs.
CreatedVoice
Returned by create().
The permanent ElevenLabs voice ID. Use this value anywhere a voice ID is
accepted.
The display name assigned to the voice, as confirmed by ElevenLabs.
The voice category assigned by ElevenLabs, e.g.
generated. May be null
if not returned.The description stored with the voice, or
null if not returned.The full decoded JSON response for advanced inspection.
