# Paxa TTS Flash starts speaking in 104 milliseconds

We measured time to first audio on Paxa TTS Flash from Google Cloud in Singapore and Bangkok: 104 ms and 131 ms at the median, with no failed requests.

Published 2026-09-25. Paxa Labs.

In conversation, the most common gap between one person finishing and the next person starting is under 200 milliseconds. A [study of ten languages](https://www.pnas.org/doi/10.1073/pnas.0903616106) found that pattern in every one of them. A voice agent answers inside the same gap, and the speech API spends part of it before any sound plays.

On September 24 we measured that part from two cities. Virtual machines in the Singapore and Bangkok regions of Google Cloud called the production API the way a customer's server does.

- Median time to first audio was 104 ms from Singapore and 131 ms from Bangkok.
- 98.3% of requests from Singapore and 91.2% from Bangkok returned first audio in under 200 ms.
- A 35.1-second Thai passage arrived complete within 750 ms.
- All 1,676 speech requests succeeded.

## Time to first audio

| Client location | Requests | p50 | p90 | p99 | Under 200 ms |
| --- | --- | --- | --- | --- | --- |
| Singapore | 299 | 104 ms | 157 ms | 324 ms | 98.3% |
| Bangkok | 284 | 131 ms | 195 ms | 304 ms | 91.2% |

Each request streamed a 93-character Thai line in the Nom Yen voice as MP3 from [POST /v1/tts](https://paxalabs.com/docs/api/text-to-speech), which is 6.9 seconds of audio. The clock starts when the client sends the request and stops at the first byte of audio. That span covers the network trip, authentication, and synthesis of the opening words.

The p99 column is the slowest request in a hundred. At that point first audio still arrived within 324 ms from Singapore and 304 ms from Bangkok.

## Where the time goes

The gap between the two cities is network distance. A bare round trip to the API's health endpoint took 16 ms at the median from Singapore and 42 ms from Bangkok. Subtract it from time to first audio and the two cities leave 88 and 89 ms. That remainder is the time the API spends between receiving a request and sending its first audio, and it is the same from either city.

## Long text starts as fast as short text

A streamed response starts from the opening of the text while the rest is still being synthesized. A 420-character Thai passage, 35.1 seconds of audio, returned its first audio in 76 ms from Singapore and 102 ms from Bangkok at the median. The whole passage finished arriving within 750 ms, about 47 times faster than it plays.

## English, Opus, and the OpenAI endpoint

The same run measured an English line, Opus audio, the OpenAI-compatible endpoint, and the longer Thai passage. Each figure below is time to first audio.

| Request | Singapore p50 | Singapore p90 | Bangkok p50 | Bangkok p90 |
| --- | --- | --- | --- | --- |
| Thai, MP3, 93 characters | 104 ms | 157 ms | 131 ms | 195 ms |
| English, MP3, 97 characters | 94 ms | 131 ms | 119 ms | 162 ms |
| Thai, Opus, 93 characters | 110 ms | 158 ms | 131 ms | 197 ms |
| Thai, OpenAI-compatible endpoint | 107 ms | 161 ms | 126 ms | 185 ms |
| Thai, MP3, 420 characters | 76 ms | 112 ms | 102 ms | 132 ms |

The English line used the Cookie voice and runs 5.3 seconds. The OpenAI-compatible endpoint, [POST /v1/audio/speech](https://paxalabs.com/docs/api/speech), landed within 5 ms of POST /v1/tts at the median from both cities. Code written for OpenAI's speech API gets the same first audio with a changed base URL.

## Complete audio

A voice-over rendered into a video needs the whole file before anything plays. Without streaming, the 6.9-second Thai line arrived as a complete file in 241 ms at the median from Singapore and 280 ms from Bangkok.

| Audio | Singapore p50 | Singapore p90 | Bangkok p50 | Bangkok p90 |
| --- | --- | --- | --- | --- |
| 6.9 s Thai line, one file | 241 ms | 362 ms | 280 ms | 396 ms |
| 35.1 s Thai passage, streamed to the end | 750 ms | 1,021 ms | 747 ms | 981 ms |

## How we measured

- The clients were two Google Cloud n4-standard-2 virtual machines, one in zone asia-southeast1-b (Singapore) and one in zone asia-southeast3-a (Bangkok).
- Both ran Node.js 26.3 and called api.paxalabs.com over HTTPS with an API key that had no credit limit. Each sent one request at a time on one connection kept open between requests.
- The two clients ran at the same time, from 10:31 to 10:38 UTC on September 24, 2026, with the tests interleaved.
- Time to first audio is measured at the client, from sending the request to receiving the first byte of the response body.
- Each row counts between 46 and 299 requests.
- Thai requests used Nom Yen and English requests used Cookie. The two short lines are the published sample lines of those voices.

## Hear it yourself

The [text to speech page](https://paxalabs.com/tts) speaks a line in any of its demo voices without an account. To call the API, [Optimize latency](https://paxalabs.com/docs/latency) lists the steps that run before the first byte and which of them a client controls.

The two voices in the test, on their published sample lines:

- [Nom Yen](https://paxalabs.com/voices/nomyen), Lead voice: https://paxalabs.com/audio/nomyen.m4a
- [Cookie](https://paxalabs.com/voices/cookie), Support agent: https://paxalabs.com/audio/cookie.m4a
