{"slug":"voice","domain":"media","title":"Speech in a voice","summary":"Text spoken in a cloned or stock voice, as an MP3 filed under a URL; and voices cloned from the account's own clips.","help":"voice: speech in a voice.\n\nUSAGE\n  voice say VOICE_ID TEXT OUT.mp3 [--speed X] [--temperature T] [--publish]\n  voice say VOICE_ID --file TEXT.txt OUT.mp3 [...]\n  voice list\n  voice clone TITLE CLIP [CLIP…] [--description D] [--enhance]\n\nSAY\n  Speaks TEXT in the voice and writes the audio to OUT; the format follows OUT's\n  extension, .mp3, .wav or .opus. VOICE_ID `-` is the stock voice. --speed is\n  0.5 to 2, --temperature 0 to 1 (lower is steadier). --publish files the take\n  in the account's store and prints `url: …`: that is how it leaves the session.\n  A published URL is presigned and expires in seven days.\n\n  Write numbers the way they should be SAID: \"nineteen twenty-eight\", not\n  \"1928\", if the year must not come out as a count.\n\nLIST\n  The account's voices: voice_id, title and state. A voice is usable once its\n  state is `trained`, usually within a minute of cloning.\n\nCLONE\n  Makes a private voice from 1 to 20 clips the session can read — one person\n  speaking, 10 to 30 seconds each, no music under it — and prints its\n  voice_id. --enhance asks for the clips to be cleaned first. Clone only a\n  voice whose owner has agreed to it.\n\nCOSTS\n  `say` is billed as fish_tts, by the UTF-8 bytes of the text. `list` and\n  `clone` are free.","example_command":"voice say b067832732f2439fae364829ff6b6b58 \"Then it all sped up.\" /tmp/line.mp3 --publish","example_output":"spoke 20 bytes of text to /tmp/line.mp3 (22 KB)\nurl: https://…/audio/3f1c…-line.mp3?…","cost_class":"upstream-fetch","tier":"metered","billing_items":["fish_tts"],"price_per_1k_calls":37.5,"price_is_from":false,"status":"available","commands":["voice"],"default_enabled":false,"first_seen":"2026-10-26T07:35:47.865779Z","enabled":false}
