normalized_text field lets you provide a pronunciation-oriented version of your input alongside the original — the engine uses both to produce more accurate speech.
The original text preserves meaning and context. The normalized_text describes how the sentence should be spoken.
normalized_text is currently used by sona_speech_2 and sona_speech_2_flash and is primarily designed for Japanese.When normalized text helps
Pairnormalized_text with text whenever your input contains:
- Numbers with implicit pronunciation (years, prices, phone numbers)
- Units and symbols (
10%,170cm,$50) - Mixed scripts (Japanese with English abbreviations, Latin words inside Korean)
- Kanji with ambiguous readings
- Special symbols (
〜,※,→)
Basic usage
- Python
- TypeScript
- cURL
Generating normalized Japanese text with an LLM
The most common pattern is to call an LLM once to produce the normalized version, then pass bothtext and normalized_text to the TTS API. The prompt below produces clean JSON output that you can map directly to the request.
Tips
- Keep
textnatural. Don’t include furigana or other annotations insidetext. Put all pronunciation hints innormalized_text. - Match word-for-word.
normalized_textshould match the meaning oftextexactly — don’t paraphrase or rewrite, only respell. - Cache LLM outputs. For deterministic inputs (UI strings, recurring announcements), generate
normalized_textonce and store it alongside the original. - Skip if not needed. Casual conversational lines without numbers, units, or ambiguous kanji usually don’t benefit from
normalized_text.
Related
Models
Which models accept
normalized_text.Create speech
Full TTS request reference.