Giter Site home page Giter Site logo

marytts / marytts Goto Github PK

View Code? Open in Web Editor NEW
2.3K 135.0 732.0 146.24 MB

MARY TTS -- an open-source, multilingual text-to-speech synthesis system written in pure java

Home Page: https://marytts.github.io/

License: Other

TeX 0.06% Shell 0.01% Java 97.50% HTML 0.28% XSLT 1.13% JavaScript 0.37% Batchfile 0.01% Groovy 0.60% Raku 0.06%
speech-synthesis tts java text-to-speech

marytts's Introduction

CI

MaryTTS

This is the source code repository for the multilingual open-source MARY text-to-speech platform (MaryTTS). MaryTTS is a client-server system written in pure Java, so it runs on many platforms.

For a downloadable package ready for use, see the releases page.

Older documentation can also be found at https://github.com/marytts/marytts-wiki, http://mary.dfki.de and https://mary.opendfki.de.

This README is part of the the MaryTTS source code repository. It contains information about compiling and developing the MaryTTS sources.

The code comes under the Lesser General Public License LGPL version 3 -- see LICENSE.md for details.

Running MaryTTS

Run ./gradlew run (or gradlew.bat run on Windows) to start a MaryTTS server. Then access it at http://localhost:59125 using your web browser.

If you want to start a MaryTTS on a different address and port, you can use the following options:

./gradlew run -Dsocket.port=5920 -Dsocket.addr=0.0.0.0 --info

where 5920 is the new port and 0.0.0.0 the new address. In case of the address being 0.0.0.0, all the interfaces will be listened.

By using the option --info, you set the logger of gradle AND MaryTTS at the level INFO. By using --debug, you set the level to DEBUG.

It is also possible to set the MaryTTS logger level to INFO or DEBUG by defining the system variable log4j.logger.marytts.

Downloading and installing voices

Run ./gradlew runInstallerGui to start an installer GUI to download and install more voices. A running MaryTTS server needs to be restarted before the new voices can be used.

Building MaryTTS

Run ./gradlew build. This will compile and test all modules, and create the output for each under build/.

Note that previously, MaryTTS v5.x was built with Maven. Please refer to the 5.x branch.

Packaging MaryTTS

Run ./gradlew distZip or ./gradlew distTar to build a distribution package under build/distributions. You can also "install" an unpacked distribution directly into build/install by running ./gradlew installDist.

The distribution contains all the files required to run a standalone MaryTTS server instance, or to download and install more voices. The scripts to run the server or installer GUI can be found inside the distribution in the bin/ directory.

Using MaryTTS in your own Java projects

The easiest way to use MaryTTS in your own Java projects is to declare a dependency on a relevant MaryTTS artifact, such as the default US English HSMM voice:

Maven

Add to your pom.xml:

<repositories>
  <repository>
    <url>https://mlt.jfrog.io/artifactory/mlt-mvn-releases-local</url>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>de.dfki.mary</groupId>
    <artifactId>voice-cmu-slt-hsmm</artifactId>
    <version>5.2.1</version>
    <exclusions>
      <exclusion>
        <groupId>com.twmacinta</groupId>
        <artifactId>fast-md5</artifactId>
      </exclusion>
      <exclusion>
         <groupId>gov.nist.math</groupId>
         <artifactId>Jampack</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
</dependencies>

Gradle

Add to your build.gradle:

repositories {
   mavenCentral()

   exclusiveContent {
      forRepository {
         maven {
            url 'https://mlt.jfrog.io/artifactory/mlt-mvn-releases-local'
         }
      }
      filter {
         includeGroup 'de.dfki.lt.jtok'
      }
   }
}

dependencies {
   implementation group: 'de.dfki.mary', name: 'voice-cmu-slt-hsmm', version: '5.2.1', {
      exclude group: 'com.twmacinta', module: 'fast-md5'
      exclude group: 'gov.nist.math', module: 'Jampack'
   }
}

Synthesizing speech

Text to wav basic examples are proposed in this repository

Using MaryTTS for other programming languages

If you want to use MaryTTS for other programming languages (like python for example), you need to achieve 3 steps

  1. compiling marytts
  2. starting the server
  3. query synthesis on the server

Synthesize speech using the server

Synthesizing speech, using the server, is pretty easy. You need to generate proper HTTP queries and deal with the associated HTTP responses. Examples are proposed :

Extra documentation

Server as service (Linux specific)

An example of how to define marytts server as service is proposed here.

User dictionaries

You can extend the dictionaries by adding a user dictionary. The documentation of how to do it is here.

Contributing

The recommended workflow for making contributions to the MaryTTS source code is to follow the GitHub model:

  1. fork the MaryTTS repository into your own profile on GitHub, by navigating to https://github.com/marytts/marytts and clicking "fork" (of course you need a GitHub account);

  2. use the git clone, commit, and push commands to make modifications on your own marytts repository; in this process, make sure to git pull upstream master regularly to stay in sync with latest developments on the master repo;

  3. when you think a reusable contribution is ready, open a "pull request" on GitHub to allow for easy merging into the master repository.

Have a look at the GitHub documentation for further details.

IDE configuration

Wiki pages are available to help you to configure your IDE to develop MaryTTS. The following IDEs have been tested and documented:

marytts's People

Contributors

aitorme avatar alishah-ahmed avatar dargmuesli avatar entenbein avatar fhennig avatar ftesser avatar giuliopaci avatar gsommavilla avatar haraldberthelsen avatar insa-k avatar jcrumpton avatar kilida avatar kubikrubikvkube avatar kwatters avatar marc1s avatar marcelach1 avatar moitreebasu1990 avatar munzey avatar murtraja avatar petergilles avatar psibre avatar qwertologe avatar rootex avatar sathishpc avatar schnelle avatar seblemaguer avatar timobaumann avatar wholder avatar x3a avatar yuripourre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

marytts's Issues

SABLE BREAK MSEC attribute being ignored

Hi,
The MSEC attribute of the BREAK element in SABLE is being ignored by MARY.
Could you kindly confirm if this attribute does not work wit MARY.
Regards
Saurav

Request for minimal HMM based synthesis

Requesting for minimal HMM only speech synthesis (ideally with English/Russian) languages without any unnecessary dependencies. Only just one simple embeddable package without web-server/web-client and other packages.

Or can you give some advice to do it by yourself, I tryed to do that, but with no success. As I understand all core functionality is in marytts-runtime and all I need is in this package? Please, need help.

Fail on training LTS

I met the following exception when try to training for Vietnamese language. Thanks in advanced for answer this issue.

java.lang.RuntimeException: couldn't train decisiontree using weka:
at marytts.tools.newlanguage.LTSTrainer.trainTree(LTSTrainer.java:240)
at marytts.tools.transcription.TranscriptionTable.trainLTS(TranscriptionTable.java:175)
at marytts.tools.transcription.TranscriptionTable.saveTranscription(TranscriptionTable.java:259)
at marytts.tools.transcription.TranscriptionGUI.saveToFileActionPerformed(TranscriptionGUI.java:598)
at marytts.tools.transcription.TranscriptionGUI.access$11(TranscriptionGUI.java:592)
at marytts.tools.transcription.TranscriptionGUI$11.actionPerformed(TranscriptionGUI.java:453)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
at javax.swing.AbstractButton.doClick(AbstractButton.java:337)
at javax.swing.plaf.basic.BasicMenuItemUI$Actions.actionPerformed(BasicMenuItemUI.java:778)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1645)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:670)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:678)
at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:678)
at javax.swing.JMenuBar.processKeyBinding(JMenuBar.java:649)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:254)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2928)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2920)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at javax.swing.JComboBox.processKeyEvent(JComboBox.java:1397)
at java.awt.Component.processEvent(Component.java:6152)
at java.awt.Container.processEvent(Container.java:2083)
at java.awt.Component.dispatchEventImpl(Component.java:4737)
at java.awt.Container.dispatchEventImpl(Container.java:2141)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1836)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4609)
at java.awt.Container.dispatchEventImpl(Container.java:2141)
at java.awt.Window.dispatchEventImpl(Window.java:2482)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:643)
at java.awt.EventQueue$1.run(EventQueue.java:641)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:657)
at java.awt.EventQueue$2.run(EventQueue.java:655)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:654)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: weka.core.UnsupportedAttributeTypeException: weka.classifiers.trees.j48.C45PruneableClassifierTreeWithUnary: Cannot handle multi-valued nominal class!
at weka.core.Capabilities.test(Capabilities.java:940)
at weka.core.Capabilities.test(Capabilities.java:1109)
at weka.core.Capabilities.test(Capabilities.java:1022)
at weka.core.Capabilities.testWithFail(Capabilities.java:1301)
at weka.classifiers.trees.j48.C45PruneableClassifierTree.buildClassifier(C45PruneableClassifierTree.java:120)
at marytts.tools.newlanguage.LTSTrainer.trainTree(LTSTrainer.java:233)
... 56 more

Error in transcription.sh

In Transcription Tool after loading the correct allophones set and the lexicon file using TrainPredict I got this error in LTSTrainer.trainTree:


prev: Serif
next: Serif
training ...
iteration 0
iteration 1
iteration 2
iteration 3
iteration 4
training completed.
java.lang.RuntimeException: couldn't train decisiontree using weka: weka.core.UnsupportedAttributeTypeException: weka.classifiers.trees.j48.C45PruneableClassifierTree: Cannot handle unary class!
at marytts.tools.newlanguage.LTSTrainer.trainTree(LTSTrainer.java:231)
at marytts.tools.transcription.TranscriptionTable.trainLTS(TranscriptionTable.java:174)
at marytts.tools.transcription.TranscriptionTable.trainPredict(TranscriptionTable.java:199)
at marytts.tools.transcription.TranscriptionGUI.trainPredictActionPerformed(TranscriptionGUI.java:795)
at marytts.tools.transcription.TranscriptionGUI.access$8(TranscriptionGUI.java:789)
at marytts.tools.transcription.TranscriptionGUI$8.actionPerformed(TranscriptionGUI.java:362)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6268)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6033)
at java.awt.Container.processEvent(Container.java:2045)
at java.awt.Component.dispatchEventImpl(Component.java:4629)
at java.awt.Container.dispatchEventImpl(Container.java:2103)
at java.awt.Component.dispatchEvent(Component.java:4455)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4297)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
at java.awt.Container.dispatchEventImpl(Container.java:2089)
at java.awt.Window.dispatchEventImpl(Window.java:2517)
at java.awt.Component.dispatchEvent(Component.java:4455)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)
at java.awt.EventQueue.access$000(EventQueue.java:96)
at java.awt.EventQueue$1.run(EventQueue.java:608)
at java.awt.EventQueue$1.run(EventQueue.java:606)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)
at java.awt.EventQueue$2.run(EventQueue.java:622)
at java.awt.EventQueue$2.run(EventQueue.java:620)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)


Using the 4-x version whit the same data, I have not problems.

Discrepancy between modules names/folder name and artifact id for assembly-builder and assembly-runtime

The maven modules assembly-builder and assembly-runtime reside on marytts-assembly/assembly-builder/ and marytts-assembly/assembly-runtime/, but the relative artifact ID are marytts-assembly-builder and marytts-assembly-runtime.

This discrepancy has the effect that when the import of the project on eclipse has realized as described in the readme, the names of the folders are changed automatically.

Changing the artifact ID name should fix the problem.

MARYserver

Sir,
I wish to make changes to the html files which are opened when browsing http://localhost:59125 to make it more user interactive. But, I am unable to find where these files are located. Please help me with that.
Thanks,
Arpit

SSML time attribute for break element not working wit MARY

Improving the quality of Labeling

Hi,

I want to improve the quality of automatic labeling (MaryTTS uses eHMM). Could anybody tell me how to do that with some manual labeled database?

Thank you so much.

marytts-runtime fails integration test

Maybe it's just me, but when all dependencies are installed, I think that this should work. However:

marytts-runtime steiner$ mvn integration-test 
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building marytts-runtime 5.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ marytts-runtime ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 13 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ marytts-runtime ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ marytts-runtime ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ marytts-runtime ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.8:test (default-test) @ marytts-runtime ---
[INFO] Surefire report directory: /Users/steiner/projects/workspace/marytts/marytts-runtime/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running marytts.config.MainConfigTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.058 sec
Running marytts.config.MaryConfigTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec
Running marytts.datatypes.MaryDataTest
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.238 sec
Running marytts.signalproc.effects.AudioEffectsTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec
Running marytts.tests.junit4.EnvironmentTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.021 sec
Running marytts.util.dom.MaryDomUtilsTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.123 sec
Running marytts.util.FeatureUtilsTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 sec
Running marytts.util.MaryCacheTest
INFO  Logger: open start
0 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - open start
INFO  Logger: open end
21 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - open end
INFO  Logger: DataFileCache.close(true) : start
78 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close(true) : start
INFO  Logger: DataFileCache.close() : save data
80 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close() : save data
INFO  Logger: DataFileCache.close() : flags
80 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close() : flags
INFO  Logger: DataFileCache.close() : seek end
80 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close() : seek end
INFO  Logger: DataFileCache.close() : close
82 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close() : close
INFO  Logger: Database closed
84 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - Database closed
INFO  Logger: open start
251 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - open start
INFO  Logger: open end
251 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - open end
INFO  Logger: DataFileCache.close(true) : start
278 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close(true) : start
INFO  Logger: DataFileCache.close() : save data
278 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close() : save data
INFO  Logger: DataFileCache.close() : close
278 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close() : close
INFO  Logger: Database closed
281 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - Database closed
INFO  Logger: open start
411 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - open start
INFO  Logger: open end
413 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - open end
INFO  Logger: DataFileCache.close(true) : start
421 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close(true) : start
INFO  Logger: DataFileCache.close() : save data
421 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close() : save data
INFO  Logger: DataFileCache.close() : close
421 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - DataFileCache.close() : close
INFO  Logger: Database closed
423 [main] INFO HSQLDB35C386D488.org.hsqldb.persist.Logger  - Database closed
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.822 sec

Results :

Tests run: 42, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ marytts-runtime ---
[INFO] 
[INFO] --- maven-jar-plugin:2.3.1:test-jar (default) @ marytts-runtime ---
[INFO] 
[INFO] --- maven-failsafe-plugin:2.8:integration-test (integration-test) @ marytts-runtime ---
[INFO] Failsafe report directory: /Users/steiner/projects/workspace/marytts/marytts-runtime/target/failsafe-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running marytts.MaryInterfaceIT
Tests run: 10, Failures: 1, Errors: 1, Skipped: 0, Time elapsed: 0.611 sec <<< FAILURE!
Running marytts.server.MaryPropertiesIT
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec

Results :

Failed tests: 
  canProcessToTokens(marytts.MaryInterfaceIT)

Tests in error: 
  canGetMaryInterface(marytts.MaryInterfaceIT): Cannot start MARY server

Tests run: 13, Failures: 1, Errors: 1, Skipped: 0

Exception in thread "Thread-3" java.lang.IllegalStateException: MARY system is not running
    at marytts.server.Mary.shutdown(Mary.java:384)
    at marytts.server.Mary$2.run(Mary.java:290)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.408s
[INFO] Finished at: Tue Feb 28 13:19:22 CET 2012
[INFO] Final Memory: 5M/81M
[INFO] ------------------------------------------------------------------------

wrapper script testing

If Mary's runtime or builder modules are to be started using wrapper scripts, we have to verify that these are robust. We need to assert that environment variables are set correctly, and that options and arguments are properly passed to the JVM and available there. And we should integrate such tests into the Maven build lifecycle, perhaps the integration-test phase.

While there are some nice unit testing frameworks out there for shell scripts (such as shunit2 and roundup), the shell/JVM interaction is difficult to test with these, and moreover they would not test the bat wrappers for Windows.

On the other hand, it might be worth considering moving to (or at least also supporting) something like the Java Service Wrapper in the future, but for now, a custom script template tested with a custom Java class seems like the practical solution.

when modules.poweronselftest property is on, the test thread hangs

I noticed a thread blocked in the ProducingDoubleDataSource.putOneDataPoint(), the following property was on:
if (MaryProperties.getAutoBoolean("modules.poweronselftest", false)) {
m.powerOnSelfTest();
}

This is mainly because the HTSVocoderDataProducer attached to this test task has no consumer attached. The solution should be attaching a dummy consumer on it.

Test failures (a.k.a. incompatible with Java 7)

Host: OS X Lion 10.7.2

I have cloned repo, then I try to build project with "mvn install" and got:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.8:test (default-test) on project marytts-runtime: There are test failures.
[ERROR]
[ERROR] Please refer to /Users/ymikhailov/Projects/marytts/marytts-runtime/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :marytts-runtime

Problem with maven-compiler-plugin:2.0.2 when compiling voices

I was making a new hmm-voice and I have got this problem when using HMMVoiceCompiler:
maven out>[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:testCompile (default-testCompile) on project voice-bye-hsmm: Compilation failure: Compilation failure:
maven out>[ERROR] /project/mary/hmm-voices/cmu_us_slt_arctic_adapt/mary/voice-bye-hsmm/src/test/java/marytts/voice/ByeHsmm/LoadVoiceIT.java:[3,7] static import declarations are not supported in -source 1.3
maven out>[ERROR](use -source 5 or higher to enable static import declarations)

Solution:
In other pom.xml it is defined the maven-compiler-plugin:2.3.2: so I added this part on the pom.xml template used to compile voices, so that fixed the proble; not sure though why before it was working, any idea?
Has somebody experience this problem?
can somebody with more experience with maven comment whether the solution is ok, or is there other way?

Fail on HMM Voice Trainer (HMMVoiceMakeVoice) -- Need to provide more description of exception

Dear,

I have encountered an exception in HMMVoiceMakeVoice component. Could you please help me clarify that? Thanks a lot.

  1. Some environment & technical information:
    • Mac OS X (10.7.4)
    • HTK-3.4.1
    • HTS-2.2_for_HTK-3.4.1
    • Language: Vietnamese (I have built a minimal NLP component for Vietnamese using MaryTTS). Locale: vi
  2. Stack trace:
    Training voice: VNVoiceNew
    The following is general information about execution of training steps:

Step: Start preparing environments at Thu Aug 9 13:44:46 CEST 2012

Step: Start computing variance floors at Thu Aug 9 13:44:46 CEST 2012

Step: Start initialization & reestimation at Thu Aug 9 13:44:48 CEST 2012

Step: Start making a monophone mmf at Thu Aug 9 13:47:39 CEST 2012

Step: Start embedded reestimation (monophone) at Thu Aug 9 13:47:40 CEST 2012

Step: Start copying monophone mmf to fullcontext one at Thu Aug 9 13:54:30 CEST 2012

Step: Start embedded reestimation (fullcontext) at Thu Aug 9 13:54:42 CEST 2012

Step: Start tree-based context clustering at Thu Aug 9 13:56:19 CEST 2012
java.lang.Exception: The component HMMVoiceMakeVoice produced the following exception:
at marytts.tools.voiceimport.DatabaseImportMain$8.run(DatabaseImportMain.java:297)
Caused by: java.lang.RuntimeException: computation failed on file [/MaryTTS/VNVoiceNew/]!
Command line was: [/usr/bin/perl /MaryTTS/VNVoiceNew/hts/scripts/Training.pl /MaryTTS/VNVoiceNew/hts/scripts/Config.pm].
at marytts.tools.voiceimport.HMMVoiceMakeVoice.launchProcWithLogFile(HMMVoiceMakeVoice.java:185)
at marytts.tools.voiceimport.HMMVoiceMakeVoice.compute(HMMVoiceMakeVoice.java:124)
at marytts.tools.voiceimport.DatabaseImportMain$8.run(DatabaseImportMain.java:294)

Added on 10th August: I can fix the above exception by modifying the number of questions from 001 to 1. But now, it raises another exception:

Training voice: VNVoiceNew
The following is general information about execution of training steps:

Step: Start preparing environments at Thu Aug 9 17:58:44 CEST 2012

Step: Start computing variance floors at Thu Aug 9 17:58:44 CEST 2012

Step: Start initialization & reestimation at Thu Aug 9 17:58:49 CEST 2012

Step: Start making a monophone mmf at Thu Aug 9 18:01:38 CEST 2012

Step: Start embedded reestimation (monophone) at Thu Aug 9 18:01:38 CEST 2012

Step: Start copying monophone mmf to fullcontext one at Thu Aug 9 18:08:30 CEST 2012

Step: Start embedded reestimation (fullcontext) at Thu Aug 9 18:08:41 CEST 2012

Step: Start tree-based context clustering at Thu Aug 9 18:10:17 CEST 2012

Step: Start embedded reestimation (clustered) at Thu Aug 9 18:30:08 CEST 2012

Step: Start untying the parameter sharing structure at Thu Aug 9 18:35:26 CEST 2012

Step: Start embedded reestimation (untied) at Thu Aug 9 18:35:32 CEST 2012

Step: Start tree-based context clustering at Thu Aug 9 18:36:37 CEST 2012

Step: Start embedded reestimation (re-clustered) at Thu Aug 9 18:55:11 CEST 2012

Step: Start forced alignment for no-silent GV at Thu Aug 9 18:59:55 CEST 2012

Step: Start making global variance at Thu Aug 9 19:05:54 CEST 2012

Step: Start making unseen models (GV) at Thu Aug 9 19:11:42 CEST 2012

Step: Start making unseen models (1mix) at Thu Aug 9 19:11:45 CEST 2012

Step: Start generating speech parameter sequences (1mix) at Thu Aug 9 19:11:49 CEST 2012

Step: Start synthesizing waveforms (1mix) at Thu Aug 9 19:13:09 CEST 2012
java.lang.Exception: The component HMMVoiceMakeVoice produced the following exception:
at marytts.tools.voiceimport.DatabaseImportMain$8.run(DatabaseImportMain.java:297)
Caused by: java.lang.RuntimeException: computation failed on file [/MaryTTS/VNVoiceNew/]!
Command line was: [/usr/bin/perl /MaryTTS/VNVoiceNew/hts/scripts/Training.pl /MaryTTS/VNVoiceNew/hts/scripts/Config.pm].
at marytts.tools.voiceimport.HMMVoiceMakeVoice.launchProcWithLogFile(HMMVoiceMakeVoice.java:185)
at marytts.tools.voiceimport.HMMVoiceMakeVoice.compute(HMMVoiceMakeVoice.java:124)
at marytts.tools.voiceimport.DatabaseImportMain$8.run(DatabaseImportMain.java:294)

I think MaryTTS should provide the exact exception, not the general one like above. It is so difficult to find the reason. Thanks.

ambiguous server warning

I'm using Mary TTS server 5.0 and got this warning while trying out different voices and languages:

from server.log:

2012-12-07 16:34:49,461 [I/O dispatcher 4] WARN marytts.IO Voice dfki-spike-hsmm' does not match document localede' -- ignoring!

What is ignored? The voice setting or the locale setting?

LocalMaryInterface.setVoice(v) does not setAudioFileFormatForVoice()

I used the LocalMaryInterface for changing voice and creating audio.
After changing the voice to bits1-hsmm the created audio is empty!
It only works, if i change the locale with setLocale() implicitly, because setLocale() calls setAudioFileFormatForVoice().
So i changed the code of LocalMaryInterface.java and added the call of setAudioFileFormatForVoice() to the setVoice() method, and now it works for me.

used os: Ubuntu 12.10
used java: 1.7.0_09 (openjdk)

OpenMary TTS for Hindi, Assertion Error Exception

Hi,

I am using openMary TTS 5.1 version
Operating System: Linux
Java version: 1.6.0

I am facing a issue when adding support for Hindi language in OpenMary.
I have completed successfully step 4 given in https://github.com/marytts/marytts/wiki/New-Language-Support (i.e. Minimal NLP components for the new language)

But now at step 5 (Run feature maker with the minimal NLP components), when I run command
$ wkdb_featuremaker.sh wkdb.conf
I get following error:

Getting list of unprocessed clean_text records from hi_cleanText
Number of unprocessed clean_text records to process --> [9061]
Looping over unprocessed clean_text records from wikipedia...
TARGETFEATURES to extract: phone next_phone selection_prosody
Starting time:31_10_2012_13:56:06

Exception in thread "main" java.lang.AssertionError
at marytts.features.FeatureRegistry.determineBestFeatureProcessorManager(FeatureRegistry.java:154)
at marytts.features.FeatureRegistry.getTargetFeatureComputer(FeatureRegistry.java:227)
at marytts.tools.dbselection.FeatureMaker.main(FeatureMaker.java:180)

Kindly guide me through this

My wkdb.conf file is as follows:
WIKIDATAPATH=/home/arpit/Desktop/MARY/hindi
WIKILOCALE=hi
LOCALE=hi
MYSQLHOST=localhost
MYSQLUSER=root
MYSQLPASSWD=
MYSQLDB=wiki123
FEATUREMAKERRELIABILITY=strict
FEATUREMAKERFEATURESFORSELECTION="phone,next_phone,selection_prosody"
SELECTEDSENTENCESTABLENAME=test
SELECTEDSENTENCESTABLEDSCRIPTION="Testing table for selected sentences. Wikipedia locale: "
DATABASESELECTORSTOPCRITERION="numSentences 90 simpleDiphones simpleProsody"

Regards,
Arpit Goyal

Cannot instantiate feature processor manager

Hi,

When I try to start Mary server, it raised the below exception. I just increased the number of phones in my language (from 48 to 160 phones including tones). Before that, I didn't encounter this exception.

Thanks.

MARY server 5.1-SNAPSHOT starting as a HTTP server...Exception in thread "main" java.lang.Exception: Cannot instantiate feature processor manager 'marytts.features.FeatureProcessorManager(vi)'
at marytts.server.Mary.setupFeatureProcessors(Mary.java:188)
at marytts.server.Mary.startup(Mary.java:295)
at marytts.server.Mary.startup(Mary.java:205)
at marytts.server.Mary.main(Mary.java:508)
Caused by: marytts.exceptions.MaryConfigurationException: Cannot instantiate object from 'marytts.features.FeatureProcessorManager(vi)': Too many strings for a byte-string translator:
"0" "0_L" "0_R" "71_L" "71_R" "72_L" "72_R" "73_L" "73_R" "74_L" "74_R" "75a_L" "75a_R" "75b_L" "75b_R" "76a_L" "76a_R" "76b_L" "76b_R" "7_X1_L" "7_X1_R" "7_X2_L" "7_X2_R" "7_X3_L" "7_X3_R" "7_X4_L" "7_X4_R" "7_X5a_L" "7_X5a_R" "7_X5b_L" "7_X5b_R" "7_X6a_L" "7_X6a_R" "7_X6b_L" "7_X6b_R" "E1_L" "E1_R" "E2_L" "E2_R" "E3_L" "E3_R" "E4_L" "E4_R" "E5a_L" "E5a_R" "E5b_L" "E5b_R" "E6a_L" "E6a_R" "E6b_L" "E6b_R" "E_X1_L" "E_X1_R" "E_X2_L" "E_X2_R" "E_X3_L" "E_X3_R" "E_X4_L" "E_X4_R" "E_X5a_L" "E_X5a_R" "E_X5b_L" "E_X5b_R" "E_X6a_L" "E_X6a_R" "E_X6b_L" "E_X6b_R" "G_L" "G_R" "J_L" "J_R" "M1_L" "M1_R" "M2_L" "M2_R" "M3_L" "M3_R" "M4_L" "M4_R" "M5a_L" "M5a_R" "M5b_L" "M5b_R" "M6a_L" "M6a_R" "M6b_L" "M6b_R" "M71_L" "M71_R" "M72_L" "M72_R" "M73_L" "M73_R" "M74_L" "M74_R" "M75a_L" "M75a_R" "M75b_L" "M75b_R" "M76a_L" "M76a_R" "M76b_L" "M76b_R" "N_L" "N_R" "O1_L" "O1_R" "O2_L" "O2_R" "O3_L" "O3_R" "O4_L" "O4_R" "O5a_L" "O5a_R" "O5b_L" "O5b_R" "O6a_L" "O6a_R" "O6b_L" "O6b_R" "O_X1_L" "O_X1_R" "O_X2_L" "O_X2_R" "O_X3_L" "O_X3_R" "O_X4_L" "O_X4_R" "O_X5a_L" "O_X5a_R" "O_X5b_L" "O_X5b_R" "O_X6a_L" "O_X6a_R" "O_X6b_L" "O_X6b_R" "X_L" "X_R" "__L" "__R" "a1_L" "a1_R" "a2_L" "a2_R" "a3_L" "a3_R" "a4_L" "a4_R" "a5a_L" "a5a_R" "a5b_L" "a5b_R" "a6a_L" "a6a_R" "a6b_L" "a6b_R" "a_X1_L" "a_X1_R" "a_X2_L" "a_X2_R" "a_X3_L" "a_X3_R" "a_X4_L" "a_X4_R" "a_X5a_L" "a_X5a_R" "a_X5b_L" "a_X5b_R" "a_X6a_L" "a_X6a_R" "a_X6b_L" "a_X6b_R" "b_L" "b_R" "c_L" "c_R" "d_L" "d_R" "e1_L" "e1_R" "e2_L" "e2_R" "e3_L" "e3_R" "e4_L" "e4_R" "e5a_L" "e5a_R" "e5b_L" "e5b_R" "e6a_L" "e6a_R" "e6b_L" "e6b_R" "f_L" "f_R" "h_L" "h_R" "i1_L" "i1_R" "i2_L" "i2_R" "i3_L" "i3_R" "i4_L" "i4_R" "i5a_L" "i5a_R" "i5b_L" "i5b_R" "i6a_L" "i6a_R" "i6b_L" "i6b_R" "ie1_L" "ie1_R" "ie2_L" "ie2_R" "ie3_L" "ie3_R" "ie4_L" "ie4_R" "ie5a_L" "ie5a_R" "ie5b_L" "ie5b_R" "ie6a_L" "ie6a_R" "ie6b_L" "ie6b_R" "j_L" "j_R" "k_L" "k_R" "l_L" "l_R" "m_L" "m_R" "n_L" "n_R" "o1_L" "o1_R" "o2_L" "o2_R" "o3_L" "o3_R" "o4_L" "o4_R" "o5a_L" "o5a_R" "o5b_L" "o5b_R" "o6a_L" "o6a_R" "o6b_L" "o6b_R" "p_L" "p_R" "s_L" "s_R" "s_L" "s_R" "t_L" "t_R" "t'_L" "t'_R" "t_L" "t_R" "u1_L" "u1_R" "u2_L" "u2_R" "u3_L" "u3_R" "u4_L" "u4_R" "u5a_L" "u5a_R" "u5b_L" "u5b_R" "u6a_L" "u6a_R" "u6b_L" "u6b_R" "uo1_L" "uo1_R" "uo2_L" "uo2_R" "uo3_L" "uo3_R" "uo4_L" "uo4_R" "uo5a_L" "uo5a_R" "uo5b_L" "uo5b_R" "uo6a_L" "uo6a_R" "uo6b_L" "uo6b_R" "v_L" "v_R" "w_L" "w_R" "z_L" "z_R" "z_L" "z_R" (309 strings)
at marytts.util.MaryRuntimeUtils.instantiateObject(MaryRuntimeUtils.java:133)
at marytts.server.Mary.setupFeatureProcessors(Mary.java:179)
... 3 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at marytts.util.MaryRuntimeUtils.instantiateObject(MaryRuntimeUtils.java:127)
... 4 more
Caused by: java.lang.IllegalArgumentException: Too many strings for a byte-string translator:
"0" "0_L" "0_R" "71_L" "71_R" "72_L" "72_R" "73_L" "73_R" "74_L" "74_R" "75a_L" "75a_R" "75b_L" "75b_R" "76a_L" "76a_R" "76b_L" "76b_R" "7_X1_L" "7_X1_R" "7_X2_L" "7_X2_R" "7_X3_L" "7_X3_R" "7_X4_L" "7_X4_R" "7_X5a_L" "7_X5a_R" "7_X5b_L" "7_X5b_R" "7_X6a_L" "7_X6a_R" "7_X6b_L" "7_X6b_R" "E1_L" "E1_R" "E2_L" "E2_R" "E3_L" "E3_R" "E4_L" "E4_R" "E5a_L" "E5a_R" "E5b_L" "E5b_R" "E6a_L" "E6a_R" "E6b_L" "E6b_R" "E_X1_L" "E_X1_R" "E_X2_L" "E_X2_R" "E_X3_L" "E_X3_R" "E_X4_L" "E_X4_R" "E_X5a_L" "E_X5a_R" "E_X5b_L" "E_X5b_R" "E_X6a_L" "E_X6a_R" "E_X6b_L" "E_X6b_R" "G_L" "G_R" "J_L" "J_R" "M1_L" "M1_R" "M2_L" "M2_R" "M3_L" "M3_R" "M4_L" "M4_R" "M5a_L" "M5a_R" "M5b_L" "M5b_R" "M6a_L" "M6a_R" "M6b_L" "M6b_R" "M71_L" "M71_R" "M72_L" "M72_R" "M73_L" "M73_R" "M74_L" "M74_R" "M75a_L" "M75a_R" "M75b_L" "M75b_R" "M76a_L" "M76a_R" "M76b_L" "M76b_R" "N_L" "N_R" "O1_L" "O1_R" "O2_L" "O2_R" "O3_L" "O3_R" "O4_L" "O4_R" "O5a_L" "O5a_R" "O5b_L" "O5b_R" "O6a_L" "O6a_R" "O6b_L" "O6b_R" "O_X1_L" "O_X1_R" "O_X2_L" "O_X2_R" "O_X3_L" "O_X3_R" "O_X4_L" "O_X4_R" "O_X5a_L" "O_X5a_R" "O_X5b_L" "O_X5b_R" "O_X6a_L" "O_X6a_R" "O_X6b_L" "O_X6b_R" "X_L" "X_R" "__L" "__R" "a1_L" "a1_R" "a2_L" "a2_R" "a3_L" "a3_R" "a4_L" "a4_R" "a5a_L" "a5a_R" "a5b_L" "a5b_R" "a6a_L" "a6a_R" "a6b_L" "a6b_R" "a_X1_L" "a_X1_R" "a_X2_L" "a_X2_R" "a_X3_L" "a_X3_R" "a_X4_L" "a_X4_R" "a_X5a_L" "a_X5a_R" "a_X5b_L" "a_X5b_R" "a_X6a_L" "a_X6a_R" "a_X6b_L" "a_X6b_R" "b_L" "b_R" "c_L" "c_R" "d_L" "d_R" "e1_L" "e1_R" "e2_L" "e2_R" "e3_L" "e3_R" "e4_L" "e4_R" "e5a_L" "e5a_R" "e5b_L" "e5b_R" "e6a_L" "e6a_R" "e6b_L" "e6b_R" "f_L" "f_R" "h_L" "h_R" "i1_L" "i1_R" "i2_L" "i2_R" "i3_L" "i3_R" "i4_L" "i4_R" "i5a_L" "i5a_R" "i5b_L" "i5b_R" "i6a_L" "i6a_R" "i6b_L" "i6b_R" "ie1_L" "ie1_R" "ie2_L" "ie2_R" "ie3_L" "ie3_R" "ie4_L" "ie4_R" "ie5a_L" "ie5a_R" "ie5b_L" "ie5b_R" "ie6a_L" "ie6a_R" "ie6b_L" "ie6b_R" "j_L" "j_R" "k_L" "k_R" "l_L" "l_R" "m_L" "m_R" "n_L" "n_R" "o1_L" "o1_R" "o2_L" "o2_R" "o3_L" "o3_R" "o4_L" "o4_R" "o5a_L" "o5a_R" "o5b_L" "o5b_R" "o6a_L" "o6a_R" "o6b_L" "o6b_R" "p_L" "p_R" "s_L" "s_R" "s_L" "s_R" "t_L" "t_R" "t'_L" "t'_R" "t_L" "t_R" "u1_L" "u1_R" "u2_L" "u2_R" "u3_L" "u3_R" "u4_L" "u4_R" "u5a_L" "u5a_R" "u5b_L" "u5b_R" "u6a_L" "u6a_R" "u6b_L" "u6b_R" "uo1_L" "uo1_R" "uo2_L" "uo2_R" "uo3_L" "uo3_R" "uo4_L" "uo4_R" "uo5a_L" "uo5a_R" "uo5b_L" "uo5b_R" "uo6a_L" "uo6a_R" "uo6b_L" "uo6b_R" "v_L" "v_R" "w_L" "w_R" "z_L" "z_R" "z_L" "z_R" (309 strings)
at marytts.util.string.ByteStringTranslator.(ByteStringTranslator.java:81)
at marytts.features.MaryLanguageFeatureProcessors$HalfPhoneUnitName.(MaryLanguageFeatureProcessors.java:132)
at marytts.features.FeatureProcessorManager.setupPhoneFeatureProcessors(FeatureProcessorManager.java:310)
at marytts.features.FeatureProcessorManager.(FeatureProcessorManager.java:57)
at marytts.features.FeatureProcessorManager.(FeatureProcessorManager.java:47)
... 9 more
Exception in thread "Thread-2" java.lang.IllegalStateException: MARY system is not running
at marytts.server.Mary.shutdown(Mary.java:384)
at marytts.server.Mary$2.run(Mary.java:290)

Provide installation component.xml for maven voice projects

@HaraldBerthelsen asked the question how to distribute a voice. No ready-made mechanism exists yet.

In fact it would be nice if any such mechanism were compatible with the marytts-component.installer.sh installation mechanism, so we need to generate not only the voice.zip file, but also a voice-component.xml file which describes the installable voice package.

We should add an assembly step to the demo project voice-cmu-slt-hsmm which produces the full and correct voice-cmu-slt-hsmm--component.xml, including the file size and md5 sum of the generated voice.zip file.

Reduce version number redundancy where possible

Currently we use the current version number, 5.0-SNAPSHOT, in many places throughout the project. It should be replaced with variables wherever possible so that releasing a new version becomes easy and not too error-prone.

component installer needs component.xml files for language components

Description: The mary-component-installer shows installable voices by language component (installed or available).

The marytts-assembly maven task assembles a package with all language components installed; but this fact is not visible to the mary-component-installer, so no voices can be installed.

Suggested fix: Some step in the maven build procedure (either the language-specific subproject or the assembly) should create the component.xml for all languages; the assembly should combine these and put them in the right place.

Dokumentation of the MARY HTTP interface

Hi,

we are running a 'Mary TTS server 4.1.1 (impl. 20100909)'
(output of 'version'). I found the build-in docu page
'MARY HTTP Interface: Documentation by example' but this is not
sufficiant for the HTTP interface.
More specifically I'm looking the exact definintion of

effect_(effectname)selected
effect
(effectname)_parameters

By fiddling around I found that the following works:

http://marytts.phonetik.uni-muenchen.de:59125/process?INPUT_TEXT=Hallo+Welt&INPUT_TYPE=TEXT&OUTPUT_TYPE=AUDIO&AUDIO=WAVE_FILE&LOCALE=de&VOICE=bits1un
itselautolabelhmm&effect_volume_selected=on&effect_volume_parameters=amount:1.5;

But I couldn't get the other effects working, although they work in the
web interface (except 'durScale').

Question: Where do I get a complete description of the HTTP interface?

Best regards,

Florian

remove Eclipse-specific files from SCM

Versioning Eclipse plugin config files leads to super-useless modifications such as

index 378f6ae..d62a1f1 100644
--- a/marytts-builder/.settings/org.eclipse.jdt.core.prefs
+++ b/marytts-builder/.settings/org.eclipse.jdt.core.prefs
@@ -1,9 +1,10 @@
-#Wed Jan 26 18:58:48 CET 2011
-encoding//src/test/java=UTF-8
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+#Fri Feb 17 20:48:15 CET 2012
 eclipse.preferences.version=1
-encoding//src/test/resources=UTF-8
-org.eclipse.jdt.core.compiler.source=1.6
 encoding//src/main/java=UTF-8
 encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
 org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.6

This is quite annoying, since the git status and diff output becomes cluttered with dozens of those files.

Strongly suggest removing and ignoring them. They will get regenerated anyway when marytts is imported into Eclipse as an "Existing Maven project", which is the preferred way.

Duration model could not be applied

Hi,

I am doing the "PhoneUnitFeatureComputer" step to build an HMM-based voice. The system raised the below exception. Anybody can tell me the reason and how to solve that? Thanks in advanced.

Computing unit features for 251 files
Mary TTS client 5.1-SNAPSHOT (impl. unknown)
Connected to localhost:59125, Mary TTS server 5.1-SNAPSHOT (impl. unknown)
java.lang.Exception: The component PhoneUnitFeatureComputer produced the following exception:
at marytts.tools.voiceimport.DatabaseImportMain$8.run(DatabaseImportMain.java:297)
Caused by: java.io.IOException: Error message from server:

Internal server error

Processing failed.

java.lang.Exception: Module AcousticModeller: Problem processing the data.
    at marytts.server.Request.processOneChunk(Request.java:551)
    at marytts.server.Request.processOrLookupOneChunk(Request.java:389)
    at marytts.server.Request.process(Request.java:298)
    at marytts.server.http.SynthesisRequestHandler.process(SynthesisRequestHandler.java:272)
    at marytts.server.http.SynthesisRequestHandler.handleClientRequest(SynthesisRequestHandler.java:98)
    at marytts.server.http.BaseHttpRequestHandler.handle(BaseHttpRequestHandler.java:144)
    at org.apache.http.nio.protocol.BufferingHttpServiceHandler$RequestHandlerAdaptor.handle(BufferingHttpServiceHandler.java:189)
    at org.apache.http.nio.protocol.SimpleNHttpRequestHandler.handle(SimpleNHttpRequestHandler.java:51)
    at org.apache.http.nio.protocol.AsyncNHttpServiceHandler.processRequest(AsyncNHttpServiceHandler.java:453)
    at org.apache.http.nio.protocol.AsyncNHttpServiceHandler.inputReady(AsyncNHttpServiceHandler.java:316)
    at org.apache.http.nio.protocol.BufferingHttpServiceHandler.inputReady(BufferingHttpServiceHandler.java:131)
    at org.apache.http.impl.nio.DefaultNHttpServerConnection.consumeInput(DefaultNHttpServerConnection.java:173)
    at org.apache.http.impl.nio.DefaultServerIOEventDispatch.inputReady(DefaultServerIOEventDispatch.java:147)
    at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:161)
    at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:335)
    at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
    at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:275)
    at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
    at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:542)
    at java.lang.Thread.run(Thread.java:680)
Caused by: marytts.exceptions.SynthesisException: Duration model could not be applied
    at marytts.modules.AcousticModeller.process(AcousticModeller.java:184)
    at marytts.server.Request.processOneChunk(Request.java:549)
    ... 19 more
Caused by: marytts.exceptions.MaryConfigurationException: Error searching in tree when predicting duration. 
    at marytts.modules.acoustic.HMMModel.predictAndSetDuration(HMMModel.java:261)
    at marytts.modules.acoustic.HMMModel.applyTo(HMMModel.java:143)
    at marytts.modules.AcousticModeller.process(AcousticModeller.java:182)
    ... 20 more
Caused by: java.lang.IndexOutOfBoundsException: Byte value out of range: 92
    at marytts.util.string.ByteStringTranslator.get(ByteStringTranslator.java:152)
    at marytts.features.FeatureDefinition.getFeatureValueAsString(FeatureDefinition.java:1003)
    at marytts.features.FeatureVector.getFeatureAsString(FeatureVector.java:174)
    at marytts.modules.acoustic.HMMModel.predictAndSetDuration(HMMModel.java:208)
    ... 22 more
at marytts.client.http.MaryHttpClient.requestInputStream(MaryHttpClient.java:440) at marytts.client.http.MaryHttpClient._process(MaryHttpClient.java:484) at marytts.client.MaryClient.process(MaryClient.java:648) at marytts.tools.voiceimport.PhoneUnitFeatureComputer.computeFeaturesFor(PhoneUnitFeatureComputer.java:203) at marytts.tools.voiceimport.PhoneUnitFeatureComputer.compute(PhoneUnitFeatureComputer.java:187) at marytts.tools.voiceimport.DatabaseImportMain$8.run(DatabaseImportMain.java:294) Caused by: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:59125/process at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436) at marytts.client.http.MaryHttpClient.requestInputStream(MaryHttpClient.java:431) ... 5 more

MCEPMaker fails on unexpected input files

Building a voice from wav files where some random ones use Broadcast Wave Format (BWF) for metadata encoding. Using 4.x, this is what happens:

fnord0018
fnord0019
fnord0020
Cannot recognize file format or cannot access file: "/path/to/fnord0020.wav"
java.lang.Exception: The component MCEPMaker produced the following exception: 
    at marytts.tools.voiceimport.DatabaseImportMain$8.run(DatabaseImportMain.java:294)
Caused by: java.lang.RuntimeException: Mel-Cepstrum  computation failed on file [fnord0020]!
Command line was: [/path/to/speech_tools/bin/sig2fv -window_type hamming -factor 2.5 -otype est_binary -coefs melcep -melcep_order 12 -fbank_order 24 -shift 0.01 -preemph 0.97 -pm /path/to/user.dir/pm/fnord0020.pm -o /path/to/user.dir/mcep/fnord0020.mcep /path/to/user.dir/wav/fnord0020.wav].
    at marytts.tools.voiceimport.General.launchProc(General.java:532)
    at marytts.tools.voiceimport.ESTCaller.make_mcep(ESTCaller.java:275)
    at marytts.tools.voiceimport.MCEPMaker.compute(MCEPMaker.java:257)
    at marytts.tools.voiceimport.DatabaseImportMain$8.run(DatabaseImportMain.java:291)

The actual error returned by invoking that command line is gobbled, but running the command line manually does this:

$ /path/to/speech_tools/bin/sig2fv -window_type hamming -factor 2.5 -otype est_binary -coefs melcep -melcep_order 12 -fbank_order 24 -shift 0.01 -preemph 0.97 -pm /path/to/user.dir/pm/fnord0020.pm -o /path/to/user.dir/mcep/fnord0020.mcep /path/to/user.dir/wav/fnord0020.wav
Cannot recognize file format or cannot access file: "/path/to/user.dir/wav/fnord0020.wav"

So it appears that sig2fv from the Edinburgh Speech Tools cannot cope with certain files. The audio format is identical to that of the previous file, which worked as expected:

$ soxi fnord0019.wav fnord0020.wav

Input File     : 'fnord0019.wav'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:02.47 = 109028 samples = 185.422 CDDA sectors
File Size      : 222k
Bit Rate       : 719k
Sample Encoding: 16-bit Signed Integer PCM


Input File     : 'fnord0020.wav'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:03.25 = 143438 samples = 243.942 CDDA sectors
File Size      : 289k
Bit Rate       : 711k
Sample Encoding: 16-bit Signed Integer PCM

Total Duration of 2 files: 00:00:05.72

However, inspection of the header reveals that fnord0019.wav uses the standard WAVEfmt chunk in the header, while fnord0020.wav has WAVEbext, i.e., uses the Broadcast Wave extension.

This is essentially an EST bug (I'm using speech_tools 2.1, compiled on OSX 10.6.8), but MCEPMaker should either gracefully handle this Exception, or at the very least, provide some useful indication why processing failed.

OpenMary TTS for Hindi, Null pointer Exception

Hi,

As discussed in issue#84,

I am using openMary TTS 5.1 version
Operating System: Linux
Java version: 1.6.0

But a new problem has arrived, I am facing a issue when adding support for Hindi language in OpenMary.
I have completed successfully step 5 given in https://github.com/marytts/marytts/wiki/New-Language-Support (i.e. Run feature maker with the minimal NLP components)

But now at step 6 (Database selection), when I run command
$ wkdb_database_selector.sh wkdb.conf
I get following error:
Analysing feature vectors of 1034 sentences:
Exception in thread "main" java.lang.NullPointerException
at marytts.tools.dbselection.CoverageDefinition.initialiseCoverage(CoverageDefinition.java:439)
at marytts.tools.dbselection.DatabaseSelector.main2(DatabaseSelector.java:238)
at marytts.tools.dbselection.DatabaseSelector.main(DatabaseSelector.java:113)

Kindly guide me through this

My wkdb.conf file is as follows:
WIKIDATAPATH=/home/arpit/Desktop/MARY/hindi
WIKILOCALE=hi
LOCALE=hi
MYSQLHOST=localhost
MYSQLUSER=root
MYSQLPASSWD=
MYSQLDB=wiki123
FEATUREMAKERRELIABILITY=strict
FEATUREMAKERFEATURESFORSELECTION="phone,next_phone,selection_prosody"
SELECTEDSENTENCESTABLENAME=test
SELECTEDSENTENCESTABLEDSCRIPTION="Testing table for selected sentences. Wikipedia locale: "
DATABASESELECTORSTOPCRITERION="numSentences 90 simpleDiphones simpleProsody"

@psibre : Kindly help me into this. I have been working to develop TTS for Hindi. But there are many problems I have to overcome. I have to discuss a lot of issues. Would you be able to give me a contact id so that I can mail you and discuss it with you. Its very urgent. My aim is first develop TTS for Hindi using OpenMary and then improve its performance. My email-id is [email protected]. I will be very grateful.

Regards,

PhoneLabelFeatureAligner: Non-matching units

Hi,

I cannot find the reason why I got this announcement in MaryTTS when trying to build a new voice:

Non-matching units found: feature file '0' vs. label file 'b' (Unit -1)
PTS90048_006 Removing pause unit in labels at index 0
Removing pause unit in labels at index 16
Non-matching units found: feature file '0' vs. label file 'n' (Unit -1)
PTS90048_007 Removing pause unit in labels at index 0
Removing pause unit in labels at index 5
Removing pause unit in labels at index 29
Non-matching units found: feature file '0' vs. label file 't' (Unit -1)

I don't meet this problem before. All previous steps were done successfully, and it seems their results are fine.

Thanks in advanced for answering me.

portion of xml repeated in voice output, reproducable

When submitting a RAWMARYXML request to the engine there are certain conditions where it repeats a portion of the message. Take this input for example...

<?xml version="1.0" encoding="UTF-8" ?>
<maryxml version="0.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://mary.dfki.de/2002/MaryXML" xml:lang="en-US">

<prosody rate="-20%" contour="(0%,+5%) (70%,-0%) (100%,-10%)">This part gets repeated. Something to say.<boundary duration="800"/></prosody>

<prosody range="+20%">another random sentence.<boundary duration="1200"/></prosody>

</maryxml>

The portion "This part gets repeated." Is contained in the output wave file a second time at the end of the utterance. Changing the a to a capital in the last sentence "Another...' prevents it from happening.

Ive tried various utterances, and no matter what, if the final sentence begins with lower case, some portion of the preceding text is repeated at the end. At least I've found a pattern and the work-around, but I don't believe this was the intended behaviour.

I am using marytts on:
Fedora release 14 (Laughlin)
with:
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)
[

zip file attributes not processed correctly in voice-cmu-slt-hsmm

For one thing, this throws

java.lang.NumberFormatException: For input string: "${zip_size}"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:449)
    at java.lang.Integer.parseInt(Integer.java:499)
    at marytts.tools.install.ComponentDescription.<init>(ComponentDescription.java:154)
    at marytts.tools.install.VoiceComponentDescription.<init>(VoiceComponentDescription.java:67)
    at marytts.tools.install.InstallFileParser.<init>(InstallFileParser.java:83)
    at marytts.tools.install.InstallerGUI.main(InstallerGUI.java:811)

when the marytts-component-installer.sh is run.

The relevant lines in voice-cmu-slt-hsmm-5.1-SNAPSHOT-component.xml are:

marytts ingmar$ grep -n zip_ voice-cmu-slt-hsmm/target/*
voice-cmu-slt-hsmm/target/voice-cmu-slt-hsmm-5.1-SNAPSHOT-component.xml:8:            md5sum="${zip_md5}" size="${zip_size}">

These attributes are not filtered as intended from voice-cmu-slt-hsmm/src/non-packaged-resources/voice-component.xml.

Installation of components via command line (aka no GUI)

Installation of components on headless server impossible at this stage.

marytts server works fine on ubuntu 10.04-4 server but only 1 voice available.

Alternatively are there instructions on how to install components and voices manually so the server will recognise them?

Your Help is appreciated.

Wrong permissions in packaged voice components

Packaging 5.1-SNAPSHOT on the Mac, all component files are assembled with wrong permissions, i.e. rwsrwsrwt (107777):

marytts ingmar$ ls -l target/marytts-5.1-SNAPSHOT/installed/
total 72
-rwsrwsrwt  1 ingmar  staff  495 Jul  6 11:34 marytts-lang-de-5.1-SNAPSHOT-component.xml
-rwsrwsrwt  1 ingmar  staff  510 Jul  6 11:34 marytts-lang-en-GB-5.1-SNAPSHOT-component.xml
-rwsrwsrwt  1 ingmar  staff  510 Jul  6 11:34 marytts-lang-en-US-5.1-SNAPSHOT-component.xml
-rwsrwsrwt  1 ingmar  staff  495 Jul  6 11:34 marytts-lang-it-5.1-SNAPSHOT-component.xml
-rwsrwsrwt  1 ingmar  staff  495 Jul  6 11:34 marytts-lang-ru-5.1-SNAPSHOT-component.xml
-rwsrwsrwt  1 ingmar  staff  495 Jul  6 11:34 marytts-lang-sv-5.1-SNAPSHOT-component.xml
-rwsrwsrwt  1 ingmar  staff  495 Jul  6 11:34 marytts-lang-te-5.1-SNAPSHOT-component.xml
-rwsrwsrwt  1 ingmar  staff  495 Jul  6 11:34 marytts-lang-tr-5.1-SNAPSHOT-component.xml
-rwsrwsrwt  1 ingmar  staff  801 Jul  6 11:34 voice-cmu-slt-hsmm-5.1-SNAPSHOT-component.xml
marytts ingmar$ ls -l target/marytts-5.1-SNAPSHOT/lib/
total 51536
-rwsrwsrwt  1 ingmar  staff  2287977 Jul  6 11:34 marytts-client-5.1-SNAPSHOT-jar-with-dependencies.jar
-rwsrwsrwt  1 ingmar  staff  5328161 Jul  6 11:34 marytts-lang-de-5.1-SNAPSHOT.jar
-rwsrwsrwt  1 ingmar  staff  6941648 Jul  6 11:34 marytts-lang-en-5.1-SNAPSHOT.jar
-rwsrwsrwt  1 ingmar  staff  1761482 Jul  6 11:34 marytts-lang-it-5.1-SNAPSHOT.jar
-rwsrwsrwt  1 ingmar  staff    66564 Jul  6 11:34 marytts-lang-ru-5.1-SNAPSHOT.jar
-rwsrwsrwt  1 ingmar  staff   138896 Jul  6 11:34 marytts-lang-sv-5.1-SNAPSHOT.jar
-rwsrwsrwt  1 ingmar  staff    19882 Jul  6 11:34 marytts-lang-te-5.1-SNAPSHOT.jar
-rwsrwsrwt  1 ingmar  staff    23263 Jul  6 11:34 marytts-lang-tr-5.1-SNAPSHOT.jar
-rwsrwsrwt  1 ingmar  staff  8558508 Jul  6 11:34 marytts-server-5.1-SNAPSHOT-jar-with-dependencies.jar
-rwsrwsrwt  1 ingmar  staff  1242664 Jul  6 11:34 voice-cmu-slt-hsmm-5.1-SNAPSHOT.jar

The files under the corresponding components' target/ directories have normal permissions.

The build was run with Maven 3.0.4 and maven-assembly-plugin:2.2-beta-5.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.