[Mono-dev] Festival TTS Wrapper

buhochileno at gmail.com buhochileno at gmail.com
Tue Oct 30 12:33:57 EDT 2007

Ok, I agree whith you about the FLite approach, what do you thing about 
MBrola and FestVox? or they have more restricted licences?. I think that 
FreTTS is also a god choice, becouse is java and probably more easy 
traslate to a complete managed TTS engine, and also may be provide 
compatibility with Microsoft's Synthesis API.


R. Tyler Ballance wrote:
> On Oct 29, 2007, at 4:17 PM, buhochileno at gmail.com wrote:
>> Sorry to disapoint you, but my wrapper is not even a "server" call to 
>> the festival TTS, is more cheating :-), is only a wrapper for a C 
>> shared library that send the correct "echo $MESSAGE | festival --tts" 
>> :-) , I also see the posibility to try a more sofisticate wrapper, 
>> but as you say is to much complicate, so this is a working approach :-)
> A novel approach to say the least, but I agree, it's not great, but 
> it's a start :)
>> I attach the C shared library and the C# wraper with a simple test 
>> program.
>> May be we can work in a better wrapper.
> I also agree on this :)
> I think we should consider approaching "managed text-to-speech" from 
> the side of Flite instead of Festival (I think lupus actually 
> suggested this when I was first discussing it on #mono, but I 
> foolishly went ahead with trying for Festival anyways). The one core 
> thing I started to do with my wrapper (from here out referred to as 
> Tao.Festival) was provide support for both a server-oriented Festival 
> interface, i.e. connecting on the Festival's port (1234 I believe) and 
> then performing the commands, or using a C#->C->C++ wrapper I had 
> written to take advantage of libFestival.a which is usually installed 
> on most Linux systems when the Festival package is added. I had not 
> started on the server-oriented code yet, but had the wrappers in place 
> for relying on libFestival which proved to be "a stupid idea" and 
> will/would cause the entire Mono process to SIGSEGV every single time 
> because of some of the intricacies to native platform interop with 
> code that's *so* expectant on being statically linked *always* as 
> Festival is. I can upload the code to my anonymous Subversion 
> repository, but I think it's only worth it from a "research" 
> perspective in seeing why exactly Festival is a bad route to go with :)
> Our end goal is easy to define I think, ideally we would want to 
> provide developers with the following calls:
>     Mono.Speech.SayText("Hello Monkeys!");
>     Mono.Speech.SayText("Hello Monkeys!", FileStream, 
> Mono.Speech.WaveFileType);
> I suggest you look at the following for an idea on why Flite will be 
> far easier:
>     http://www.speech.cs.cmu.edu/flite/doc/flite_7.html#SEC17
> I will try to port my existing design of Tao.Festival over to 
> something more Flite-based this weekend, at the very least to evaluate 
> whether or not Flite will truly be a better option than Festival, and 
> to evaluate whether the concept will *actually* work.
> As much as I would love to be able to provide compatibility with 
> Microsoft's new System.Speech.Synthesis API, I just don't think that's 
> ever going to be possible given the state of open source speech 
> synthesis systems (unless somebody writes a fully managed one on Mono 
> of course :)). So maybe would should just strive for providing 
> something that Gtk# developers can use, specifically in some of the 
> applications Novell includes in their SUSE distribution (how cool 
> would it be for Banshee to tell you what song it's "spinning up" next 
> like a DJ!)
> I'm tremendously busy during the week, but I'll post something this 
> weekend after I'm able to set aside some time to get back to TTS and 
> wrapping crazy interop code around legacy C (Flite's last release was 
> almost 3 and a half years ago).
> Glad to see somebody else is interested though! :)
> Cheers,
> -R. Tyler Ballance
> p.s.  using Apple's Carbon APIs for Speech Synthesis, this 
> hypothetical Mono.Speech API could also work on Mac OS X :-D

More information about the Mono-devel-list mailing list