|
From: Jonathan D. <jo...@ta...> - 2010-06-28 16:09:28
|
Mbrola on linux is only available as a command-line program, not a shared library. So eSpeak produces mbrola phoneme information as text which can then be piped into mbrola. Nicolas Pitre (author of the Cicero front end for the mbrola French voice) has now written code for eSpeak which emulates the mbrola library on Windows. This means that the command-line version of eSpeak and the Linux libespeak can now call mbrola directly. espeak -v mb-en1 "Hello world" will now speak using the mbrola "en1" voice. Previously this needed something like: espeak -v mb-en1 "Hello world" | mbrola -e /usr/share/mbrola/en1 - - | aplay -r 16000 -f S16_LE eSpeak can still generate mbrola phoneme output as text (mbrola .pho file) by using the new --pho command-line option, eg: espeak -v mb-en1 --pho "Hello world" On Linux, eSpeak will look for mbrola voices firstly in espeak-data/mbrola and then in /usr/share/mbrola. On Windows it looks only in espeak-data/mbrola. A complication is that most mbrola voices have a sample rate of 16000 Hz instead of the eSpeak rate of 22050 Hz. Speaking text which contains SSML commands which change between eSpeak and mbrola voices or between voices of different sample rates doesn't work. In theory it may be possible to stop the sound output channel and re-initialise it at a different sample rate, but my initial attempt with portaudio failed. |