Overview #
Express Voice reads a short line of English text aloud in a clear, consistent voice, and since 2026-09-14 the host chooses that voice from seven: the original lj, three female and three male. You give it the text and, optionally, a voice id; it gives back an audio file of the line spoken. Use it for confirmations, prompts and short replies: it is the Express voice model, and it is in service now.
Express Voice is a text-to-speech model: it reads up to 600 characters of English text and returns the spoken text as 16 kHz mono WAV in the requested voice. Every voice is a fine-tune of SpeechT5, an open encoder–decoder speech model released under the MIT licence, with the waveform from the matching HiFi-GAN vocoder, also MIT. The voice lj — the default when voice is omitted, and the only voice until 2026-09-14 — is a 12,000-step fine-tune on LJSpeech, a public-domain corpus of about 24 hours of read English from one speaker, serving behind /v1/speak since 2026-09-13 and unchanged by this release. The six new voices, female-1, female-2, female-3, male-1, male-2 and male-3, come from a second fine-tune of the same base on six narrators of the Hi-Fi Multi-Speaker English TTS corpus, audiobook narration released under CC BY 4.0, and serve from a second CPU service since 2026-09-14.
It is the Default and only member of the Voice family: one model, one catalogue of seven entries, one route. Express Cue, the series' Sound model, renders non-verbal cues from descriptions and does not speak.
The voices are fixed. Express Voice cannot clone a voice from a sample, cannot vary emotion or style on request, and does not accept reference audio: a request carries text and, optionally, one of the seven voice ids from the catalogue that GET /v1/voices publishes.
Intended use #
- Reading a short reply aloud in a host that speaks to its user: a confirmation, a status line, a one- or two-sentence answer.
- Spoken prompts and notifications in one stable, recognisable voice across a product, chosen once from the male and female voices in the catalogue.
- Prototyping a voice interface before a production voice is licensed or recorded.
Out of scope #
- Long passages: the request limit is 600 characters. A host splits longer text at sentence boundaries and calls once per piece.
- Voice cloning, impersonation, or matching a particular person's voice.
- Languages other than English, singing, or expressive control — emotion, emphasis, pace — beyond what punctuation gives.
- Streaming: the route returns one whole WAV per request.
Choose Express Voice when #
- A consistent voice picked from a small catalogue is enough and the host wants the line back in a couple of seconds.
- The text is short English prose to be read plainly.
- Otherwise choose Express Cue when the sound needed is a cue rather than speech.
Specification #
| Parameters | 144,431,684 — the SpeechT5 TTS base count; each full fine-tune keeps its size |
|---|---|
| Base model | microsoft/speecht5_tts — SpeechT5 in its text-to-speech configuration, MIT licence |
| Vocoder | microsoft/speecht5_hifigan — HiFi-GAN, MIT licence; log-mel spectrogram to 16 kHz waveform |
| Speaker embedding | One x-vector per voice from speechbrain/spkrec-xvect-voxceleb (Apache-2.0), computed once from each training speaker and stored with the weights |
| Training corpora | LJSpeech — one English speaker, about 24 hours of read speech, public domain; Hi-Fi Multi-Speaker English TTS — audiobook narration, six narrators used, CC BY 4.0, 44.1 kHz resampled to 16 kHz |
| Recipe | lj: 12,000 steps at lr 5e-6, effective batch 32, bf16, seed 7. Six voices: lr 2e-5, batch 16 × 2, early-stopped at 15,000 of 20,000 steps, speaker-balanced sampler, about 18,000 clips |
| Weights | Two exports: model.safetensors of 577,789,320 bytes with the x-vector for lj, and the six-voice export of run duo-v3x3-lr2e-5-20260914-170056 with its six x-vectors |
| Voices | Seven: lj, female-1, female-2, female-3, male-1, male-2, male-3 |
| Output | 16 kHz mono WAV |
| Text limit | 600 characters per request, spoken as phrases of at most 12 words |
| Runtime | One GPU service (NVIDIA L4, kept warm) holding both fine-tunes, routed by voice id |
Try it #
- You send
- The line “Your table is ready. Please make your way to the front desk.” and the voice id male-3.
- You get back
- About three and a half seconds of that line spoken aloud in a male voice, as a WAV file.
The same exchange as the API sees it:
{
"text": "Your table is ready. Please make your way to the front desk.",
"voice": "male-3"
}{
"ok": true,
"engine": "express-voice",
"voice": "male-3",
"duration_seconds": 3.5,
"wav_base64": "UklGR…"
}Limits & safety #
Express Voice does not hear anything: it reads text, and it does not see who wrote it, who will hear it, or any audio. It does not see earlier requests, so two calls with the same text and voice produce the same speech and nothing in between carries over.
- It does not clone voices: there is no reference-audio input, and the seven x-vectors it uses are stored with the weights. It cannot be made to sound like a particular person.
- It does not speak languages other than English; other text is read as English letters and sounds wrong.
- It does not take emotion, emphasis, speed or pitch instructions; punctuation is the only lever, and the pitch of a voice is a property of the voice, not a control.
- It does not read more than 600 characters per request; longer text is rejected, not cut.
- It does not guarantee pronunciation of names, acronyms or numbers; a host that needs a particular reading spells it out.
- It does not know what it is saying: any text within the limit is spoken, so the host is responsible for the content it sends.
- It is trained on read sentences, and long or unusual sentences remain the weaker case; the listening-set word error rates (4.2 % for
lj, 3.7 % for the six voices) against the held-out figures (1.2 % and 1.6 %) are the measure of that so far, and the service's phrase split of 12 words is the safety net.
Related models #
Express Cue
Describe a sound in words and get a short audio clip back.
Renders a short sound cue from a text description through a deterministic synthesis engine
Latest versions #
| Version | Date | Status | Note |
|---|---|---|---|
| 1.1.0 | Released | Six male and female voices added: a second fine-tune of the same base on six Hi-Fi TTS narrators (lr 2e-5, 15,000 steps, held-out loss 0.401) on a second CPU service. The voice lj is unchanged. | |
| 1.0.0 | Released | The lr 5e-6 run of the sweep: 12,000 steps, held-out eval loss 0.3689, serving the single voice lj. |
Read the full documentation
Nine chapters: architecture, inputs and outputs, training, evaluation, API, runtime, limits and versions.