I've never seen that code, but...
About how not to read the code itself, I supose the key would be changing the Story.get(passage()).text part for something that differentiates between readable and non-readable elements. Maybe adding a class="readable" tag to every text you want to read and using some function in that Story.get() to recover those tagged elements? (Sorry, I'm not sure right now how to do it, but I think I would do it like that)
And about how to toggle it on and off, I supose you could enclose synth.speak(utterThis) in an if code that checks if the player has selected it on the game Settings. But sorry again, I don't know how to use the Setting API (I'm sure you can do it, I think I've seen something similar done somewhere).