Puki Beak
Puki's reading model: plain Hebrew text to IPA phonemes, for a girl or a boy listening, so his voice
(BlueTTS, with text_is_phonemes) says each word right. Part of
Puki, a free Hebrew/English game for toddlers.
A small bidirectional transformer (2.3M parameters: 6 layers, width 192) reads a line letter by letter, with the child's gender as its first token, and gives each Hebrew letter a consonant, a vowel and stress, as RenikudPlus does; the same rules turn those into phonemes.
Trained in two steps (train/read_label.py, train/read_train.py in Puki's repo):
- 600,000 sentences of web Hebrew labelled by RenikudPlus (by Max Melichov, Yakov Kolani and Morris Alper, Apache License 2.0), with its own probabilities, for boys and girls alike.
- 3,530 of Puki's own lines whose pronunciation was reviewed by ear.
On 458 reviewed lines it never trained on:
| Beak | RenikudPlus | |
|---|---|---|
| Words read as reviewed | 99.1% | 92.3% |
| Whole lines read as reviewed | 96.3% | 69.4% |
| Words it never saw in training | 93.7% | 92.9% |
On a Samsung Galaxy Tab A7 Lite: a 40-letter line in 17 ms (4 threads). 2.5 MB in int8 (dynamic, MatMul weights only).
Files: beak_int8.onnx (input ids: the gender token, then one id per character; outputs consonant,
vowel, stress logits per character) and vocab.json (the consonants, vowels, and which consonants each
letter may take). The reading code: Beak.kt in Puki's repo.