# Echoes pronunciation graph methods (v1)

Published 2026-08-30.

The graph contains one node per unique primary CMUdict pronunciation after stress marks are removed. Multiple spellings with the same pronunciation share a node. Two nodes have an undirected edge when one pronunciation can become the other through exactly one phoneme insertion, deletion or substitution.

The node universe combines five-letter accepted guesses that have a primary CMUdict pronunciation with common 3–7-letter CMUdict words at the pinned word-frequency threshold. The checked-in sensitive-word policy and an additional generator policy are excluded. The graph is an engineered dataset, not a claim to cover every English word, accent, inflection or pronunciation.

Pronunciation source: CMU Pronouncing Dictionary commit `74790861f652b15e4ac49015a90074ad62a27690` (`BSD-2-Clause`, https://github.com/cmusphinx/cmudict/blob/74790861f652b15e4ac49015a90074ad62a27690/LICENSE). Source SHA-256: `81917843c7f44ce2b094ac63873c2c7a4cf802040792c455ba3ca406891c3d22`.

Word-frequency source: wordfreq (Robyn Speer) 3.1.1 (https://github.com/rspeer/wordfreq). Its code is MIT; the frequency data used to select common 3–7-letter graph words and choose a display spelling are CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/). Method recorded by the provenance artifact: wordfreq.top_n_list('en', 100000, wordlist='large') supplies the candidate stream; wordfreq.zipf_frequency(..., wordlist='large') filters 3–7-letter words at the recorded graph threshold and selects a display spelling for homophones (alphabetical tie-break).

The sample JSON is deliberately small: it contains the node for CAT, all nodes exactly one phoneme edit away, and only edges within that sample. It is suitable for examples and teaching, not graph-wide analysis.

The two A4 classroom PDFs use the fixed route PULLS → POLLS → POSE → CHOSE → CHOKE. Each consecutive pair is validated against the pinned graph and independently checked as one phoneme edit. The student page asks learners to order the three middle words; the teacher page publishes the complete route, CMU symbols, one-edit explanation, source, licence, release date and graph-universe cutoff. The colour and black-and-white editions contain the same lesson. CMUdict's primary US-English pronunciations are treated as one explicit dataset, not as a correctness test for every accent. The renderer embeds the checked-in Manrope webfont so worksheet bytes do not depend on fonts installed on the build host; Manrope is distributed under the SIL Open Font License 1.1.

Graph-universe cutoff: accepted five-letter CMUdict words plus 3–7-letter CMUdict words in wordfreq (Robyn Speer) 3.1.1's `large` English list at Zipf ≥ 3.2. The fixed route is also checked against `data/blocked_answer_words.txt`; this reduces predictable harm but does not replace a teacher's contextual review.
