Refined generator: now statistically almost indistinguishable from Voynich
The crude generator left one real gap — its letters weren't rule-bound enough (h2/h1 0.64 vs real 0.48). Fix: build the words from an order-2 glyph Markov model trained on real Voynich words (so letter-adjacency is realistic), keep the page-number seed for page-local vocabulary, and add a small shared global lexicon for the cross-page layer.
Plain-English first:
Version one stamped out words by gluing word-parts together — close, but the letters didn't flow quite right. Version three learns how real Voynich letters follow each other and builds words that way, still seeding each page by its number. The result lines up with the real manuscript on almost everything that matters.
Scoreboard (real vs refined generator)
metric Real Voynich Page-gen v3 match
glyph h2/h1 0.48 0.49 essentially exact
word length 5.07 5.05 essentially exact
page-loc 2.03 2.00 essentially exact
one-glyph drift 3.65% 4.38% in range
adjacent repeat 0.80% 1.67% ~2x (a little high)
distinct words 8129 5018 ~40% low (reuses vocab more)
Glyph redundancy, word length, and page-localization are reproduced almost exactly; repetition and drift are in the right range; the only real residual is that the generator reuses its vocabulary somewhat more than the real manuscript (fewer distinct words) — a tuning knob, not a barrier.
What this establishes. A generator seeded by page number, building words from a letter-model plus a page-local lexicon, produces text statistically almost indistinguishable from the Voynich Manuscript — with no message inside. So procedural generation is not just possible in principle; a concrete, simple one matches the data. That is the hardest available blow to "why go to all this trouble unless it encodes something?" — the trouble produces exactly these statistics for free.
The ceiling, restated honestly. This does not prove Voynich was generated. A real language, a cipher, or a constructed system would also reproduce these statistics — that is precisely why distributional evidence can't close the case. What the match does do is remove "it's too structured/elaborate to be meaningless" from the table: structured and elaborate is cheap to manufacture. The live field is unchanged; "must be a real message" is weaker for it.
Caveat: matching a handful of summary statistics is not matching the manuscript — a forger's generator and the real production process can agree on these numbers and differ elsewhere (e.g., the exact morphology, the illustration-text coupling, line-level effects). Closing those is the endless-tail problem of all such tests.
Sources - ZL EVA transliteration — voynich.nu/data/ZL3b-n.txt (training data + scoreboard targets) - Method lineage: Rugg (2004) Cardan-grille hoax; Timm & Schinner (2019) self-citation generator; Brown et al. (1992) class models (earlier tests).








