render(
events,voice,opts) ->buf,info/err
Render phoneme events into a mono 16 kHz sample buffer
With opts.yield_every = N, the render calls
coroutine.yield(done_fraction) every N parameter frames. speech.say_job
uses it to slice a long render. The render state lives in locals, so a
sliced render gives the same bytes as a whole one.