Magari non e' /dev/audio il dispositivo.. magari e' /dev/sound, /dev/snd, /dev/nomedriverscheda. O forse c'e' qualche altro gruppo importante (alsa, etc)
Comunque, e' sicuramente un problema di permessi o di festival, non di php, dal momento che con php-cli ti funziona. Forse festival si aspetta solo output da tty vero, o boh.
Io farei questo debug: assegnerei una shell vera all'utente www-data (di solito e' /bin/false, /sbin/nologin o roba simile). Poi farei un "su www-data", e proverei ad eseguire tutto dalla riga di commando. In questo modo capisci se e' un problema di permessi o no, perche' praticamente esegui tutto con i privileggi dell'utente di apache. E leggi anche il manuale di festival, magari ha delle opzioni per essere verboso, o qualche modalita' di debug, cosi capisci cos'e' che non gli piace.
ps: ovviamente poi bisogna rimettere la shell falsa all'apache, per questioni di sicurezza