wiki:FrequentlyAskedQuestions

Version 11 (modified by schroed, 18 years ago) (diff)

added "How to compile" section

Frequently Asked Questions

Can I install additional voices/components after the main installation, or do I have to reinstall everything "from scratch"?

You can run the installer again and select only the new packages that you wish to install. Make sure you specify the same installation directory as before. This should work OK, maybe with the exception of link creation and uninstaller creation.

It would of course be nicer to have an integrated update manager -- see ticket:8. Help is welcome! :-)

What exactly is the license for the software?

The core OpenMary system, as released on this development page, is distributed under a very liberal BSD-style license which basically allows you to do anything you want with the code provided that you acknowledge where you have it from: http://mary.dfki.de/download/MARY%20software%20user%20agreement.html Scientific publications based on MARY are requested to cite the MARY reference paper Schröder & Trouvain (2003).

The German language modules as well as the English part-of-speech tagger is released in binary form, under a research license: http://mary.dfki.de/download/DFKI%20MARY%20software%20user%20agreement.html You must not use this code in a commercial setup unless you obtain a separate license from DFKI, and there are other restrictions. Do read the license agreement carefully when you use the German component.

The MBROLA binaries and voices, finally, are distributed with MARY because that is allowed by the MBROLA license: http://mary.dfki.de/download/Mbrola%20software%20user%20agreement.html These can only be used in a non-commercial, non-military setting.

How difficult is it to add support for Hebrew/Italian/Spanish/Hindi/...? Is Mary modular in that sense?

Mary is very modular, and a number of modules exist in a language-independent and configurable implementation, but there is still enough work left to do.

For many languages, you could start with the existing MBROLA diphone voices: http://tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html

You would then need at least the following MARY TTS modules:

  • optional: a text normalisation which expands numbers, abbreviations etc. into a pronounceable form (but that can be left out at the beginning)
  • optional: a part-of-speech tagger, distinguishing at least between content words and function words
  • crucially needed: a phonemiser, converting the input text into sound symbols, e.g. in SAMPA. This can be based on rules for some languages (probably, Spanish), but a pronounciation lexicon is required for others when the link between spelling and pronounciation is less regular. Then, also, the lexicon must be complemented with "letter-to-sound" rules for unknown words.
  • optional: a prosody assignment module, predicting e.g. ToBI labels based on part-of-speech and other information.

source:trunk/java/de/dfki/lt/mary/modules/ProsodyGeneric.java, written by my student Stephanie Becker, may be a good place to start.

could be used, of course adapted to the language-specific phoneme set.

  • needed: synthesis, e.g. using MBROLA voices.

So, in summary, for adding a new language, you most crucially need a phonemiser, and you need to get at least a tokeniser and a duration assigner to work. Assuming that there is already an acceptable MBROLA voice for your language.

On the bright side, as data representation is based on Unicode, there should be no problem with non-European scripts.

Unfortunately, I'm just a C++ programmer and have no experience with Java. I have made some changes in the Mary source code -- how I can compile and test my changes?

make sure you have a recent (>= 1.4) Java SDK installed (try "javac -version" on the command line). If you don't have it, get it from http://java.sun.com. You also need the tool "ant", which you can get from http://ant.apache.org.

Assuming both is installed correctly, you can simply go to the MARY install directory, and type:

	ant

This should read the file build.xml in the current directory (as a C++ developer, think of it as a Makefile), and execute the default target, which in this case is "jars". The system will compile all the .java source files into .class files and package them into mary*.jar files in the java/ subdirectory. If no errors occur, you should be able to restart the server and your modified code should be taken into account. If in doubt, add some

	System.out.println("Hello world");

or

	logger.info("Hello world");

statements into your code.

If you do more than just a few minor edits, I highly recommend using an integrated development environment like the open source Java IDEs Eclipse or NetBeans. Eclipse project specification files are included with the OpenMary source package.