normalize: true) Geko expands machine-y text — numbers, currency, percentages, dates, times — into how a Kazakh speaker would actually say it, before synthesis. This is why 152 comes out as words, not “one-five-two”.
What it handles
- Numbers —
152→ spoken cardinal form. - Currency —
5500 ₸→ the amount in words + “теңге”. - Percentages —
15%→ “…пайыз”. - Dates & times — written forms → spoken forms.
- Common abbreviations and symbols.
serve/normalize.py). As more languages ship, each gets its own normalizer.
When to turn it off
Setnormalize: false if:
- Your text is already written exactly as it should be spoken.
- You’re feeding pre-processed text from your own pipeline.
- You want digits read out literally by your own rules.
normalize: false, or open an issue with the example.
Next steps
TypeScript SDK
The
normalize param and the full synthesis surface.Playing & saving audio
Turn the synthesized WAV into files or playback.
Latency & quality
Tune the
nfe dial for speed or fidelity.