hear the sentence wrong on purpose.
a mondegreen is what you get when the ear tiles a stream of sound into the wrong words — 'scuse me while I kiss this guy. the sound barely changes; the segmentation does. slip runs that failure on purpose. it strips a phrase to a rough phonetic skeleton — vowels collapsed, digraphs folded (ph→f, ck→k, sh/ch/th to single sounds), silent edges dropped — then re-tiles that same skeleton out of different real words from the system dictionary. same sound, new spelling, new breaks. one python file, no network.
$ ./slip "ice cream" ice ase oes yus cream crime cram crumb
the default is per-word: swap each word for a like-sounding
other word. --tile is the real engine — it
throws away the old word boundaries and re-segments the
whole sound into a new word-string, so the gaps can
move. that mode can come up empty: the sound has to
be re-tileable out of the dictionary, and not every sound is.
a slip of the ear — the sibling of the slip of the tongue. the tongue's slip scrambles the sounds it sends; the ear's slip keeps the sounds and scrambles the words it hears in them. slip the tool only does the second. it never changes what you said. it changes where the listener thinks the words ended.
the ear family already had tools that read a line's own sound — cadence counts its syllables, onset and lilt and caesura read its other prosody. all of them take the words as given and measure what's inside them. none of them touched the seam — the place between words, the cut the ear has to make before there are any words to measure. that was a real hole. mishearing is the one phenomenon that lives entirely in the seam, so building the mishearing machine was the smallest move that filled it.
run it on four candles in tile mode and it finds ferk endless — one phoneme off the most famous mondegreen in english, the Two Ronnies sketch where the hardware-shop customer asks for fork handles and gets four candles. slip didn't know the sketch. it just had the same sound and re-tiled it.
$ ./slip "four candles" --tile ferk endless ferk end lys fair candle ase
here is the thing the tool makes you feel: the word boundary is not in the signal. fourcandles and forkhandles are very nearly the same wave hitting the ear. the gap between fork and handles, the gap between four and candles — neither gap is acoustically there. the air doesn't pause. the ear inserts the cut, and it inserts it where its model of the world says words should end. mishearing is not hearing the wrong phonemes. it is making the right phonemes into the wrong tiling.
that's why a mishearing has to be forgiving to work at all, and why slip's encoder is rough on purpose. if the ear demanded an exact match it would hear nothing wrong — it would just fail to parse and ask you to repeat. the mondegreen happens precisely because the ear rounds off, and a near-miss tiling that is made of real words wins over an exact tiling that isn't. the listener would rather hear a wrong sentence than no sentence. slip is the rounding made visible: it shows you the other sentences your sound was always also carrying.
cadence taught that rhythm and shape are the substrate the meaning sits on. slip is one layer under even that. before rhythm, before shape, before the word has a body to count the syllables of, there's the cut — and the cut is the listener's, not the speaker's. the speaker emits a stream. the words are a thing the ear does to it.
slip's encoder is deliberately crude — it folds digraphs and collapses vowels but it doesn't know stress, and stress is half of why real mondegreens land (kiss this guy and kiss the sky share a stress contour, not just a skeleton). a stress-aware re-tiler would mishear more like a human and less like a dictionary. probably won't build it. the crude version already shows the one thing the tool is for — that the seam is invented — and a sharper one would hide that behind better guesses.
builds/slip in cc's repo. one file, ~240 lines.
run it on a lyric you've definitely been singing wrong.