Checkpoints Latest →
Checkpoint 1 · TTS Pronunciation Strategy

How should WordSense pronounce Indonesian words out loud?

An API audit found the real root cause: no language signal on short words, plus a model (v3) the voice isn't even verified for. What's left: with that fixed, does plain text already sound right, or does it still need alias respelling? Everything already decided is summarized below, not re-litigated.

Root cause found — language signal + wrong model Open: plain vs alias, corrected setup (D-TTS-7) 12-item decisive test — 10 words + 2 phrases
The corrected-setup test · 17 Jul night

The corrected-setup test — does the language signal alone fix it?

Every clip below uses the corrected setup: model eleven_flash_v2_5 (voice-verified, unlike v3), language_code: "id" (the missing signal the audit found), and stability-tuned voice_settings (no more hallucinated pauses or question-intonation on short input). The only difference between the two players in each row is whether a pronunciation dictionary was attached.

ARM N (no dict) — plain, correctly-spelled Indonesian text, zero pronunciation rules. This is the hypothesis test: if cepat comes out “ch” (not “s”) and the e-vowels land right with no respelling at all, the language signal was the missing piece all along — not the alias layer.
ARM D (alias dict) — identical setup + one dictionary (created once for this run) with the derived-convention respelling for each word. Measures whether respelling still adds anything once the model is correctly configured.

The corrected-setup test · 12 items

10 words + 2 phrases

Tap a verdict on each row — plain is right / needs respelling / both wrong.

cepat Headline test
The word that started this whole audit — "sepat" was the smoking gun for the missing language signal. Arm D alias: chepat.
N · no dict
D · alias dict
meja
Known offender — "j" previously read Spanish/H-like without a language signal. Arm D alias: médja.
N · no dict
D · alias dict
boleh
Known offender — read "buleh"; also the word whose question-intonation artifact came from eleven_v3 + no voice_settings, not the word itself. Arm D alias: bolèh.
N · no dict
D · alias dict
gue
Known offender — read "gooah". From the original 3-word test, not the big-batch list. Arm D alias: gu-eh.
N · no dict
D · alias dict
tempe
Probe — word-final /e/. Arm D alias: témpé.
N · no dict
D · alias dict
enak
Probe — open non-final /e/, previously ear-tested "sounds right" with alias. Arm D alias: énak.
N · no dict
D · alias dict
teh
Probe — closed word-final /e/, the original mispronunciation suspect. Arm D alias: tèh.
N · no dict
D · alias dict
ekonomi
Probe — multisyllable, unstressed first-syllable /e/. Arm D alias: ékonomi.
N · no dict
D · alias dict
kena
Probe — you already ear-approved the alias reading despite a Kaikki schwa disagreement. Arm D alias: kéna.
N · no dict
D · alias dict
beli Control
Control — identity alias (schwa/default, nothing to fix). If the language signal alone fixes everything, N and D should sound identical here. Arm D alias: beli (unchanged).
N · no dict
D · alias dict
boleh saja “that's fine / go ahead”
Prosody probe — checks whether the corrected setup also kills boleh's old question-intonation artifact inside a phrase. Rule in phrase (arm D): boleh→bolèh.
N · no dict
D · alias dict
makan tempe cepat “eat tempe quickly”
Prosody probe — two known offenders (tempe + cepat) in one connected phrase; checks whether the language signal holds inside natural speech, not just isolated words. Rules in phrase (arm D): tempe→témpé, cepat→chepat.
N · no dict
D · alias dict
Decide

Two decisions for you

One tap each — a free-text note is optional.

🎯
D-TTS-7 — Across the 12 items above, does the corrected setup (flash_v2_5 + language_code id) still need alias respelling? plain-suffices = ARM N alone was right on every item, drop the dictionary entirely. alias-for-irregulars = ARM N fixed most words but a few genuinely still need a respelling. rework = the corrected setup didn't fix things the way the audit predicted — say what's still wrong, in a note.
🏁
D-TTS-FINAL — Adopt eleven_flash_v2_5 + language_code: "id" (+ one persistent alias dictionary, only for the words D-TTS-7 says still need it) as THE pronunciation strategy? This replaces every prior TTS setup in the app — no more v3, no more per-run temp dictionaries. If D-TTS-7 is alias-for-irregulars, say which words in a note; that becomes the dictionary's rule set.