Uma nota sobre a solução geral: para muitos programas que requerem um nome de arquivo você pode dar o caminho /dev/stdout (um link para /proc/self/fd/1 , assumindo que os arquivos existam) e eles irão enviar sua saída para stdout . Também é possível usar a substituição de processo em bash com cat , ou seja, foo -f >(cat) args | bar (obrigado, g-man ).
Como pico2wave verifica a extensão do arquivo, uma solução possível é fazer o symlink /dev/stdout de um caminho com a extensão apropriada, idealmente em algum lugar como /var/local/ . Isso cria um arquivo extra, mas não por processo:
ln -s /dev/stdout /var/local/pico2wave.wav , então pico2wave -w /var/local/pico2wave.wav "test" | aplay funciona.