Checkpoints Latest →
Checkpoint 1 · TTS Pronunciation Strategy

How should WordSense pronounce Indonesian words out loud?

WordSense uses ElevenLabs to generate every spoken-audio clip in the app. Plain text sometimes comes out mispronounced. We tested 4 fixes on 3 words, then reworked one of them on 17 Jul after you flagged a problem with it. This checkpoint asks you to pick the strategy that becomes permanent — across the whole catalog, not just these three test words.

4 strategies × 3 words 17-Jul IPA rework — 3 new clips eleven_v3 model Alias = current front-runner +15-item alias batch (17 Jul) Stored vs derived respelling (D-TTS-5) ★ Decisive batch — 30 words × 2 models (17 Jul night)
New since your last listen

NEW — listen to these first

The 17-Jul IPA rework. Same three words, same phonetic idea — but the stress mark and syllable-dot are stripped before they hit the model. This is the fix for the pause / spoken-dot problem you flagged. Your cached view on 17 Jul missed these three clips; they're new.

NEW
meja — ˈme.dʒa → medʒa (stress mark + syllable dot stripped)
NEW
boleh — ˈbo.leh → boleh (stress mark + syllable dot stripped)
NEW
gue — ˈɡu.e → ɡue (stress mark + syllable dot stripped)
Full detail

All clips, word by word

Five versions per word: no-fix baseline (older model), no-fix on v3, the alias respelling, the original IPA (with the pause bug), and the 17-Jul IPA rework.

meja Respell: médja IPA: ˈme.dʒa ★ Alias — current front-runner
Frank's verdict — 17 Jul “V3 plain second e is wrong / V3 Alias perfect / V3 IPA very clear pronunciation but pause between syllable”
baseline-v2
Plain text, no fix, older model.
v3-plain
Plain text, no fix, v3 model. Frank: second "e" is wrong.
v3-alias ★ front-runner
Respelled input sent: “médja”. Frank: perfect.
v3-ipa (original)
Raw IPA “ˈme.dʒa” sent as-is — the one with the pause.
v3-ipa-clean (NEW)
17-Jul rework — separators stripped: “medʒa”.
📝
Notes on meja (optional). Anything about these five clips — pace, stress, anything that still sounds off.
boleh Respell: bolèh IPA: ˈbo.leh ★ Alias — current front-runner
Frank's verdict — 17 Jul “Same as before”
baseline-v2
Plain text, no fix, older model.
v3-plain
Plain text, no fix, v3 model.
v3-alias ★ front-runner
Respelled input sent: “bolèh”.
v3-ipa (original)
Raw IPA “ˈbo.leh” sent as-is — the dot was spoken aloud (“bo-dot-leh” artifact).
v3-ipa-clean (NEW)
17-Jul rework — separators stripped: “boleh”.
📝
Notes on boleh (optional). Anything about these five clips — pace, stress, anything that still sounds off.
gue Respell: gu-eh IPA: ˈɡu.e ★ Alias — current front-runner
Frank's verdict — 17 Jul “Same as before”
baseline-v2
Plain text, no fix, older model.
v3-plain
Plain text, no fix, v3 model.
v3-alias ★ front-runner
Respelled input sent: “gu-eh”.
v3-ipa (original)
Raw IPA “ˈɡu.e” sent as-is — dot artifact here too.
v3-ipa-clean (NEW)
17-Jul rework — separators stripped: “ɡue”.
📝
Notes on gue (optional). Anything about these five clips — pace, stress, anything that still sounds off.
Alias at scale · 17 Jul batch

Alias at scale — 10 words + 5 phrases (17 Jul batch)

The front-runner strategy, pushed past the original 3 words.

The alias strategy tested well on meja / boleh / gue. This batch pushes it further: 10 standalone words (mostly stored IPA already in the catalog, respelled with the same alias convention) and 5 short phrases that put an alias word inside connected speech, to see if the fix survives once the word isn't spoken alone.

Two words are deliberate controls: beli and senang. Both have a schwa vowel, which is the model's default reading anyway — so their "alias" is spelled identically to the plain word (no diacritic). They should sound exactly like the unmodified baseline. If a control sounds different, that's a sign the alias mechanism itself is doing something unexpected, not that a respelling rule is wrong.

Respelling convention used: é = /e/ in an open, non-final syllable (meja→médja). è = /e/ in a closed, word-final syllable (boleh→bolèh). A bare word-final open /e/ gets an added "h" digraph (gue→gu-eh). Plain "e" with no mark = schwa, left unmarked — that's the beli/senang controls.

Alias at scale · words

10 words

Tap a verdict under each clip — sounds right / sounds wrong / unsure. A note is optional. Words flagged “known-suspect” were already flagged in an earlier diagnosis pass, before this batch.

teh ⚠ known-suspect
Alias sent: tèh — catalog IPA /teh/.
enak ⚠ known-suspect
Alias sent: énak — catalog IPA /ˈe.nak/.
ekonomi ⚠ known-suspect
Alias sent: ékonomi — catalog IPA /e.ko.ˈno.mi/.
tempe ⚠ known-suspect
Alias sent: témpeh — catalog IPA /ˈtem.pe/.
empat
Alias sent: émpat — catalog IPA /ˈem.pat/.
kena
Alias sent: kéna — catalog IPA /ˈke.na/.
cepat
Alias sent: cépat — catalog IPA /ˈtʃe.pat/.
cepat FIX — c→ch
Alias sent: chépat — catalog IPA /ˈtʃe.pat/. Frank 17 Jul: cépat read as “sepat” — Indonesian c = ch; convention now respells the consonant too. Does this fix it?
sedih
Alias sent: sédih — catalog IPA /ˈse.dih/.
beli Control — unchanged
Alias sent: beli (identical to plain text) — catalog IPA /bə.ˈli/, schwa. Should sound exactly like the baseline.
senang Control — unchanged
Alias sent: senang (identical to plain text) — catalog IPA /ˈsə.naŋ/, schwa. Should sound exactly like the baseline.
Alias at scale · phrases

5 phrases

Same alias rule, now inside connected speech — does the fix survive next to other words?

teh manis “sweet tea”
Rule inside phrase: teh → tèh.
enak sekali “very delicious”
Rule inside phrase: enak → énak.
makan tempe “eat tempe”
Rule inside phrase: tempe → témpeh.
kena hujan “caught in the rain”
Rule inside phrase: kena → kéna.
beli empat “buy four”
Rules inside phrase: beli → beli (control, unchanged), empat → émpat.
📊
D-TTS-4 — Overall, across the 15 items above: does alias hold at scale? One tap for the batch as a whole — use the per-item verdicts above for specifics on which words or phrases misbehaved.
Alias at scale · stored vs derived

Which respelling source? — stored (what the app shows) vs derived (é/è convention)

Same 11 words, two different respelling sources feeding the identical alias mechanism.

WordSense already stores a per-word respelling that learners see on-screen right now (e.g. beli → “buh-LEE”) — the alias-batch above instead used a brand-new é/è convention invented for this test. If the exact string the app already displays also drives the voice correctly, display and audio share one source of truth forever, with no new convention to invent or maintain.

teh ⚠ known-suspect
Stored
App shows learners: “teh” — identical to plain text, no hyphen or caps stress mark.
Derived
17-Jul convention: “tèh”.
enak ⚠ known-suspect
Stored
App shows learners: “EH-nahk”.
Derived
17-Jul convention: “énak”.
ekonomi ⚠ known-suspect
Stored
App shows learners: “eh-ko-NO-mee”.
Derived
17-Jul convention: “ékonomi”.
tempe ⚠ known-suspect
Stored
App shows learners: “TEM-peh”.
Derived
17-Jul convention: “témpeh”.
empat
Stored
App shows learners: “EM-paht”.
Derived
17-Jul convention: “émpat”.
kena
Stored
App shows learners: “KEH-nah”.
Derived
17-Jul convention: “kéna”.
cepat
Stored
App shows learners: “CHEH-paht” — already spells the consonant as CH, no manual fix pass needed.
Derived (FIX)
Compared against the corrected derived leg: “chépat” (the c→ch fix above), not the original “cépat” that Frank flagged as “sepat.”
sedih
Stored
App shows learners: “SEH-dih”.
Derived
17-Jul convention: “sédih”.
beli
Stored
App shows learners: “buh-LEE” — actively respells the schwa and marks stress (not an identity control on this leg).
Derived (control)
17-Jul convention: “beli” — identity alias, the schwa control from that batch.
senang
Stored
App shows learners: “SUH-nahng” — actively respells the schwa and marks stress (not an identity control on this leg).
Derived (control)
17-Jul convention: “senang” — identity alias, the schwa control from that batch.
meja ★ meja's alias was Frank's “perfect” verdict
Stored
App shows learners: “MAY-jah”.
Derived
17-Jul convention: “médja” — the clip Frank called “perfect” in checkpoint 1.
🎙️
D-TTS-5 — Overall, across the 11 pairs above: which respelling source should drive the voice? “Use stored” means display and audio share one source of truth going forward — no new convention to build or maintain. “Use derived” keeps the 17-Jul é/è convention as its own channel. “Mixed” means neither wins outright — use the per-word verdicts above to work out which words need which source, or a rule for picking per-word.
The decisive batch · 17 Jul night

The decisive batch — 30 words × 2 models (17 Jul night)

Per your ruling on D-TTS-1 ("test more words first, then decide") and D-TTS-5 ("use derived") — every item below runs through both eleven_v3 and eleven_multilingual_v2, same alias mechanism, same respelling, so you can pick the model on an apples-to-apples basis. v2 was checked structurally first (a real preflight call confirmed HTTP 200 + valid audio with the dictionary attached) — whether it audibly honors the alias the way v3 does is exactly what your ear below tells us.

Convention v2 (updated from tonight's ear findings): é = full /e/ in any position, including word-final (témpé, not témpeh — you caught the -eh digraph reading as schwa on tempe). è = full /e/ in a closed final syllable (tèh, bolèh). Plain "e" = schwa, left unmarked. New this batch: a c→ch guard before e/i (chépat class) generalized to a second word (kecil→kechil), and no separators or stress marks in any alias string.

Unplanned finding — t070's stored IPA has a systematic bias, not just on cepat. Every candidate was cross-checked against Kaikki/Wiktionary's IPA (a second, independent source already in the catalog). Beyond cepat, seven more words disagreed the same way — t070 says a full, stressed vowel early in the word; Kaikki's Standard-Indonesian entry says schwa with stress later (dekat, penting, karena, lebih, rezeki, terus, berhenti). Those seven are brand-new words never ear-tested before, so they're respelled here from the Kaikki-corrected reading (identity alias, badged DATA-FIX) and t070's row is flagged as a data-fix candidate. Three words from the 17-Jul batch (kena, empat, sedih) show the same Kaikki disagreement — but you already ear-approved their é-marked version as "sounds right," so those were not silently changed; they're kept as-is and just badged ⚠ FYI for your awareness. dekat specifically matches a Kaikki-tagged Eastern-dialect variant rather than a flat error — a register question, not just a bug.

The decisive batch · words

30 words

Tap a verdict on each row — v3 better / v2 better / both right / both wrong. DATA-FIX = respelling corrected off Kaikki, t070's IPA flagged for a real fix. ⚠ FYI = Kaikki disagrees but the é-marked version already passed your ear-test, kept as-is. Identity = alias equals the plain word (schwa/default reading, nothing to fix).

cepat DATA-FIX
Alias sent: chepat — t070 IPA /ˈtʃe.pat/ — Kaikki /tʃəˈpat/.
REAL FIX: t070 IPA has full e + initial stress; Kaikki confirms schwa + final stress /tʃə.pat/. Respelling corrected to schwa (left unmarked) + c->ch guard. Supersedes the 17-Jul 'chepat-acute' fix clip, which still had the wrong vowel even though it fixed the consonant.
v3 · eleven_v3
v2 · eleven_multilingual_v2
tempe
Alias sent: témpé — t070 IPA /ˈtem.pe/.
No Kaikki entry found for 'tempe'. t070 IPA matches well-known pronunciation (not suspicious). v2 CONVENTION CHANGE: e-acute now used word-finally too -- was 'témpeh' in the 17-Jul batch, Frank caught the -eh digraph reading as schwa.
v3 · eleven_v3
v2 · eleven_multilingual_v2
meja
Alias sent: médja — t070 IPA /ˈme.dʒa/ — Kaikki /ˈmedʒa/.
Anchor -- Frank rated this clip 'perfect' on 17 Jul. Unchanged respelling, carried into both new arms for a direct v3-vs-v2 comparison.
v3 · eleven_v3
v2 · eleven_multilingual_v2
boleh
Alias sent: bolèh — t070 IPA /ˈbo.leh/ — Kaikki /ˈbolɛh/.
Anchor, unchanged, carried into both arms.
v3 · eleven_v3
v2 · eleven_multilingual_v2
teh
Alias sent: tèh — t070 IPA /teh/ — Kaikki /ˈtɛ/.
Known mispronunciation suspect from the original 3-word test; anchor, unchanged, carried into both arms.
v3 · eleven_v3
v2 · eleven_multilingual_v2
enak
Alias sent: énak — t070 IPA /ˈe.nak/ — Kaikki /ˈɛnak/.
Known-suspect, previously ear-tested 'sounds right' in the 17-Jul batch.
v3 · eleven_v3
v2 · eleven_multilingual_v2
ekonomi
Alias sent: ékonomi — t070 IPA /e.ko.ˈno.mi/ — Kaikki /ekoˈnomi/.
Known-suspect, previously ear-tested 'sounds right'.
v3 · eleven_v3
v2 · eleven_multilingual_v2
kena ⚠ FYI — Kaikki conflicts
Alias sent: kéna — t070 IPA /ˈke.na/ — Kaikki /kəˈna/.
Kaikki gives schwa + final stress (kə-NA), conflicting with the full-e-first reading used here. Frank already ear-approved 'kéna' (sounds right) on 17 Jul -- KEPT per that ruling, flagged here as an FYI, not silently changed.
v3 · eleven_v3
v2 · eleven_multilingual_v2
empat ⚠ FYI — Kaikki conflicts
Alias sent: émpat — t070 IPA /ˈem.pat/ — Kaikki /əmˈpat/.
Same pattern as kena: Kaikki schwa + final stress vs t070 full-e + initial stress. Frank already ear-approved 'émpat' -- kept, flagged FYI.
v3 · eleven_v3
v2 · eleven_multilingual_v2
sedih ⚠ FYI — Kaikki conflicts
Alias sent: sédih — t070 IPA /ˈse.dih/ — Kaikki /səˈdih/.
Same pattern. Frank already ear-approved 'sédih' -- kept, flagged FYI.
v3 · eleven_v3
v2 · eleven_multilingual_v2
kenapa Identity
Alias sent: kenapa — t070 IPA /kə.ˈna.pa/ — Kaikki /kəˈnapa/.
Near-pair against kena -- identical 'ke' onset, this word is genuinely schwa per both sources. Identity alias.
v3 · eleven_v3
v2 · eleven_multilingual_v2
jelek
Alias sent: jelèk — t070 IPA /dʒə.ˈlɛk/ — Kaikki /dʒəˈlɛk/.
Within-word near-pair: first syllable schwa (left unmarked), second syllable a full vowel in a closed FINAL syllable (e-grave).
v3 · eleven_v3
v2 · eleven_multilingual_v2
jendela
Alias sent: jendéla — t070 IPA /dʒən.ˈde.la/ — Kaikki /dʒənˈdɛla/.
First syllable schwa spelled 'en' (no bare-e ambiguity, untouched); second syllable e-acute (open non-final, stressed).
v3 · eleven_v3
v2 · eleven_multilingual_v2
kecil
Alias sent: kechil — t070 IPA /ˈkə.tʃil/ — Kaikki /kəˈtʃil/.
c->ch guard generalization test on a word other than cepat -- schwa vowel left untouched.
v3 · eleven_v3
v2 · eleven_multilingual_v2
dekat DATA-FIX Identity
Alias sent: dekat — t070 IPA /ˈde.kat/ — Kaikki /dəˈkat/ (Standard-Indonesian) / /ˈdekat/ (Eastern).
t070's full-e reading exactly matches Kaikki's tagged EASTERN variant, not the Standard-Indonesian schwa reading. Respelling here uses the Standard reading (identity, schwa left unmarked). Flagging t070 as a dialect-tagging gap rather than a flat error -- worth a data decision on which register the catalog should default to.
v3 · eleven_v3
v2 · eleven_multilingual_v2
penting DATA-FIX Identity
Alias sent: penting — t070 IPA /ˈpen.tiŋ/ — Kaikki /pənˈtiŋ/.
Kaikki: schwa + final stress. t070: full e + initial stress. No dialect tag on the Kaikki side -- flagged as a plain data-fix candidate. Common word ('important').
v3 · eleven_v3
v2 · eleven_multilingual_v2
karena DATA-FIX Identity
Alias sent: karena — t070 IPA /ka.ˈre.na/ — Kaikki /ka.rə.ˈna/ (+ fast-speech contraction /ˈkar.na/).
t070 stresses the 2nd syllable with a full vowel; Kaikki has schwa there, stress on the final syllable. Very common function word ('because') -- worth getting right.
v3 · eleven_v3
v2 · eleven_multilingual_v2
lebih DATA-FIX Identity
Alias sent: lebih — t070 IPA /ˈle.bih/ — Kaikki /ləˈbih/.
Same pattern: t070 full-e + initial stress vs Kaikki schwa + final stress.
v3 · eleven_v3
v2 · eleven_multilingual_v2
rezeki DATA-FIX Identity
Alias sent: rezeki — t070 IPA /rə.ˈze.ki/ — Kaikki /rə.zə.ˈki/.
t070 marks the 2nd syllable full-e + stressed; Kaikki has schwa there too, stress on the final syllable.
v3 · eleven_v3
v2 · eleven_multilingual_v2
terus DATA-FIX Identity
Alias sent: terus — t070 IPA /ˈte.rus/ — Kaikki /təˈrus/.
Same pattern. Common word ('straight/keep going').
v3 · eleven_v3
v2 · eleven_multilingual_v2
berhenti DATA-FIX Identity
Alias sent: berhenti — t070 IPA /bər.ˈhen.ti/ — Kaikki /bər.hən.ˈti/.
BIGGEST mismatch found: t070 stresses the 2nd syllable with a full vowel ('ber-HEN-ti'); Kaikki has schwa there too and moves stress to the final syllable ('bur-hun-TI'). Common verb ('to stop') -- a real data-fix candidate, not a dialect question.
v3 · eleven_v3
v2 · eleven_multilingual_v2
teman Identity
Alias sent: teman — t070 IPA /tə.ˈman/ — Kaikki /təˈman/.
Near-pair CONTROL against tempe/terus's 'te-' onset -- same two letters, different underlying sound. Identity alias.
v3 · eleven_v3
v2 · eleven_multilingual_v2
sekolah Identity
Alias sent: sekolah — t070 IPA /sə.ˈko.lah/ — Kaikki /səˈkolah/.
Identity control -- 'school'.
v3 · eleven_v3
v2 · eleven_multilingual_v2
sekarang Identity
Alias sent: sekarang — t070 IPA /sə.ˈka.raŋ/ — Kaikki /səˈkaraŋ/ (+ fast-speech /ˈska.raŋ/).
Identity, common function word ('now').
v3 · eleven_v3
v2 · eleven_multilingual_v2
dengar Identity
Alias sent: dengar — t070 IPA /ˈdəŋ.ɡar/ — Kaikki /dəˈŋar/.
Edge case: e+nasal cluster spelling ('deng') confirmed schwa by both sources despite visually resembling a full-vowel spelling.
v3 · eleven_v3
v2 · eleven_multilingual_v2
pernah Identity
Alias sent: pernah — t070 IPA /pər.ˈnah/ — Kaikki /pərˈnah/.
Edge case: 'er' spelling for a stressed schwa -- confirmed safe to leave unmarked.
v3 · eleven_v3
v2 · eleven_multilingual_v2
besar Identity
Alias sent: besar — t070 IPA /bə.ˈsar/ — Kaikki /bəˈsar/.
Identity, common word ('big').
v3 · eleven_v3
v2 · eleven_multilingual_v2
beli Identity
Alias sent: beli — t070 IPA /bə.ˈli/ — Kaikki /bəˈli/.
Legacy control carried from the 17-Jul batch.
v3 · eleven_v3
v2 · eleven_multilingual_v2
senang Identity
Alias sent: senang — t070 IPA /ˈsə.naŋ/ — Kaikki /səˈnaŋ/.
Legacy control carried from the 17-Jul batch.
v3 · eleven_v3
v2 · eleven_multilingual_v2
efektivitas
Alias sent: éféktivitas — t070 IPA /e.fek.ti.ˈvi.tas/ — Kaikki [ɛfɛktiˈvitas] (phonetic only).
Multisyllable stress-test: two e-acute marks in one word ('effectiveness').
v3 · eleven_v3
v2 · eleven_multilingual_v2
The decisive batch · phrases

10 phrases

Natural 2–4 word phrases mixing ruled words and controls — does either model hold up once the alias word isn't spoken alone?

teh manis “sweet tea”
Rules in phrase: teh→tèh.
v3 · eleven_v3
v2 · eleven_multilingual_v2
cepat sekali “very fast”
Rules in phrase: cepat→chepat.
v3 · eleven_v3
v2 · eleven_multilingual_v2
makan tempe “eat tempe”
Rules in phrase: tempe→témpé.
v3 · eleven_v3
v2 · eleven_multilingual_v2
kena hujan “caught in the rain”
Rules in phrase: kena→kéna.
v3 · eleven_v3
v2 · eleven_multilingual_v2
meja kecil “small table”
Rules in phrase: meja→médja, kecil→kechil.
v3 · eleven_v3
v2 · eleven_multilingual_v2
boleh beli “may buy”
Rules in phrase: boleh→bolèh, beli→beli.
v3 · eleven_v3
v2 · eleven_multilingual_v2
sedih sekali “very sad”
Rules in phrase: sedih→sédih.
v3 · eleven_v3
v2 · eleven_multilingual_v2
berhenti dekat sini “stop near here”
Rules in phrase: berhenti→berhenti, dekat→dekat.
v3 · eleven_v3
v2 · eleven_multilingual_v2
sangat penting “very important”
Rules in phrase: penting→penting.
v3 · eleven_v3
v2 · eleven_multilingual_v2
senang punya teman “happy to have a friend”
Rules in phrase: senang→senang, teman→teman.
v3 · eleven_v3
v2 · eleven_multilingual_v2
Decide

D-TTS-6 — which model wins?

One tap for the batch as a whole — use the per-item verdicts above for specifics.

🎯
D-TTS-6 — Across the 40 items above, which model should drive the permanent pronunciation pipeline? "Mixed" is a legitimate answer if v3 clearly wins on some items and v2 on others — say which, in a note, if so.
📜
Gentle reminder: D-TTS-2 (keep IPA as a backup channel, or drop it) is still unanswered above. Not urgent for this batch, but it's the one open question from the earlier rounds that this new data doesn't resolve on its own.
Decide

Two decisions for you

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

🎯
D-TTS-1 — Adopt eleven_v3 + the alias-respelling dictionary as THE pronunciation strategy? This is the leg that tested well across all three words on 17 Jul — you called meja's alias clip “perfect.” Adopting it means we build out the respelling dictionary across the whole catalog, not just these three test words.
🔤
D-TTS-2 — IPA leg: keep it as a backup channel, or drop it? The 17-Jul rework (the NEW clips above) fixed the separator artifact that caused the pause you heard. If it sounds clean now, IPA could stay as a backup pronunciation channel (with the separator-stripping preprocessing built in) for words alias doesn't cover well. Otherwise we drop it and go alias-only.
Worth your eye

One thing to know before you judge clip length

⏱️
Every clip here pads a single word out to 2.7–4.1 seconds. That's eleven_v3's known short-input instability (our pool voices aren't v3-tuned) — not a defect in the alias or IPA rules themselves. In the real app, words are spoken inside sentences and phrases, so this padding isn't expected to show up the same way.