Cue
Media

Voice

Design or clone a durable voice in the Cue catalog, then speak any text in it

Use cue voice to create a voice and cue speak to say something in it. A voice is made once, saved to the Cue catalog, and reused by id everywhere after — a creator names a voice, never a vendor.

Core Commands

cue voice -h
cue voice list
cue voice design "Warm, calm documentary narrator" --name narrator --preview-text "Welcome to Cue"
cue voice clone ./sample.wav --name my_voice --consent-confirmed
cue voice get <voice-id> --json
cue voice delete <voice-id> --json
cue speak "Hello in my designed voice" --voice-id <catalog-uuid>

The Catalog

cue voice list returns the voices you own plus the public presets, each with its id, kind, language, and the model behind it.

cue voice list
cue voice list --kind design
cue voice list --kind clone --page-size 50 --json
FlagDescription
--kind <kind>all (default), design, clone, or preset
--no-presetsExclude public preset voices
--page-index <index>Zero-based page index
--page-size <count>Voices per page, 1 to 100
--jsonMachine-readable output

Start from a preset when you do not need a voice of your own; cue voice get <voice-id> --json reads one entry, and cue voice delete <voice-id> removes an owned voice along with its provider enrollment.

Designing a Voice

Describe the voice you want and Cue creates it, returning a spoken preview.

cue voice design "Warm, calm documentary narrator" --name "Documentary narrator" --preview-text "Welcome to Cue"
cue voice design "Bright game character" --name game_voice --preview-text "Ready!" -o ./preview.wav --json
FlagDescription
--name <name>Catalog voice name, up to 100 characters
--preview-text <text>Text spoken in the returned preview
--language <code>Language code, default en
--model <model>Voice-design model
-o, --output <path>WAV preview output path, default ~/.cue/voices/
--jsonMachine-readable output

Cloning a Voice

Cloning takes an authorized WAV, MP3, MP4, or M4A clip of about 20 seconds, and requires you to confirm you may use it.

cue voice clone ./sample.wav --name my_voice --consent-confirmed
cue voice clone ./sample.mp3 --name narrator --transcript "Welcome to Cue" --language en --consent-confirmed --json
FlagDescription
--name <name>Catalog voice name, up to 100 characters
--description <text>Description shown in the voice catalog
--transcript <text>Transcript of the source clip
--language <code>Source language code
--model <model>Voice-clone model
--consent-confirmedConfirm you own this voice or have permission to clone it
--jsonMachine-readable output

--consent-confirmed is not a formality. Clone only a recording you own or are authorized to use.

Speaking Text

cue speak turns text into audio. Aliases: cue audio, cue tts.

cue speak "Hello, welcome to my app"
cue speak "Breaking news" -o /tmp/news.wav --json
cue speak "Hello in my designed voice" --voice-id <catalog-uuid>
cue speak "Hi there" --voice Puck --style cheerful
FlagDescription
--voice-id <uuid>Cue voice catalog UUID from cue voice list
-v, --voice <voice>Provider voice name
-s, --style <style>Style description
--model <model>Model name — flash or pro on Cue, or an ElevenLabs model id
--provider <provider>cue, elevenlabs, or z-ai
--speed <speed>Speech speed, 0.5 to 2.0
--stability <value>ElevenLabs voice stability, 0 to 1
--style-strength <value>ElevenLabs style strength, 0 to 1
--volume <volume>Volume level, 0 to 10
-o, --output <path>Save audio to a specific path
--jsonMachine-readable output
cue speak "Hello there" --provider elevenlabs --voice jessica
cue speak "Fast speech" --provider z-ai --speed 1.5

cue say is a different thing: macOS text-to-speech, local and offline, which cannot use a Cue catalog voice. cue notify --speak uses cue say, not cue speak.

Phone Calls

cue voice serve and cue voice call are a local runtime, not a hosted Cue feature. They run a Twilio webhook and a Gemini Live bridge on your own machine, so they need your own Twilio account and a public HTTPS origin pointing at the local runtime.

cue voice setup            # report what is still missing
cue voice serve            # run the local Twilio webhook and Gemini Live bridge
cue voice call --to "+15551234567" --message "Hello from Cue" --time-limit 120 --json

cue voice setup prints the runtime URL, the media path, the model in use, and each unset value — for example publicUrl, which must be set through voiceCall.publicUrl or CUE_VOICE_PUBLIC_URL.

Run cue voice -h and cue speak -h for the current flag lists.

On this page