Homepage » Coding » Come aggiungere la funzione Da testo a voce in qualsiasi pagina Web

    Come aggiungere la funzione Da testo a voce in qualsiasi pagina Web

    Il text-to-speech caratteristica si riferisce al narrazione parlata di un testo visualizzato su un dispositivo. Allo stato attuale, dispositivi come laptop, tablet e telefoni cellulari hanno già questa caratteristica. Qualsiasi applicazione in esecuzione su questi dispositivi, come un browser Web, può farne uso, e estendere la sua funzionalità. La funzione di narrazione può essere un aiuto adatto per un'applicazione che visualizza un testo abbondante, come offre la possibilità di ascoltare ai visitatori del sito web.

    L'API di Web Speech

    Il API JavaScript per Web Speech è la porta di accesso accedere alla funzione Sintesi vocale da un browser web. Quindi, se vuoi introdurre funzionalità text-to-speech su una pagina web pesante, e consentire ai tuoi lettori di ascoltare il contenuto, puoi utilizzare questa comoda API o, per essere più specifico, SpeechSynthesis interfaccia.

    Codice iniziale e controllo dell'assistenza

    Per iniziare, creiamo una pagina web con io esempio di testo da narrare, e tre pulsanti.

     

    La lepre con molti amici

    Una lepre era molto popolare con ...

    Ma ha rifiutato, affermando che ...

    Morale della storia…

    I pulsanti saranno i controlli per la narrazione. Ora dobbiamo assicurarci che il UA supporta il SpeechSynthesis interfaccia. Per fare ciò, controlliamo rapidamente con JavaScript se il finestra l'oggetto ha il 'SpeechSynthesis' proprietà, o no.

     onload = function () if ('speechSynthesis' in window) / * sintesi vocale supportata * / else / * sintesi vocale non supportata * / 

    Se speechSynthesis è disponibile, prima noi creare un riferimento per speechSynthesis che assegniamo al synth variabile. Anche noi avviare una bandiera con il falso valore (vedremo il suo scopo più avanti nel post), e noi creare riferimenti e fare clic su gestori di eventi per i tre pulsanti (Play, Pause, Stop) pure.

    Quando l'utente fa clic su uno dei pulsanti, la sua rispettiva funzione (onClickPlay (), onClickPause (), onClickStop ()) sarà chiamato.

     if ('speechSynthesis' nella finestra) var synth = speechSynthesis; var flag = false; / * riferimenti ai pulsanti * / var playEle = document.querySelector ('# play'); var pauseEle = document.querySelector ('# pause'); var stopEle = document.querySelector ('# stop'); / * fa clic sui gestori di eventi per i pulsanti * / playEle.addEventListener ('clic', onClickPlay); pauseEle.addEventListener ('clic', onClickPause); stopEle.addEventListener ('clic', onClickStop); function onClickPlay ()  function onClickPause ()  function onClickStop ()  

    Crea le funzioni personalizzate

    Ora facciamo costruire le funzioni di clic dei tre singoli pulsanti che verranno chiamati dai gestori di eventi.

    1. Riproduci / Riprendi

    Quando viene cliccato il pulsante Play, prima noi controlla il bandiera. Se è falso, abbiamo impostato a vero, quindi se in qualsiasi momento il pulsante viene cliccato in un secondo momento, il codice all'interno di primo Se la condizione non verrà eseguita (non fino a quando la bandiera è falso ancora).

    Allora noi crea una nuova istanza di SpeechSynthesisUtterance interfaccia che contiene informazioni sul parlato, come il testo da leggere, il volume del parlato, la voce parlata, la velocità, l'intonazione e la lingua del discorso. Aggiungiamo il testo dell'articolo come parametro del costruttore, e assegnarlo al espressione variabile.

     function onClickPlay () if (! flag) flag = true; utterance = new SpeechSynthesisUtterance (document.querySelector ('article'). textContent); utterance.voice = synth.getVoices () [0]; utterance.onend = function () flag = false; ; synth.speak (espressione);  if (synth.paused) / * riattiva / riprende la narrazione * / synth.resume ();  

    Noi usiamo il SpeechSynthesis.getVoices () metodo a designare una voce per il discorso dalle voci disponibili nel dispositivo dell'utente. Poiché questo metodo restituisce una matrice di tutte le opzioni vocali disponibili in un dispositivo, noi assegnare la prima voce del dispositivo disponibile usando il utterance.voice = synth.getVoices () [0]; dichiarazione.

    Il alla fine la proprietà rappresenta un gestore di eventi che è eseguito quando il discorso è finito. Al suo interno, cambiamo il valore di bandiera variabile torna a falso in modo che il codice che avvia il discorso può essere eseguito quando il pulsante è cliccato di nuovo.

    Quindi chiamiamo il SpeechSynthesis.speak () metodo per inizia la narrazione. Dobbiamo anche controllare se la narrazione è in pausa, per il quale usiamo la sola lettura SpeechSynthesis.paused proprietà. Se la narrazione è in pausa, è necessario riprendi la narrazione sul pulsante clic, che possiamo ottenere utilizzando il SpeechSynthesis.resume () metodo.

    2. Pausa

    Ora creiamo il onClickPause () funzione in cui prima verifichiamo se la narrazione è in corso e non in pausa. Possiamo testare queste condizioni facendo uso del SpeechSynthesis.speaking e il SpeechSynthesis.paused proprietà. Se entrambe le condizioni sono vere, la nostra onClickPause () funzione mette in pausa il discorso chiamando il SpeechSynthesis.pause () metodo.

     function onClickPause () if (synth.speaking &&! synth.paused) / * pausa narration * / synth.pause ();  
    3. Stop

    Il onClickStop () la funzione è costruito in modo simile a onClickPause (). Se il discorso è in corso, noi smettila chiamando il SpeechSynthesis.cancel () metodo che rimuove tutte le espressioni.

     function onClickStop () if (synth.speaking) / * stop narration * / / * per safari * / flag = false; synth.cancel ();  

    Si noti che sulla cancellazione della parola, il alla fine l'evento viene automaticamente attivato, e abbiamo già aggiunto il codice di ripristino flag al suo interno. però, c'è un bug nel browser Safari che impedisce a questo evento di sparare, ecco perché abbiamo reimpostato la bandiera nel onClickStop () funzione. Non devi farlo se non vuoi supportare Safari.

    Supporto per il browser

    Tutte le ultime versioni dei browser moderni avere supporto completo o parziale per l'API di sintesi vocale. I browser Webkit non riproducono la voce da più schede, la pausa è buggata (funziona ma con errori) e la voce non viene ripristinata quando l'utente ricarica la pagina nei browser Webkit.

    Demo di lavoro

    Dai un'occhiata alla demo live qui sotto, o controlla il codice completo su Github.

    Vedi la penna à ??  ° à ... ¸UN¢Â      £ Text to Speech - JavaScript di HONGKIAT (@hkdc) su CodePen.