Good news about MBROLA!

  • panda

    panda - 2005-01-27

    MBROLA Team distributed their new dos version at last year. Although it is still named, it contains a new MBROLA.exe compiled in last June. The new version can work with FreeTTS under windows now! However, the program should be renamed to "mbrola" in order to be invoked in FreeTTS.

    • Willie Walker

      Willie Walker - 2005-01-27

      Woo woo!  Congratulations!  I'll update the docs for the next release of FreeTTS.

      Thanks for checking this out,


    • Bert Szoghy

      Bert Szoghy - 2005-01-28


      Yes, the news is mentioned on the MBROLA site:

      "Mbrola-dos debugged and recompiled for FreeTTS, thanks to Jianmin Li"

      Dr. Li, could you please explain why the PC-DOS executable should be renamed from "MBROLA.exe" to "MBROLA"?

      In, in the line:
      process = Runtime.getRuntime().exec(cmd);

      the cmd parameter will be a full dos command concatenation. It seems to me on the Windows platform doing this would make it fail to execute?

      Best regards,
      Bert Szoghy

    • panda

      panda - 2005-01-29

      At first, I believed that to run mbrola with freetts under windows, getMbrolaBinary() in must be revised to include ".exe" in the binany name. And I did so in my project. However, I found the above solution occasionally yesterday. With the code attached here, I find something very interesting.

      Firstly, rename an executable program (e.g. mbrola.exe) to remove its extension, i.e. "mbrola" in this case. Then "mbrola" under DOS prompt returns an error. And "java run mbrola" will return the following exception: CreateProcess: mbrola error=2
              at java.lang.Win32Process.create(Native Method)
              at java.lang.Win32Process.<init>(Unknown Source)
              at java.lang.Runtime.execInternal(Native Method)
              at java.lang.Runtime.exec(Unknown Source)
              at java.lang.Runtime.exec(Unknown Source)
              at java.lang.Runtime.exec(Unknown Source)
              at java.lang.Runtime.exec(Unknown Source)
              at run.main(

      However, if an absolute or relative path (even ".\&quot;) is included, "java run [path]mbrola" will be executed correctly.

      After reading the document of msdn, I find that it is a feature of the windows api, CreateProcess(). Visit  for details. And according to the document, "java run [path]mbrola" is also ok. It is true.


      public class run {
              public static void main(String[] args) {
                      if (args.length == 0)
                              System.out.println("Usage: java run application parameters");
                      else {
                  try {
                      Process process = Runtime.getRuntime().exec(args);
                                  byte[] buf = new byte[1024];
                                  BufferedInputStream fromProcess
                                       = new BufferedInputStream(process.getInputStream());
                              int nread = 0;
                              while ((nread = != -1) {
                                  System.out.write(buf, 0, nread);
                  } catch (Exception e) {

      • panda

        panda - 2005-01-29

        I am sorry that I made a mistake just now. The last way should be "java run [path]mbrola." instead of "java run [path]mbrola".
        By the way, why is the indention in my code lost?

        Jianmin Li

    • Bert Szoghy

      Bert Szoghy - 2005-01-29


      I confirm that using Dr.Li's code for (above), using the following command line on Win 2000 will produce a WAV file that works fine:

      C:\mbrola>"C:\Program Files\Java\jdk1.5.0_01\bin\java.exe" run mbrola C:\mbrola\us1\us1 C:\mbrola\us1\TEST\alice.pho hello.wav

      I should mention that to get this far, you need 3 downloads:

      1) the Windows setup program mbrolatools311.exe which installs the 3 DLLs into the Windows system directory

      2) A voice database

      3) the PC-DOS Mbrola binary which contains the updated exe

      And yes, the database file is the one with the same name as its parent directory and without any filename extension.

      Will check this out. Thanks!


      • panda

        panda - 2005-01-29

        Hello Bert,

        1. About the command line in your message, C:\mbrola>"C:\Program Files\Java\jdk1.5.0_01\bin\java.exe" run mbrola C:\mbrola\us1\us1 C:\mbrola\us1\TEST\alice.pho hello.wav
          Is the executable module named mbrola or mbrola.exe? If it is named with extension, then it works as usual. However, if it is named without extension, it will not work, at least on my machine with win xp and java 1.4.2_04. On my platform, to get correct output, the following commands should be used:

        java run mbrola.
        java run .\mbrola
        java run C:\mbrola\mbrola

        2. I believe that the 3 dlls from mbrolatools311.exe are not necessary. In my opinion, the function of mbrola.dll and mbrola.exe are almost the same. And the other 2 dlls are the interface to make mbrola.dll to be used easily. In my initial solution, my code deals with the command line parameters, and then makes use of mbrola.dll to simulate mbrola.exe. But with the new version of mbrola.exe, mbrola.dll is in no use. In fact, if the mbrola.dll is used, there will be a dialog showing something like copyright when it is invoked at the first time.

        Jianmin Li

    • Bert Szoghy

      Bert Szoghy - 2005-01-31


      It's a simple test:
      First I renamed the following files in theWINNT\system32 directory: mbrola.dll, mbrplay.dll and tctsaudio.dll

      Next I ran the command again, and get the same successful result. And yes, my executable is "mbrola.exe".

      So you are correct Sir, the DLLs look like they are not necessary at all for what we need.

      Best regards,

    • Kemal Altintas

      Kemal Altintas - 2005-02-18


      I tried to integrate mbrola into and it fails. Mbrola works fine by itself. I copied Dr.Li's code ( and tried it and it works too. But when I try to run helloworld with mbrola it give the following error message:

      java -Dmbrola.base=./mbrola -jar bin/FreeTTSHelloWorld.jar mbrola_us2

      All voices available:
          alan (time domain)
          kevin (general domain)
          kevin16 (general domain)
          mbrola_us2 (general domain)

      Using voice: mbrola_us2
      Processing Utterance: com.sun.speech.freetts.ProcessException: Cannot start mbro
      la program: [Ljava.lang.String;@16f8cd0
      Processing Utterance: com.sun.speech.freetts.ProcessException: Cannot start mbro
      la program: [Ljava.lang.String;@16f8cd0

      It does not even exit. It gets stuck there. I tried it with mbrola.exe and mbrola (without the exe extension). They both did not work. Then I copied the file both with the exe extension and without the extension so that both files will be in the mbrola directory. Still did not work. I am runnning Win XP and using the newer version of mbrola (63 kb).

      Any help will be appreciated.

      Thank you very muhc,

    • Kemal Altintas

      Kemal Altintas - 2005-02-18

      Hi again,

      I just tried realized that 63 kb file is the older one and the 88kb one is the new one. Now it works with the 88 kb mbrola.exe file compiled in June 2004. I just copied the file and removed the exe extension. It works :)

      My mistake. Sorry,

    • Bert Szoghy

      Bert Szoghy - 2005-02-22


      I've assembled a working demo of this Hello World program running FreeTTS with an MBROLA text-to-speech voice on Windows.

      It comes complete with everything you need as well as an ANT build file which you can swipe to do your own variations at:

      The MBROLA bug fix was found by Dr. Jianmin Li.
      Thanks to Kemal Altintas for the correct DOS command.
      Special thanks to Dirk Schnelle for help with the ANT build.xml. Please visit Dirk's JVoiceXML
      project at

      Bert Szoghy

    • Luca Santaniello


      I want install italian language for freeTTS, how can i do?

      Thanks and sorry for my english


      • Dirk Schnelle-Walka

        Do you mean an italian voice of MBROLA?


  • mihir pandya

    mihir pandya - 2010-12-07

    with the source code Jianmin Li  provided us.
    Are we limited to using us1,us2,us3 voices only?
    or as i see it, it is mbrola is used as command line to generate a wave file then we can use any voice database?

    Thanks and Regards,
    Mihir Pandya

  • Emaraude Shi

    Emaraude Shi - 2012-11-02

    This one is another good news and we should try using it. Thanks for sharing the updates, this is really an important topic. - Arthur van der Vant


Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks