How can I run "say --output-file" without it hanging (and worse) with more than 310 bytes of input?

I've tried, but I can't reproduce this problem.

On my machine (also running 10.13.6 17G65):

$ date; time head -c 2000 /usr/share/dict/words | say -o words.aac; date; ls -l words.aac
Sun  7 Oct 2018 21:17:52 BST
real    0m2.630s
user    0m0.519s
sys 0m0.152s
Sun  7 Oct 2018 21:17:55 BST
-rw-r--r--  1 ashley  staff  532880  7 Oct 21:17 words.aac

I'm using /usr/share/dict/words (see /usr/share/dict/README) because I don't have lewis-carroll.txt. I've been unable to make say hang.

Perhaps say is choking on something in lewis-carroll.txt (but only when sending the output to a file, which seems odd)?

Two ideas off the top of my head to work around this, if the above doesn't help...

  1. Send one sentence to say at a time, then recombine the output files.

  2. Or, have say send to the audio output device, but record that with eg Audio Hijack.

(Nicely written question, by the way: lots of relevant detail, concisely presented.)