Neural phonology · local & deterministic
The vowels, phonemes, and word boundaries live in the reader’s mind — not on the page. Secryst runs byte-level seq2seq models (ONNX) in-process to recover them: diacritization, vocalization, grapheme-to-phoneme. No cloud, no LLM, no telemetry.
Every secryst model recovers information the writing system withholds. What it’s called depends on the script.
Restore the short vowels (ḥarakāt) omitted by the Arabic script, including word-final case endings.
Restore nikud for Hebrew, with cantillation marks passed through untouched.
Map graphemes to phonemes for scripts whose orthography encodes the sound only implicitly.
Three language-identical implementations of one versioned contract, kept honest by shared test vectors.
A versioned models.yaml index and the IMF v1 model-zip format: every artifact sha256-verified on every load. Standards get descriptive names; implementations get evocative ones.
The Python crystal generates golden outputs; Ruby and TypeScript must reproduce them byte-for-byte in CI. A model that behaves differently across runtimes never ships.
BSD-licensed crystals with no interscript dependency — usable standalone for TTS front-ends, text normalization, or any G2P need. Related to Interscript by contract, not by captivity.
Model ids resolve through the index; artifacts download once, verify, and cache. Overrides: SECRYST_INDEX, SECRYST_CACHE.
gem 'secryst'
t = Secryst::Translator.new(
model_file: 'khm-latn-byt5.zip')
t.translate('ភាសា') # => "pheasaea" pip install secryst
from secryst import Model
m = Model.load('khm-latn-1.0')
m.translate('ភាសា') # => "pheasaea" npm i secryst onnxruntime-node
import { load } from 'secryst'
const m = await load('khm-latn-1.0')
await m.translate('ភាសា')