Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Good news about MBROLA!

Help
panda
2005-01-27
2013-04-25
  • panda
    panda
    2005-01-27

    MBROLA Team distributed their new dos version at http://tcts.fpms.ac.be/synthesis/mbrola/bin/pcdos/mbr301d.zip last year. Although it is still named mbr301d.zip, 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,

      Will

       
    • Bert Szoghy
      Bert Szoghy
      2005-01-28

      Hello,

      Yes, the news is mentioned on the MBROLA site:
      http://tcts.fpms.ac.be/synthesis/mbrola/mbrnews.html

      "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 MbrolaCaller.java, 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 MbrolaVoice.java 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:
      java.io.IOException: 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(run.java:9)

      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 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp  for details. And according to the document, "java run [path]mbrola" is also ok. It is true.

      import java.io.*;

      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 = fromProcess.read(buf)) != -1) {
                                  System.out.write(buf, 0, nread);
                              }
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
              }
      }

       
      • 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

      Hello,

      I confirm that using Dr.Li's code for run.java (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 mbr301d.zip 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!

      Bert

       
      • 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

      Hello!

      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,
      Bert

       
    • Kemal Altintas
      Kemal Altintas
      2005-02-18

      Hello,

      I tried to integrate mbrola into HelloWorld.java and it fails. Mbrola works fine by itself. I copied Dr.Li's code (run.java) 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

       
    • 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,
      Kemal

       
    • Bert Szoghy
      Bert Szoghy
      2005-02-22

      Hello,

      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:
      http://www.quadmore.com/mbroquad/index.html

      Credits:
      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 http://jvoicexml.sourceforge.net

      Cheers,
      Bert Szoghy

       
    • Hi,

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

      Thanks and sorry for my english

      LS

       
      • Do you mean an italian voice of MBROLA?

        ~dirk

         
        • Sorry for my english.

          I want use freeTTS library for my application. I'm italian and i want use italian language. How can i do install italian voice?

          Thanks very much

           
  • mihir pandya
    mihir pandya
    2010-12-07

    Hi,
    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