POEvoiceServer - POE version of the voiceServer ---------------------------------------------- Brian Rudy February 24th, 2004 About ----- The voiceServer is part of the voice and face system used on Zaza, a mobile robot at the Tech Museum of Innovation ( http://www.thetech.org/robots/zaza ). While not originally intended for alternative uses, I have received quite a few requests about Zaza's voice system and hope that someone may find it useful. The voiceServer processes input cues submitted by the voiceClient CGI through a shared memory 'inbox'. The voiceServer checks the cue against a list of pre-rendered cues currently cached on disk, identified by a CRC32 of the string. If the cue has not been rendered, it sends the request to a local or remote Festival server. Both the waveform and phoneme timing info are extracted from the processed utterance returned by the Festival server and saved locally for future requests. A timestamp, CRC32 of the string and the requested emotion are pushed onto the shared memory 'outbox' stack for use by an external server application (such as POEfaceClient) that manages remote talking head clients (such as zazaface2). Requirements ------------ -Apache 1.3.x or 2.0.x -Perl 5.6.x or 5.8.x -This version has only been tested on Linux machines, it may work on others but YMMV POEvoiceServer Installation --------------------------- 1) Install the String::CRC32 Perl module 2) Install the IPC::Shareable Perl module 3) Install the Audio::Wav Perl module 4) Install the POE framework 5) Install Festival 6) Install the Festival::Client::Async Perl module 7) Install the POE::Component::Festival POE module 8) Patch POE::Component::Festival 0.03's Festival.pm with PoCoFestival-0.03.patch 9) Create a directory for the cue cache. This needs to be writable by the user POEvoiceServer is run as, mapped to a location visible to the local Apache web server and world-readable. Update $speech_data_dir to point to this directory. 10) Start festival_server in a console 11) Start POEvoiceServer in another console 12) A request for the cue 'voice server initialized' should be processed, and if you have AUDIODEBUG set and ESD running you should hear the result after the cue is finished processing. 13) Provided that all the above installed properly, you should be ready to go...