How to make "say" command speak AND output to the file at the same time
In one command with the built-in say command, no; in two built-in commands (say and afplay), yes:

$ say -o /tmp/output-file.aiff Hello
$ afplay /tmp/output-file.aiff


In my example, this introduces a very small delay:

$ time sh -c "say Hello" 

real    0m0.778s
user    0m0.008s
sys 0m0.012s

$ time sh -c "say -o /tmp/output-file.aiff Hello &amp;&amp; afplay /tmp/output-file.aiff"

real    0m1.048s
user    0m0.050s
sys 0m0.048s