RenikudPlus — Hebrew grapheme-to-phoneme
Hebrew text in, IPA out, with stress marks. Trained without any benchmark-derived data; every number below reproduces from these files. On 126k words of unseen podcast speech it scores 93.3% word accuracy.
| word accuracy | RenikudPlus | int8 | Gemini | ReNikud | Phonikud |
|---|---|---|---|---|---|
| OVERALL | 86.2 | 85.9 | 84.6 | 78.2 | 66.4 |
| Gender | 99.3 | 99.3 | 77.0 | 59.9 | 37.5 |
| Min. Stress Pairs | 90.0 | 91.3 | 88.0 | 80.7 | 78.7 |
| Stress Homographs | 91.1 | 90.6 | 92.6 | 79.8 | 78.3 |
| Names | 80.0 | 82.0 | 75.3 | 67.3 | 68.0 |
| Acronyms | 79.6 | 76.3 | 79.0 | 56.6 | 37.5 |
| Slang | 75.6 | 75.0 | 71.2 | 59.0 | 41.7 |
| Penultimate Stress | 85.4 | 86.1 | 89.4 | 82.1 | 60.9 |
| Rare Phonemes | 58.3 | 55.0 | 57.6 | 41.1 | 19.9 |
| Foreign | 78.1 | 77.4 | 71.6 | 56.8 | 36.1 |
| Colloquial | 51.0 | 51.0 | 25.2 | 54.3 | 9.3 |
| ILSpeech-test | 93.2 | 93.1 | 96.0 | 92.5 | 85.5 |
from renikud_onnx import G2P # pip install onnxruntime numpy
g2p = G2P("model.onnx") # or model_int8.onnx
g2p.phonemize("הלכתי לספר וקראתי ספר בזמן שהוא ספר כמה אצבעות יש לו")
# halˈaχti lesapˈeʁ vekaʁˈati sˈefeʁ bizmˈan ʃehˈu safˈaʁ kˈama ʔetsbaʔˈot jˈeʃ lˈo
g2p.phonemize("המחיר 1250 שקלים") # digits -> words: hameχˈiʁ ʔˈelef matˈajim…
g2p.phonemize("אני רוצה להגיד לך משהו חשוב", speaker=2, target_speaker=1) # 0 unknown, 1 male, 2 female
model.onnx— fp32 weightsmodel_int8.onnx— quantized, 4× smallerrenikud_onnx.py— wrapper (decoding, long inputs, numbers, speaker inputs)
