'say' has both -o and -n arguments for various ways to direct the output, but I don't see any way to simply pipe the output to another command (say, sox). Is this a limitation of say, or is there a basic Unix shell feature that will do this?
It seems impossible. It should have been possible to use
-o /dev/stdout for this, but
say insists on adding a file suffix, which rather ruins that option. I tried getting around that by creating a symlink to
/dev/stdout, but it gives a permission error. (Perhaps this comes from
say opening the output file for both reading and writing (option
O_RDWR) instead of just writing.)