You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
var voices = [];
function loadVoices () {
voices = window.speechSynthesis.getVoices() || [];
if (voices._list) {
voices = voices._list;
}
}
getVoices are loaded asynchronously
The first time it is called, window.speechSynthesis.getVoices() returns a number and voices_list is undefined;
The second time it is called window.speechSynthesis.getVoices() returns a SpeechSynthesisVoiceList.
Tested on Andorid Nexus 2012 tablet with Android 5 and Amazon Tablet with FireOS 5.6
I think this is because Phonegap now uses Chrome Web View and Chrome loads voices asynchronously.
Therefore you need:
function onDeviceReady () {
if ('speechSynthesis' in window && $.isFunction (window.speechSynthesis.getVoices)) {
loadVoices();
if ('onvoiceschanged' in window.speechSynthesis) {
// Chrome loads voices asynchronously
window.speechSynthesis.onvoiceschanged = loadVoices;
} else {
// We need to attempt to load twice especially for https://github.com/macdonst/SpeechSynthesisPlugin
setTimeout(loadVoices, 3000);
}
}
}
SpeechSynthesisUtterance should be updated to take voice and not voiceURI and lang
if ('voice' in utterance) {
// Standard Web Speech API
utterance.voice = voice; // This sets the language
// Setting an unavailable language in Microsoft Edge breaks the speech,
// but hopefully we got a SpeechSynthesisVoice
// utterance.lang = language;
} else {
// For https://github.com/macdonst/SpeechSynthesisPlugin
utterance.voiceURI = voice.voiceURI;
utterance.lang = voice.lang;
}
It would also be nice to publish this plugin on npm especially to avoid it being listed each time you check npm outdated.
The text was updated successfully, but these errors were encountered:
jlchereau
changed the title
This plugin requires an update to conform with Web Speech API
This plugin requires an update to conform with the Web Speech API
Mar 25, 2018
Thx @macdonst for your very neat plugin. You might also want to check SpeechSynthesisVoice.default as it is always false both on Nexus 2012 with Android 5 and Amazon Tablet with FireOS 5.6, whereas there should be a default voice for each language. See #20.
The first time it is called, window.speechSynthesis.getVoices() returns a
number
and voices_list is undefined;The second time it is called window.speechSynthesis.getVoices() returns a
SpeechSynthesisVoiceList
.Tested on Andorid Nexus 2012 tablet with Android 5 and Amazon Tablet with FireOS 5.6
I think this is because Phonegap now uses Chrome Web View and Chrome loads voices asynchronously.
Therefore you need:
It would also be nice to publish this plugin on npm especially to avoid it being listed each time you check
npm outdated
.The text was updated successfully, but these errors were encountered: