L'API de synthèse vocale est-elle prise en charge par Chromium?
Oui, le Web Speech API a un soutien de base au navigateur Chrome, mais il y a plusieurs problèmes à la fois le chrome et la mise en œuvre de la spécification Firefox, voir voir Blink>Speech, Internals>SpeechSynthesis, Web Speech.
Dois-je installer des voix? Si oui, comment puis-je faire cela? J'utilise Fedora. Est-ce que les voix comme la vidéo que j'ai besoin d'installer un paquet supplémentaire pour pour que ça fonctionne?
Oui, les voix doivent être installées. Chromium n'est pas livré avec des voix pour définir SpeechSynthesisUtterance
voice
par défaut, voir How to use Web Speech API at chromium?; How to capture generated audio from window.speechSynthesis.speak() call?.
Vous pouvez installer speech-dispatcher
en tant que serveur pour le serveur de synthèse vocale du système et espeak
en tant que synthétiseur vocal.
$ yum install speech-dispatcher espeak
Vous pouvez également définir un fichier de configuration pour speech-dispatcher
dans le dossier personnel de l'utilisateur pour définir des options spécifiques pour les deux speech-dispatcher
et le module de sortie que l'utilisation, par exemple espeak
$ spd-conf -u
Lancement de chrome avec --enable-speech-dispatcher
L'indicateur génère automatiquement une connexion à speech-dispatcher
, où vous pouvez définir le LogLevel
entre 0
et 5
pour examiner la communication SSIP entre le code Chrome et speech-dispatcher
.
renvoie les résultats de manière asynchrone .getVoices()
et doit être appelé deux fois
voir cette question electron
à GitHub Speech Synthesis: No Voices #586.
window.speechSynthesis.onvoiceschanged = e => {
const voices = window.speechSynthesis.getVoices();
// do speech synthesis stuff
console.log(voices);
}
window.speechSynthesis.getVoices();
ou composé comme une fonction asynchrone qui retourne une Promise
avec valeur étant tableau de voix
(async() => {
const getVoices = (voiceName = "") => {
return new Promise(resolve => {
window.speechSynthesis.onvoiceschanged = e => {
// optionally filter returned voice by `voiceName`
// resolve(
// window.speechSynthesis.getVoices()
// .filter(({name}) => /^en.+whisper/.test(name))
//);
resolve(window.speechSynthesis.getVoices());
}
window.speechSynthesis.getVoices();
})
}
const voices = await getVoices();
console.log(voices);
})();
Grand, merci beaucoup pour l'explication. va tester et marquer votre solution et upvote quand cela fonctionne, ce qui sera probablement le cas. – jcubic
@jcubic Voir aussi https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis/cancel – guest271314
L'installation de speech-dispatcher et de espeak suffisent à faire fonctionner la voix chrome, comme pour 'spd-conf - J'ai une erreur que cette commande n'a pas été trouvée et l'option '--enable-speech-dispatcher' montre une erreur sur le drapeau non supporté quand je lance chrome. – jcubic