Ok, forse ho un po' esagerato... ma andiamo dritti al punto e poi aggiungiamo i dettagli.
Per far parlare il browser, basta scrivere questa riga di codice:
speechSynthesis.speak(new SpeechSynthesisUtterance("Hello!"));
Quanto è semplice?! Anni fa sarebbe stato impensabile, ma oggi i browser moderni ci danno accesso alla Web Speech API.
Per far parlare il browser usiamo l'interfaccia SpeechSynthesisUtterance.
Per prima cosa dobbiamo creare una nuova istanza di SpeechSynthesisUtterance che accetta un solo parametro (la frase):
const utterance = new SpeechSynthesisUtterance("Hello!");
Ci sono molte proprietà di SpeechSynthesisUtterance che possiamo gestire:
Se vuoi esplorare altre funzionalità di SpeechSynthesisUtterance puoi consultare la documentazione MDN.
Vediamo come possiamo "accordare" la voce del browser:
utterance.lang = "en-US"; // stringa che rappresenta un language tag BCP 47 utterance.rate = 0.5; // velocità utterance.pitch = 2; utterance.volume = 0.5; // mute=0, max=1
E ora facciamo parlare il browser!
speechSynthesis.speak(utterance);
Possiamo anche ascoltare diversi eventi:
Stampa in console quando avviene un evento:
utterance.onstart = (event) => console.log("Speech has started", event); utterance.onend = (event) => console.log("Speech has ended", event);
La Speech Synthesis è ben supportata nei principali browser, mentre la Speech Recognition è solo parzialmente supportata.
Se vuoi verificare se il tuo browser supporta questa funzionalità, puoi consultare caniuse.com per maggiori dettagli.
NB: ci sono ancora alcuni problemi con "onpause" e "onresume", quindi usali con attenzione:
La teoria senza pratica serve a poco, quindi ho creato un progetto stackblitz con varie funzionalità di SpeechSynthesisUtterance con cui puoi giocare.