# Temperature and pause tags on Paxa TTS Flash v2

Paxa TTS Flash v2 now takes a temperature that keeps a reading steadier or lets it vary more, and pause tags that put a set silence after any word.

Published 2026-10-28. Paxa Labs.

The same line in the same voice used to come back paced a little differently on every request. A narrator can use that variety. A phone menu, an app prompt that plays thousands of times, or a line rendered again to match an edit needs a read close to the one the team approved.

Two controls arrive on Paxa TTS Flash v2 today. Temperature sets how much a reading varies from one request to the next. Pause tags put a set length of silence where you write them. Both work in the console and on the API.

One line read by Foi Thong, twice at 0, 0.5, and 2:

- Temperature 0, take 1, [Foi Thong](https://paxalabs.com/voices/foithong), Narrator: https://paxalabs.com/audio/directions/temperature/foithong-t0-s1-0-1.m4a
- Temperature 0, take 2, [Foi Thong](https://paxalabs.com/voices/foithong), Narrator: https://paxalabs.com/audio/directions/temperature/foithong-t0-s2-0-2.m4a
- Temperature 0.5, take 1, [Foi Thong](https://paxalabs.com/voices/foithong), Narrator: https://paxalabs.com/audio/directions/temperature/foithong-default-s1-0.5-1.m4a
- Temperature 0.5, take 2, [Foi Thong](https://paxalabs.com/voices/foithong), Narrator: https://paxalabs.com/audio/directions/temperature/foithong-default-s2-0.5-2.m4a
- Temperature 2, take 1, [Foi Thong](https://paxalabs.com/voices/foithong), Narrator: https://paxalabs.com/audio/directions/temperature/foithong-t2-s1-2-1.m4a
- Temperature 2, take 2, [Foi Thong](https://paxalabs.com/voices/foithong), Narrator: https://paxalabs.com/audio/directions/temperature/foithong-t2-s2-2-2.m4a

## Temperature

Temperature runs from 0 to 2 in steps of 0.1, and 0.5 is the default. It changes the pacing, pauses, breaths, and melody of a reading from one request to the next. A request that leaves it out reads at 0.5, which varies less than requests did before.

- At `0`, a reading varies least. The same text in the same voice comes back closest in timing and melody from one request to the next, and two takes can still differ.
- At `0.5`, the default, a reading varies a little between requests. Leaving the field out is the same request as sending `0.5`.
- At `2`, a reading varies the most.

### Temperature with a direction

A direction sets the feeling, and temperature sets how much that reading varies. Kaprao reads a line under `[sad]` and another under `[angry]`, each twice at 0 and twice at 2.

Two lines read by Kaprao under [sad] and [angry], each twice at 0 and 2:

- [sad] at temperature 0, take 1, [Kaprao](https://paxalabs.com/voices/kaprao), Emotion tags: https://paxalabs.com/audio/directions/temperature/kaprao-sad-t0-s1-0-1.m4a
- [sad] at temperature 0, take 2, [Kaprao](https://paxalabs.com/voices/kaprao), Emotion tags: https://paxalabs.com/audio/directions/temperature/kaprao-sad-t0-s2-0-2.m4a
- [sad] at temperature 2, take 1, [Kaprao](https://paxalabs.com/voices/kaprao), Emotion tags: https://paxalabs.com/audio/directions/temperature/kaprao-sad-t2-s1-2-1.m4a
- [sad] at temperature 2, take 2, [Kaprao](https://paxalabs.com/voices/kaprao), Emotion tags: https://paxalabs.com/audio/directions/temperature/kaprao-sad-t2-s2-2-2.m4a
- [angry] at temperature 0, take 1, [Kaprao](https://paxalabs.com/voices/kaprao), Emotion tags: https://paxalabs.com/audio/directions/temperature/kaprao-angry-t0-s1-0-1.m4a
- [angry] at temperature 0, take 2, [Kaprao](https://paxalabs.com/voices/kaprao), Emotion tags: https://paxalabs.com/audio/directions/temperature/kaprao-angry-t0-s2-0-2.m4a
- [angry] at temperature 2, take 1, [Kaprao](https://paxalabs.com/voices/kaprao), Emotion tags: https://paxalabs.com/audio/directions/temperature/kaprao-angry-t2-s1-2-1.m4a
- [angry] at temperature 2, take 2, [Kaprao](https://paxalabs.com/voices/kaprao), Emotion tags: https://paxalabs.com/audio/directions/temperature/kaprao-angry-t2-s2-2-2.m4a

A low temperature suits a directed line that plays many times, such as an app prompt or a game character's reply. A high one gives a scene several different takes to choose from.

In the console, the Speech tool shows Temperature as a slider under Speed, marked More stable at 0 and More creative at 2. Between them it reads Default at 0.5 and offers a Reset button anywhere else. A deep link or a shared link keeps the value.

On the API, `temperature` is a field of POST /v1/tts, of [the OpenAI-compatible speech endpoint](https://paxalabs.com/docs/openai-compatibility), and of the start frame on [a live connection](https://paxalabs.com/docs/live-streaming). A request costs the same at every temperature.

curl:

```bash
curl -X POST https://api.paxalabs.com/v1/tts \
  -H "Authorization: Bearer $PAXA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs",
    "voice": "khanomkrok",
    "model": "paxa-tts-flash-v2",
    "temperature": 0
  }' \
  --output speech.mp3
```

TypeScript:

```typescript
import { writeFile } from "node:fs/promises";

const response = await fetch("https://api.paxalabs.com/v1/tts", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.PAXA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    text: "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs",
    voice: "khanomkrok",
    model: "paxa-tts-flash-v2",
    temperature: 0,
  }),
});

if (!response.ok) throw new Error(`TTS failed: ${response.status}`);
await writeFile("speech.mp3", Buffer.from(await response.arrayBuffer()));
```

Python:

```python
import os
import requests

response = requests.post(
    "https://api.paxalabs.com/v1/tts",
    headers={"Authorization": f"Bearer {os.environ['PAXA_API_KEY']}"},
    json={"text": "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs", "voice": "khanomkrok", "model": "paxa-tts-flash-v2", "temperature": 0},
)
response.raise_for_status()

with open("speech.mp3", "wb") as f:
    f.write(response.content)
```

Paxa TTS Flash v2 reads temperature. Paxa TTS Flash keeps its own variation and accepts only a value that rounds to `0.5`. Any other answers `400 validation` before anything is charged. [The temperature guide](https://paxalabs.com/docs/temperature) covers designed voices and retries under an Idempotency-Key.

## Pause tags

A pause tag adds silence after the word before it. Write a named length, `[short pause]`, `[pause]`, or `[long pause]`, or an exact one such as `[pause 300ms]`. Every Paxa TTS Flash v2 voice reads them, and Paxa TTS Flash reads none.

One line read by Nom Yen, with each pause:

- No pause, [Nom Yen](https://paxalabs.com/voices/nomyen), Lead voice: https://paxalabs.com/audio/directions/winner/nomyen-plain.m4a
- [short pause], [Nom Yen](https://paxalabs.com/voices/nomyen), Lead voice: https://paxalabs.com/audio/directions/winner/nomyen-short.m4a
- [pause], [Nom Yen](https://paxalabs.com/voices/nomyen), Lead voice: https://paxalabs.com/audio/directions/winner/nomyen-pause.m4a
- [long pause], [Nom Yen](https://paxalabs.com/voices/nomyen), Lead voice: https://paxalabs.com/audio/directions/winner/nomyen-long.m4a
- [pause 500ms], [Nom Yen](https://paxalabs.com/voices/nomyen), Lead voice: https://paxalabs.com/audio/directions/winner/nomyen-exact.m4a

A named pause takes its length from the language of the word before the tag.

| Language | `[short pause]` | `[pause]` | `[long pause]` |
| --- | --- | --- | --- |
| Thai | 130 ms | 180 ms | 460 ms |
| Chinese | 100 ms | 140 ms | 360 ms |
| English and other languages | 120 ms | 170 ms | 460 ms |

- `[pause 300ms]`, `[pause 0.3s]`, and `[pause:300]` are the same pause. A number with no unit is milliseconds.
- An exact length rounds to the nearest 10 ms, up to 500 ms. A longer one, such as `[pause 1s]`, plays at 500 ms.
- A pause adds to the gap the reading already leaves after that word. After a full stop, the same tag makes a longer silence than inside a sentence.
- A pause keeps its length at every speed.

Pause tags are text. Their characters count toward the request's length and its charge like any other. [The pause guide](https://paxalabs.com/docs/pauses) has the rest, including live connections.

## Also in this release

`[emphasis]` now reads as a direction, like `[whispering]` or `[excited]`.

## Questions

### Does temperature change the price?

A request costs the same at every temperature, from 0 to 2.

### How close are two takes at 0?

Closer than at any other setting, in timing, pauses, and melody. They are not guaranteed to match.

### Can a pause run longer than 500 ms?

One tag plays at most 500 ms. A longer tag plays at 500 ms and is not refused.
