Aquileo | Recent changes to wikihttps://sourceforge.net/p/inprotk/wiki/2016-08-15T10:57:20.146000ZRecent changes to wikiAquileo | Setup modified by Timo Baumann2016-08-15T10:57:20.146000Z2016-08-15T10:57:20.146000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.net5da858971e5b5b45181d25db563dfa35f139c17f<div class="markdown_content"><pre>--- v21 +++ v22 @@ -44,26 +44,18 @@ Adding support for speech output: MaryTTS --- -InproTK relies on [MaryTTS](http://mary.opendfki.de) for speech output and supports different modes of accessing MaryTTS. InproTK can use either of +InproTK relies on [MaryTTS](http://mary.opendfki.de) for speech output and supports different modes of accessing MaryTTS. InproTK now uses Mary5 and comes with the relevant libraries. Some support for external Mary servers is still available but you are unlikely to need that. A voice for German comes with InproTK. -* a separate Mary 3.x server -* a separate Mary 4.x server -* an integrated version of Mary 4.x. +The synthesis language can be selected by setting `inpro.tts.language` (defaults to "de"); for languages other than German, you will have to disable Java assertions. +The synthesis voice is selected by setting the properties `inpro.tts.voice`. For the internal mode, you *must* select an HSMM voice (defaults to bits1-hsmm). -for speech output. Using the integrated Mary is mandatory for incremental speech synthesis. - -While the separate servers allow Mary to be installed on any server in the network, the integrated version requires MaryTTS to be installed locally on the computer that InproTK is to be run on. The Java property `mary.base` must be set to the base directory of your local Mary installation: - `java -Dmary.base=/home/someuser/somewhere/openmary-4.x/` - -Mary's installer uses whitespace in the pathname ("Mary TTS"), which may be problematic; if you run into troubles, please try to change Mary's installation path to not contain any whitespace characters. - -After installation, you will have to change the file `${mary.base}/conf/marybase.config`: in the list `modules.classes.list` change the entry `marytts.modules.HTSEngine` to `inpro.synthesis.hts.InteractiveHTSEngine`. We are working on automating this step in a future version. You can still use standard Mary (i.e. MaryClient and MaryServer) without reverting this change as long as you have InproTK on your classpath. - -There are currently issues with the poweron-selftest of HMMSynthesis. To resolve this issue, please change `modules.poweronselftest` in `${mary.base}/conf.marybase.config` from `auto` to `false`. +For additional voices (or different languages) it's easiest to download and install MaryTTS, download the voice (your choice is restricted to HSMM voices!), to located the downloaded JAR file with the voice parameters and to put it into the classpath for InproTK. You then select this voice by setting the inpro.tts.\* variables accordingly. The mode of Mary intergration is selected by the Java property `mary.version` which is to be set to "3" "4" or "internal" (default). +The separate servers allow Mary to be installed on any server in the network. Mary's installer uses whitespace in the pathname ("Mary TTS"), which may be problematic; if you run into troubles, please try to change Mary's installation path to not contain any whitespace characters. + +There may be issues with the poweron-selftest of HMMSynthesis. To resolve this issue, please change `modules.poweronselftest` in `${mary.base}/conf.marybase.config` from `auto` to `false`. + For the server modes, you should provide the Java properties `mary.host` (which defaults to localhost) and `mary.port` (which defaults to 59125). -The synthesis language can be selected by setting "inpro.tts.language" (defaults to "de"); for languages other than German, you will have to disable Java assertions. -The synthesis voice is selected by setting the properties "mary.voice" or "inpro.tts.voice". For the internal mode, you *must* select an HSMM voice (defaults to bits1-hsmm). </pre> </div>Aquileo | Setup modified by Timo Baumann2016-08-15T10:51:08.102000Z2016-08-15T10:51:08.102000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.netbf5ccc00378aa74fdffbd3a593ac8a4a1954a7dd<div class="markdown_content"><pre>--- v20 +++ v21 @@ -10,6 +10,14 @@ 1. open up eclipse, select File-&gt;Import-&gt;Existing Projects into Workspace, navigate to the directory that contains inprotk and hit OK 2. open up a terminal and use `ant` to build InproTK: type `ant` and hit return. + +Get started: +--- + +InproTK comes with a number of pre-configured launch configurations. You can access them both from Eclipse or Ant: + +1. open the folder "LaunchConfigurations", right-click the desired launch configuration and select `run as...` OR select File-&gt;Import-&gt;Run-&gt;Existing Launch Configurations and select the folder +2. type `ant &lt;tab&gt;`; your shell will likely offer the available configurations as possible completions. Dependencies --- </pre> </div>Aquileo | Setup modified by Timo Baumann2016-08-15T10:47:18.386000Z2016-08-15T10:47:18.386000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.net479d776129388de6e3faaabd75f7b8115b340b5a<div class="markdown_content"><pre>--- v19 +++ v20 @@ -1,16 +1,20 @@ Installation Guide === +Depending on how familiar you are with version control, you should decide to either download a current version of InproTK, or to check it out from git. -[[download_button]] -Download inprotk.zip and import it as a new project into Eclipse; alternatively, you can download inprotk.jar if you want to use it as part of your own project. +1. Download https://bitbucket.org/inpro/inprotk/get/develop.zip and unpack it into a directory of your choice; or: +2. clone the repository and checkout the develop branch: `git fetch &amp;&amp; git checkout develop` +Next, import the project into eclipse and/or build the software with ant: + +1. open up eclipse, select File-&gt;Import-&gt;Existing Projects into Workspace, navigate to the directory that contains inprotk and hit OK +2. open up a terminal and use `ant` to build InproTK: type `ant` and hit return. Dependencies --- -All required libraries are included in the zip file. If you are embedding inpro.jar directly, you need to take care of dependencies yourself (by including the zip's jars in lib/ into your classpath). - +All required libraries are included in the zip file / contained in the lib/-folder. Adding support for speech input: Acoustic Models --- </pre> </div>Aquileo | Tutorial modified by Timo Baumann2016-08-15T10:20:27.069000Z2016-08-15T10:20:27.069000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.net3a23d605ed6b59f313af7450cef48875f497e14f<div class="markdown_content"><pre>--- v6 +++ v7 @@ -1,6 +1,6 @@ Tutorial: Hands-on implementation of incremental systems ======================================================== -(held at U Bielefeld on 2013-12-09) +held at ESSLLI 201&amp; (original version held at U Bielefeld on 2013-12-09) The sections below each cover different parts of InproTK, but they should ideally be followed in order. </pre> </div>Aquileo | RecentChanges modified by bakuzen2015-06-19T07:03:21.875000Z2015-06-19T07:03:21.875000Zbakuzenhttps://sourceforge.net/u/bakuzen/https://sourceforge.neta15770e85df9b751273ebce70e3a2cc59e340a30<div class="markdown_content"><pre>--- v5 +++ v6 @@ -3,6 +3,9 @@ * much better coverage by unit tests * availability of alternative input sources including Google-ASR, cmp. Kennington et al., 2014: http://nbn-resolving.de/urn:nbn:de:0070-pub-26815107 * SimpleReco also accepts paths if you fail to provide a URL +* iRR: New Incremental Reference Resolution (NLU) modules for NGRAMs and RMRS. Included is Pentomino data for training and evaluation. +* WordSpotter module that can send IUs when specified WordIUs are found. +* SimpleReco also accepts Robotics Service Bus (RSB) audio streaming: https://code.cor-lab.org/projects/rsb * arch: new generic IU-network navigation facilities (pending documentation...) * arch: much improved IUUpdateListener performance, reduce amount of spurious calls to notifyListeners * iSS: update MaryTTS to 5.1 </pre> </div>Aquileo | RecentChanges modified by Timo Baumann2015-06-11T09:52:52.179000Z2015-06-11T09:52:52.179000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.net0dfcd72fb2c6ba0b24e574fab8fd24f00f5efe10<div class="markdown_content"><pre>--- v4 +++ v5 @@ -1,17 +1,21 @@ -Features to added before 1.1 (i.e., already implemented; checkout the develop branch): +Features in 1.1: +* much better coverage by unit tests * availability of alternative input sources including Google-ASR, cmp. Kennington et al., 2014: http://nbn-resolving.de/urn:nbn:de:0070-pub-26815107 -* much better coverage by unit tests * SimpleReco also accepts paths if you fail to provide a URL * arch: new generic IU-network navigation facilities (pending documentation...) * arch: much improved IUUpdateListener performance, reduce amount of spurious calls to notifyListeners -* iSS: update MaryTTS to 5.1 (already in mary51 branch) -* iSS: much improved incremental speech synthesis which performs most work incrementally now, plus a few fixes that deteriorated synthesis quality +* iSS: update MaryTTS to 5.1 +* iSS: much improved incremental speech synthesis which performs most work incrementally now, plus a few fixes that previously deteriorated synthesis quality * iSS: IU timings coming from SynthesisModule now reflect time since startup (rather than starting at 0 for every utterance) * iSS: pre-synthesis now actually works as intended +* iSS: SynthesisModule now supports prosody-markup +* iSS: support for higher-sampled voices (16k) +* iSS FIX: IUs can now be synthesized multiple times (previously this degraded their performance; still, please consider to create new IUs instead of re-synthesizing) +* iSR: add a G2P-model so that lexical coverage is no longer a problem * iSR: update Sphinx to new interfaces since 4-5prealpha (already in sphinx4-5prealpha branch) * iSR: fire update messages when phoneme timings change -* lots of bug fixes all over the place +* FIX: lots of bug fixes all over the place Features in 1.0: </pre> </div>Aquileo | Setup modified by Timo Baumann2014-10-14T15:42:01.497000Z2014-10-14T15:42:01.497000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.net31e4ec034c07cf4a9dada152a5f1d68368adf950<div class="markdown_content"><pre>--- v18 +++ v19 @@ -45,7 +45,7 @@ Mary's installer uses whitespace in the pathname ("Mary TTS"), which may be problematic; if you run into troubles, please try to change Mary's installation path to not contain any whitespace characters. -After installation, you will have to change the file `${mary.base}/conf/marybase.config`: in the list `modules.classes.list` change the entry `marytts.modules.HTSEngine` to read `inpro.synthesis.hts.InteractiveHTSEngine`. We are working on automating this step in a future version. You can still use standard Mary (i.e. MaryClient and MaryServer) without reverting this change as long as you have InproTK on your classpath. +After installation, you will have to change the file `${mary.base}/conf/marybase.config`: in the list `modules.classes.list` change the entry `marytts.modules.HTSEngine` to `inpro.synthesis.hts.InteractiveHTSEngine`. We are working on automating this step in a future version. You can still use standard Mary (i.e. MaryClient and MaryServer) without reverting this change as long as you have InproTK on your classpath. There are currently issues with the poweron-selftest of HMMSynthesis. To resolve this issue, please change `modules.poweronselftest` in `${mary.base}/conf.marybase.config` from `auto` to `false`. </pre> </div>Aquileo | RecentChanges modified by Timo Baumann2014-08-13T22:23:09.264000Z2014-08-13T22:23:09.264000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.net85e4f0bd9129279c0e9e404a2721b5fbd98d5e8a<div class="markdown_content"><pre>--- v3 +++ v4 @@ -1,4 +1,19 @@ -Features to be expected in 1.0 (i.e., stuff already implemented): +Features to added before 1.1 (i.e., already implemented; checkout the develop branch): + +* availability of alternative input sources including Google-ASR, cmp. Kennington et al., 2014: http://nbn-resolving.de/urn:nbn:de:0070-pub-26815107 +* much better coverage by unit tests +* SimpleReco also accepts paths if you fail to provide a URL +* arch: new generic IU-network navigation facilities (pending documentation...) +* arch: much improved IUUpdateListener performance, reduce amount of spurious calls to notifyListeners +* iSS: update MaryTTS to 5.1 (already in mary51 branch) +* iSS: much improved incremental speech synthesis which performs most work incrementally now, plus a few fixes that deteriorated synthesis quality +* iSS: IU timings coming from SynthesisModule now reflect time since startup (rather than starting at 0 for every utterance) +* iSS: pre-synthesis now actually works as intended +* iSR: update Sphinx to new interfaces since 4-5prealpha (already in sphinx4-5prealpha branch) +* iSR: fire update messages when phoneme timings change +* lots of bug fixes all over the place + +Features in 1.0: * FIX (actually, in Sphinx-4): Sphinx-4 has been fixed to support XML ENTITY definitions which are used in InproTK configurations. This means that configuration files don't need to be located relative to the working directory anymore (which was a very frequently asked question). Yay. * FIX: SimpleReco: grammar switch works without assertions (i.e., also for English) </pre> </div>Aquileo | IntegrationGuide modified by Timo Baumann2014-07-12T16:30:37.325000Z2014-07-12T16:30:37.325000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.net1193d275957c8ddeef70b150842b4d3469b294c0<div class="markdown_content"><pre>--- v1 +++ v2 @@ -26,6 +26,6 @@ List&lt;IU&gt; wordIUs = ma.text2IUs("eins zwei drei vier fünf sechs sieben acht"); // manipulate IUs in whatever desired way // start synthesis: - dispatcher.playStream(new DDS16kAudioInputStream(new VocodingAudioStream(IUBasedFullPStream(wordIUs.get(0), MaryAdapter5internal.getDefaultHMMData(), true)), true); + dispatcher.playStream(new DDS16kAudioInputStream(new VocodingAudioStream(new IUBasedFullPStream(wordIUs.get(0)), MaryAdapter5internal.getDefaultHMMData(), true)), true); // wait for synthesis: dispatcher.waitUntilDone(); </pre> </div>Aquileo | IntegrationGuide modified by Timo Baumann2014-07-06T15:08:52.467000Z2014-07-06T15:08:52.467000ZTimo Baumannhttps://sourceforge.net/u/timobaumann/https://sourceforge.net098652f1f8a398dfcfbdf030a16b660e36c56537<div class="markdown_content"><p>InproTK includes three entry points/runnable classes: SimpleReco, the main event-driven source for incremental processing, SimpleRTP which can be used to separate the computer providing speech input and the one which does all the processing, and SimpleMonitor which contains speech output capabilities. </p> <p>Yet, many users will prefer to integrate some or all components in a more fine-grained manner, e.g. taking care of audio setup themselves rather than using InproTK's default ways. This document describes strategies for integration.</p> <h2 id="integrating-incremental-speech-synthesis">Integrating incremental speech synthesis</h2> <p>Projects that want to integrate (just) incremental speech output may set up a minimal synthesis environment as follows:</p> <div class="codehilite"><pre><span class="nx">DispatchStream</span> <span class="nx">dispatcher</span> <span class="o">=</span> <span class="nx">SimpleMonitor</span><span class="p">.</span><span class="nx">setupDispatcher</span><span class="p">();</span> <span class="nx">SynthesisModule</span> <span class="nx">iSS</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">SynthesisModule</span><span class="p">(</span><span class="nx">dispatcher</span><span class="p">);</span> <span class="c1">// set up one's own IUModule that will be connected with iSS:</span> <span class="nx">IUModule</span> <span class="nx">myIUmodule</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">IUModule</span><span class="p">()</span> <span class="p">{</span> <span class="err">@</span><span class="nx">Override</span> <span class="kr">protected</span> <span class="k">void</span> <span class="nx">leftBufferUpdate</span><span class="p">(</span><span class="nx">Collection</span><span class="cp">&lt;?</span> <span class="k">extends</span> <span class="nx">IU</span><span class="o">&gt;</span> <span class="nx">ius</span><span class="p">,</span> <span class="k">List</span><span class="o">&lt;?</span> <span class="k">extends</span> <span class="nx">EditMessage</span><span class="o">&lt;?</span> <span class="k">extends</span> <span class="nx">IU</span><span class="o">&gt;&gt;</span> <span class="nx">edits</span><span class="p">)</span> <span class="p">{</span> <span class="cm">/* we don't need this method */</span> <span class="p">}</span> <span class="p">};</span> <span class="nx">myIUmodule</span><span class="o">.</span><span class="nx">addListener</span><span class="p">(</span><span class="nx">iSS</span><span class="p">);</span> <span class="c1">// synthesize something:</span> <span class="nx">myIUmodule</span><span class="o">.</span><span class="nx">rightBuffer</span><span class="o">.</span><span class="nx">addToBuffer</span><span class="p">(</span><span class="k">new</span> <span class="nx">PhraseIU</span><span class="p">(</span><span class="s2">&quot;eins zwei drei vier fünf sechs sieben acht.&quot;</span><span class="p">));</span> <span class="nx">myIUmodule</span><span class="o">.</span><span class="nx">notifyListeners</span><span class="p">();</span> <span class="c1">// this should be enough to start synthesis.</span> </pre></div> <p>Projects that want to manipulate output before playing it, may do the following:</p> <div class="codehilite"><pre><span class="nx">MaryAdapter</span> <span class="n">ma</span> <span class="o">=</span> <span class="nx">MaryAdapter.getInstance</span><span class="p">();</span> <span class="nb">List</span><span class="o">&lt;</span><span class="nx">IU</span><span class="o">&gt;</span> <span class="n">wordIUs</span> <span class="o">=</span> <span class="nx">ma.text2IUs</span><span class="p">(</span><span class="s2">&quot;eins zwei drei vier fünf sechs sieben acht&quot;</span><span class="p">);</span> <span class="c1">// manipulate IUs in whatever desired way</span> <span class="c1">// start synthesis:</span> <span class="nx">dispatcher.playStream</span><span class="p">(</span><span class="nb">new</span> <span class="nx">DDS16kAudioInputStream</span><span class="p">(</span><span class="nb">new</span> <span class="nx">VocodingAudioStream</span><span class="p">(</span><span class="nx">IUBasedFullPStream</span><span class="p">(</span><span class="nx">wordIUs.get</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="nx">MaryAdapter5internal.getDefaultHMMData</span><span class="p">(),</span> <span class="kc">true</span><span class="p">)),</span> <span class="kc">true</span><span class="p">);</span> <span class="c1">// wait for synthesis:</span> <span class="nx">dispatcher.waitUntilDone</span><span class="p">();</span> </pre></div> </div>