Note that there are some explanatory texts on larger screens.

plurals
  1. POmeSpeak.js - second word does not play when using a CallBack Method
    text
    copied!<p>I've written some simple javascript using the MeSpeak library from <a href="http://www.masswerk.at/mespeak/" rel="nofollow noreferrer">http://www.masswerk.at/mespeak/</a></p> <p>What I'm trying to do is pause between words for a few seconds if the input script contains brackets and a number (i.e. - "[3]" would pause for 3 seconds)...</p> <p>I've already seen a more elegant method elsewhere, however, what is stumping me here is why does the following code not play the second word? (tested in FireFox version 25.0.1 with version 1.8.1 of meSpeak)</p> <p>Code follows:</p> <pre><code>&lt;html&gt; &lt;head&gt; &lt;script src="mespeak.js"&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;button onclick="speakdata('Testing Word [2]Another [3]Again [5]Blah')"&gt;Talk&lt;/button&gt; &lt;div id="audio"&gt;&lt;/div&gt; &lt;script&gt; meSpeak.loadConfig("mespeak_config.json"); meSpeak.loadVoice("voices/en/en-us.json"); var t=0; var speechArr = []; var pauseArr = []; var len =0; var recurseLoop = 0; function speakdata(spokendata) { var looper = new Boolean(); looper = true; var posCount = new Number(0); var pauseCount = new Number(0); while (looper) { if (spokendata.substring(posCount).indexOf("[") == -1) { speechArr.push(meSpeak.speak (spokendata.substring(posCount)),{ 'rawdata': true }); pauseArr.push(0); len++; looper = false; } else { if (posCount == 0) { speechArr.push(meSpeak.speak(spokendata.substring(posCount,spokendata.indexOf("[")-1),{ 'rawdata': true })); pauseArr.push(0); len++; } pauseCount += parseInt(spokendata.substring(posCount).substring(spokendata.substring(posCount).indexOf("[")+1, spokendata.substring(posCount).indexOf("]"))) posCount = parseInt(posCount+spokendata.substring(posCount).indexOf("]")+1) if (spokendata.substring(posCount).indexOf("[") != -1) { var posCount2 = spokendata.substring(posCount).indexOf("["); speechArr.push(meSpeak.speak(spokendata.substring(posCount,posCount2+posCount),{ 'rawdata': true })); pauseArr.push(pauseCount*1000); len++; posCount = posCount2+posCount looper = true; } else { speechArr.push(meSpeak.speak(spokendata.substring(posCount),{ 'rawdata': true })); pauseArr.push(pauseCount*1000); len++; looper = false; } } } setTimeout(function(){meSpeak.play(speechArr[0],1,playNext)},pauseArr[0]); recurseLoop++; } function playNext() { if (recurseLoop &lt; len) { setTimeout(function(){meSpeak.play(speechArr[recurseLoop],1,playNext)},pauseArr[recurseLoop]); recurseLoop++; } } &lt;/script&gt; &lt;/body&gt; &lt;/html&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload