Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Window : propriété speechSynthesis

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2018.

La propriété en lecture seule speechSynthesis de l'interface Window retourne un objet SpeechSynthesis, qui est le point d'entrée pour utiliser la fonctionnalité de synthèse vocale de l'API Web Speech.

Valeur

Un objet SpeechSynthesis.

Exemples

Dans notre démonstration de synthétiseur vocal (angl.), nous commençons par obtenir une référence au contrôleur SpeechSynthesis en utilisant window.speechSynthesis. Après avoir défini certaines variables nécessaires, nous récupérons une liste des voix disponibles en utilisant SpeechSynthesis.getVoices() et remplissons un menu de sélection avec celles-ci afin que l'utilisateur·ice puisse choisir la voix qu'il souhaite.

Dans le gestionnaire inputForm.onsubmit, nous empêchons l'envoi du formulaire avec preventDefault(), créons une nouvelle instance de SpeechSynthesisUtterance contenant le texte de l'élément <input>, définissons la voix de l'énoncé sur la voix sélectionnée dans l'élément <select> et commençons à faire parler l'énoncé par la méthode SpeechSynthesis.speak().

js
const synthese = window.speechSynthesis;

const formEntree = document.querySelector("form");
const texteEntree = document.querySelector("input");
const selecteurVoix = document.querySelector("select");

function remplirListeVoix() {
  const voix = synthese.getVoices();

  for (const voixActuelle of voix) {
    const option = document.createElement("option");
    option.textContent = `${voixActuelle.name} (${voixActuelle.lang})`;

    if (voixActuelle.default) {
      option.textContent += " — DEFAULT";
    }

    option.setAttribute("data-lang", voixActuelle.lang);
    option.setAttribute("data-name", voixActuelle.name);
    selecteurVoix.appendChild(option);
  }
}

remplirListeVoix();
if (speechSynthesis.onvoiceschanged !== undefined) {
  speechSynthesis.onvoiceschanged = remplirListeVoix;
}

formEntree.onsubmit = (event) => {
  event.preventDefault();

  const utterThis = new SpeechSynthesisUtterance(texteEntree.value);
  const optionSelectionnee =
    selecteurVoix.selectedOptions[0].getAttribute("data-name");
  utterThis.voice = voix.find((v) => v.name === optionSelectionnee);
  synthese.speak(utterThis);
  texteEntree.blur();
};

Spécifications

Spécification
Web Speech API
# tts-section

Compatibilité des navigateurs

Voir aussi