Ich versuche, eine solide Möglichkeit, ein Array von Zeichenfolgen an die Sprachsynthese-API mit Pausen zwischen jedem Array-Element zu sprechen übergeben. Z.B. speak item 1, pause für x seconds, rede item 2, etc.Verwenden von Sprachsynthese sprechen Array von Zeichenfolgen mit Pausen zwischen
Ich habe versucht, die API onend
Methode/Ereignis, aber es funktioniert nur ein paar Mal, bevor es vollständig funktioniert, lesen Sie den Rest der Array-Elemente Rücken an Rücken von diesem Punkt an.
Vorschläge?
var dropdown = $('#item-select'),
interval = $('#item-interval').val() * 1000,
itemBtn = $('#item-btn'),
stopBtn = $('#item-stop'),
items = {
'first': ['hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine', 'hello, sunshine'],
'second': ['hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world', 'hello, world']
};
if ('speechSynthesis' in window) {
function speak(text) {
var msg = new SpeechSynthesisUtterance();
msg.text = text;
speechSynthesis.speak(msg);
msg.addEventListener('end', function(e) {
speechSynthesis.pause();
window.setTimeout(function() {
speechSynthesis.resume();
}, interval);
});
}
itemBtn.on('click', function(evt) {
currItem = items[dropdown.val()];
for (var phrase in currItem) {
speak(currItem[phrase]);
}
});
stopBtn.on('click', function(evt) {
speechSynthesis.cancel();
});
} else {
console.log('Voice synthesis isn\'t supported in your browser.');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='item-select'>
<option selected value='first'>First Item</option>
<option value='second'>Second Item</option>
</select>
<label for='item-interval'>Interval (seconds)</label>
<input id='item-interval' max='10' name='item-interval' type='range' value='2'>
<button id='item-btn'>Speak!</button>
<button id='item-stop'>CEASE FIRE</button>
Interessante Idee - ich werde es auf jeden Fall einen Schuss geben, um zu sehen, ob es hilft! In der Zwischenzeit, um das Ende Ereignis nicht feuern zu beheben, war diese Antwort in dem Beitrag, den Sie verknüpft, am hilfreichsten für mich: http://StackOverflow.com/A/35935851/1505423. Danke, dass Sie sich die Zeit genommen haben, sich das anzusehen! –