Now, in FlightGear, enable ATC (in the menu under "ATC"->"Options"), press the '-key (apostrophe key) and send a message to the ATC. Hear "your" voice, that of the ATC, and some time later that of AI-planes.$ festival --server & $ fgfs --aircraft=j3cub --airport=KSQL --prop:/sim/sound/voices/enabled=true
$ festival festival> (SayText "FlightGear") festival> (quit)
$ mbrola -h
$ festival festival> (print (mapcar (lambda (pair) (car pair)) voice-locations)) (kal_diphone rab_diphone don_diphone us1_mbrola us2_mbrola us3_mbrola en1_mbrola) nil festival> (voice_us3_mbrola) festival> (SayText "I've got a nice voice.") festival> (quit)
$ festival --server
Of course, you can put this option into your personal configuration file. This doesn't mean that you then always have to use FlightGear together with Festival. You'll just get a few error messages in the terminal window, but that's it. Note that you can currently not enable the voice subsystem at runtime!$ fgfs --aircraft=j3cub --airport=KSQL --prop:/sim/sound/voices/enabled=true
The <enabled> property decides at init time whether the subsystem should be activated or not. There's currently no way to change this at runtime. Each <voice> group defines one channel. <text> is the output property. Every value that's written to it will be spoken by this channel. If <festival> is true, then the channel will set up <pitch> and <speed> (<volume> does currently not work and has to be 1), and puts Festival markup around the text. If <festival> is false, then all text is written verbatim to the socket. <preamble> is always written to the socket once as last step of the socket creation. In "festival" mode it's used to set the voice, while in raw mode it could be used to identify the channel (assuming that the server knows what to do with it).<sim> <voices> <host type="string">localhost</host> <port type="string">1314</port> <enabled type="bool">false</enabled> <voice> <desc>Pilot</desc> <text type="string"></text> <volume type="double">1.0</volume> <pitch type="double">100.0</pitch> <speed type="double">1.0</speed> <preamble type="string">(voice_us3_mbrola)</preamble> <festival type="bool">true</festival> </voice> <voice> ... </voice> <!-- handy aliases, not part of the interface: --> <atc alias="/sim/sound/voices/voice[0]/text"/> <approach alias="/sim/sound/voices/voice[0]/text"/> <ground alias="/sim/sound/voices/voice[0]/text"/> <pilot alias="/sim/sound/voices/voice[1]/text"/> <copilot alias="/sim/sound/voices/voice[2]/text"/> <ai-plane alias="/sim/sound/voices/voice[3]/text"/> </voices> </sim>