Kristopher Baker iOS roots · Product systems · AI-assisted workflows
← Aoede

shipped · 2026.06.07 · 2 min read

Now It Reads Watashi, Not Watakushi

The last Japanese update ended on a complaint: the app read 私 as watakushi instead of watashi, and it had no pitch accent, so 箸 (chopsticks) and 橋 (bridge) sounded identical. That second pass is now in. Japanese pronunciation runs through OpenJTalk, which does real morphological analysis against an accent dictionary, and the readings come out right: 私 is watashi, 三日 is mikka, 100円 is hyaku-en, and the pitch is actually there.

OpenJTalk is the engine behind Python's pyopenjtalk, and the reason I could use it at all is that it is BSD licensed, not GPL. It clears the same bar the pure-Apple Phase 1 was built to protect. Its katakana readings feed the exact Kokoro-vocab phoneme table the fallback already used, so I didn't invent a new phoneme inventory, just a better source of readings. The ~23 MB dictionary downloads on first Japanese use, the same pattern as the Kokoro model itself, and if that download ever fails, Japanese quietly falls back to the Apple-only path rather than breaking.

One piece is held back on purpose. OpenJTalk also predicts downstep, the small pitch drop inside a phrase, and I'm not injecting that into the phoneme stream yet. Kokoro has its own prosody model, so I want to A/B whether the explicit downstep marks actually sound better before committing to them. For now the readings are correct and the accent is phonemically right, which was the whole point. The flat, slightly-wrong Japanese from a day ago is gone.