In base alla risposta di mankoff, funziona:
leave +1 2>&1 | while read line ; do echo $line | say ; done
sebbene non lasci più spazio sullo sfondo e ti permetta di continuare a scrivere. Allo stesso modo:
leave +1 2>&1 | while read line ; do echo $line | say ; done &
lo farà svanire in background, ma parlerà anche un numero ID di processo (innocuo). Quindi nessuno dei due è perfetto, ma entrambi funzionano.
(Stavo cercando una soluzione per:
ping google.com | say
che soffre di un problema simile e qualcuno ha suggerito quanto sopra come soluzione. Non ho aggiunto questo come commento alla risposta di mankoff perché non riesco a capire come inserire spazi e newline nei commenti.)