> For the full page index, fetch https://echonova.ai/llms.txt

# Generate speech

Turn written text into a spoken audio file in the portal, then listen to it and download it.

When you finish this page you will have typed or pasted a passage, picked a
voice, generated the audio, listened to it in the browser and saved it as a
file. Use it the first time you open **Text to Speech**, and again whenever
you want to check what a voice sounds like on your own words before you use
it anywhere else.

## What you need

- A workspace. Text to Speech is available on every workspace.
- Credits on the workspace balance. Each generation is charged before it
  runs; see [Credits](/docs/developers/credits) for what a credit is.
- Optionally, a voice you have already found under **Voices**.

## Steps

### Step 1: Open Text to Speech

Choose **Text to Speech** in the sidebar. The page heading reads **Your
text, in a voice from here**. The writing area is on the left with the
dialect chips, the voices and the **Generate** button under it. The
**Options** panel is on the right, and your **History** is below the
writing area.

<!-- screenshot: generate-speech/1 the empty Text to Speech page with the writing area, the dialect chips and the Options panel -->

### Step 2: Type or paste your text

Click into the writing area, which reads **Start typing here or paste any
text you want to turn into lifelike speech...**, and enter your text.

Under the area a counter reads `0 / 5,000 characters`. It counts every
character you type, including spaces, punctuation, line breaks and Arabic
diacritics.

At 5,000 characters the area stops accepting input. Text you paste is cut at
the 5,000th character. To speak more than that, generate it in several
passages.

The counter and the charge count the same way: every character is charged,
spaces included. See
[Limits and credits](/docs/playground/tts-limits-and-credits).

### Step 3: Choose a voice

Under the writing area, the **Dialect** chips list the dialects that have
voices. Click a chip to see up to six voices of that dialect as round
voice buttons. Click a voice to hear it and select it. The line next to the
**Generate** button shows the selected voice and its dialect. When you open
the page a default voice is selected for you.

To pick from every voice:

1. Click **All voices**, or **Change voice** in the **Options** panel. The
   **Choose a voice** dialog opens.
2. Use the **Explore** or **My Saved Voices** tab, the search box **Search
   for voice...**, the **Type** menu and the dialect chips. Voices from the
   workspace's recent generations are listed under **Recently used**.
3. Play a preview, click the voice you want, then click **Select**.

You can also arrive with a voice already chosen: on **Voices**, **Use this
voice** opens Text to Speech with that voice selected.

<!-- screenshot: generate-speech/2 the Choose a voice dialog with a dialect chip selected -->

### Step 4: Adjust the options

Leave **Speed**, **Guidance** and **Quality** at their defaults for a first
generation. **Reset to defaults** puts them back. Each one is described on
[Voice settings](/docs/playground/voice-settings).

### Step 5: Generate

Click **Generate**.

The figure under the writing area reads `about N credits`. It is an
estimate before generation and the returned cost after generation. It is not
your account balance; check **Subscription** for the available balance.

While the audio is being made, the button reads **Generating...** with a
spinner, the writing area is locked and the button cannot be clicked again.
When the audio is ready, a player opens at the bottom of the page and starts
playing on its own.

<!-- screenshot: generate-speech/3 the player at the bottom of the page right after a generation, showing the seek bar and the Download button -->

### Step 6: Listen and download

The player shows the voice, its dialect and the start of your text. Its
controls are **Play** and **Pause**, **Back 5 seconds**, **Forward 5
seconds**, the elapsed and total time, a playback speed button that cycles
through `0.75×`, `1×`, `1.25×`, `1.5×` and `2×`, and **Download**. Click or
drag on the seek bar to move through the audio. With the seek bar focused,
the arrow keys move 5 seconds, **Space** plays and pauses, and **Home** and
**End** jump to the start and the end.

Click **Download** to save the audio. The file is named `speech-` followed
by the generation's identifier, with a `.wav` extension. Details are on
[Formats, quality and download](/docs/playground/formats-quality-download).

To close the player, click the **Close** button at its right edge. Your text
stays in the writing area. The generation stays in **History**.

## Get it right

A generation is charged as soon as it starts, so check the voice on a short
sentence before you spend credits on the full passage.

**Recommended**

- Generate one sentence with the voice you have in mind, listen, adjust the
  voice or the options, then paste the full text and generate once.

**Less effective**

- Paste the full 5,000 characters, generate, and only then discover the
  voice or the dialect is wrong.

## Worked example

You want a Fusha voice to read one sentence.

1. Paste this into the writing area:

   ```text
   الطقس اليوم جميل والسماء صافية في المدينة
   ```

   The counter reads `41 / 5,000 characters`.

2. Click the **Fusha** chip, then click a voice.
3. Click **Generate**.

The button reads **Generating...** for a few seconds, then the player
appears and the sentence plays. All 41 characters are charged, spaces
included: 41 credits at the rate on [Credits](/docs/developers/credits).
The figure under the writing area shows that cost. Click **Download** and a
`.wav` file lands in your downloads folder.

## What happens next

- The generation is added to **History** below the writing area and to the
  **Assets** page, where you and every other member of the workspace can
  play it and download it again. See
  [History](/docs/playground/tts-history).
- The credits are taken from the workspace balance before the audio is made.
  If the generation fails, they are returned. Open **Subscription** to see
  the balance.
- Downloading or replaying a generation is free.

## Limits

| Limit                  | Value                                                                                    | Applies to           |
| ---------------------- | ---------------------------------------------------------------------------------------- | -------------------- |
| Text length            | 1 to 5,000 characters                                                                    | Each generation      |
| Voices                 | One voice per generation                                                                 | Each generation      |
| Concurrent generations | One at a time; the writing area and the button are locked until the current one finishes | The page             |
| History page size      | 8 items per load                                                                         | The **History** list |

## Troubleshooting

### The generate button is greyed out

One of three things is true: the writing area holds only whitespace, the
voice list has not finished loading, or a generation is already running.
Type some text, wait a moment, or wait for the current generation to finish.

### Error: Insufficient subscription balance

The workspace balance cannot cover the charge. Nothing was charged and
nothing was generated. Add credits under **Subscription**, then click
**Generate** again.

### Error: Speech generation is temporarily unavailable. Please try again.

The generation did not run. The charge has already been returned to the
workspace balance. Wait a short while and generate again.

### Error: Voice not found

The selected voice has been withdrawn. Click **All voices** and pick
another one.

### Error: text must be shorter than or equal to 5000 characters

The text grew past 5,000 characters after you turned on the **Tashkeel** switch,
because each diacritic counts as a character. Shorten the text and generate
again. See [Add diacritics](/docs/playground/add-diacritics).

### Automatic playback was blocked. Tap Play to listen.

Your browser did not allow the audio to start on its own. The audio is
ready; click **Play**.

### This audio could not be played in your browser.

The audio was generated and charged, but your browser could not play it.
Click **Download** and play the file locally, or open the portal in another
browser and replay the generation from **History**.

### Error: Unable to connect to the server. Please check your internet connection.

The request did not reach EchoNova. Check your connection and try again.
Nothing was charged.

## FAQ

### Who can see what I generate?

Every member of the workspace. **History** and **Assets** list every
generation made from the portal in the workspace, whoever made it.

### Does the button change after I generate?

No. It reads **Generate** every time. Click it again to make a new
generation from the current text and voice.

### Does the figure under the writing area tell me what my text will cost?

The page shows an approximate estimate before generation and the actual
returned cost afterward. The estimate is not a server quote or your balance.
See [Credits](/docs/developers/credits) for billing details.

### Can I generate English?

Yes. Pick an English voice under **All voices**. Each voice speaks one
language and one dialect.

### Can I speak more than 5,000 characters?

Generate the text in passages of up to 5,000 characters each. The same
limit applies to the API; see
[Text to Speech voices and options](/docs/developers/tts-voices-and-options).

## Related

- [Add diacritics](/docs/playground/add-diacritics): mark Arabic text before
  you generate with an Arabic voice
- [Voice settings](/docs/playground/voice-settings): what **Speed**,
  **Guidance**, **Quality** and **Tags** do
- [Formats, quality and download](/docs/playground/formats-quality-download):
  the file you get and how it is named
- [History](/docs/playground/tts-history): replay and download earlier
  generations
- [Limits and credits](/docs/playground/tts-limits-and-credits): the text
  limit and what a generation costs
- [Text to Speech quickstart](/docs/developers/tts-quickstart): the same
  generation from your own code
