Pagina principala » Codificare » Cum se adaugă funcția Text-to-Speech pe orice pagină Web

    Cum se adaugă funcția Text-to-Speech pe orice pagină Web

    text-to-speech caracteristică se referă la vorbire narativă a unui text afișate pe un dispozitiv. În prezent, dispozitive precum laptopuri, tablete și telefoane mobile aveți deja această caracteristică. Orice aplicație care rulează pe aceste dispozitive, cum ar fi un browser web, poate face uz de ea, și extind funcționalitatea acestuia. Caracteristica de narațiune poate fi un ajutor potrivit pentru o aplicație care afișează text abundent, ca atare oferă opțiunea de a asculta pentru vizitatorii site-ului.

    API-ul Web Speech

    Web Speech JavaScript API este poarta de acces către accesați funcția Text-to-Speech de la un browser web. Deci, dacă doriți să introduceți funcționalitatea text-to-speech pe o pagină Web cu conținut greu și permiteți cititorilor dvs. să asculte conținutul, puteți utiliza acest API util sau, mai precis, SpeechSynthesis interfață.

    Cod inițial și verificare de asistență

    Pentru a începe, să creăm o pagină web eu exemplul de text pentru a fi narat, și trei butoane.

     

    Obiceiul cu mulți prieteni

    Un iepure a fost foarte popular cu ...

    Dar a refuzat, declarând că ...

    Morala povestii…

    Butoanele vor fi controale pentru narațiune. Acum trebuie să ne asigurăm dacă UA sprijină SpeechSynthesis interfață. Pentru a face acest lucru, vom verifica rapid cu JavaScript dacă fereastră obiect are 'SpeechSynthesis' proprietate, sau nu.

     onload = funcția () if ('speechSynthesis' în fereastră) / * sinteza de vorbire acceptată * / altceva / * sinteza de vorbire nu este acceptată * / 

    Dacă speechSynthesis este disponibil, mai întâi noi creați o referință pentru speechSynthesis pe care le atribuim Synth variabil. Noi Deasemenea iniția un steag cu fals (vom vedea scopul său mai târziu în post), și noi să creeze referințe și să manipuleze evenimentul pentru clicuri pentru cele trei butoane (Play, Pause, Stop).

    Când utilizatorul dă clic pe unul dintre butoane, funcția sa respectivă (onClickPlay (), onClickPause (), onClickStop ()) va fi numit.

     dacă ('speechSynthesis' în fereastră) var synth = speechSynthesis; var flag = false; / * referințe la butoanele * / var playEle = document.querySelector ('# play'); var pauzăEle = document.querySelector ('pauză'); var stopEle = document.querySelector ('# stop'); / * click pentru gestionarea evenimentului pentru butoanele * / playEle.addEventListener ('click', onClickPlay); pauseEle.addEventListener ("clic", onClickPause); stopEle.addEventListener ("clic", onClickStop); funcția onClickPlay ()  funcția onClickPause ()  funcția onClickStop ()  

    Creați funcțiile personalizate

    Acum hai să construi funcțiile de clic din cele trei butoane individuale care vor fi chemați de către operatorii de evenimente.

    1. Redare / Reluare

    Când faceți clic pe butonul Redare, mai întâi vom verifică steag. Daca este fals, am stabilit-o Adevărat, astfel încât în ​​orice moment butonul să fie apăsat ulterior, codul din interiorul lui primul dacă condiția nu va fi executată (nu până când nu este steagul fals din nou).

    Atunci noi creați o nouă instanță a SpeechSynthesisUtterance interfață care conține informații despre vorbire, cum ar fi textul care trebuie citit, volumul de vorbire, vocea vorbită, viteza, culoarea și limba discursului. Adăugăm textul articolului ca parametru al constructorului, și alocați-l enunț variabil.

     funcția onClickPlay () if (! flag) flag = true; utterance = noua SpeechSynthesisUtterance (document.querySelector ('articolul'). textContent); utterance.voice = synth.getVoices () [0]; utterance.onend = funcția () flag = false; ; synth.speak (exprimare);  dacă (synth.paused) / * unpause / resume narration * / synth.resume ();  

    Noi folosim SpeechSynthesis.getVoices () metoda de a desemnează o voce pentru discurs de la vocile disponibile în dispozitivul utilizatorului. Deoarece această metodă returnează o gamă de opțiuni de voce disponibile într-un dispozitiv, noi atribuiți vocea primului dispozitiv disponibil folosind utterance.voice = synth.getVoices () [0]; afirmație.

    pe sfarsit proprietate reprezintă un manipulator de evenimente care este executat atunci când discursul este terminat. În interiorul acestuia, schimbăm valoarea steag variabil înapoi la fals astfel încât codul care începe discursul pot fi executate când este butonul clicuri din nou.

    Atunci sunăm SpeechSynthesis.speak () metoda pentru a începerea narațiunii. De asemenea, trebuie să verificăm dacă narațiunea este întreruptă, pentru care folosim doar citirea SpeechSynthesis.paused proprietate. Dacă narațiunea este întreruptă, trebuie să o facem reluați povestirea pe butonul de pe buton, pe care îl putem obține folosind SpeechSynthesis.resume () metodă.

    2. Întrerupeți

    Acum să creăm onClickPause () în care verificăm mai întâi dacă narațiunea este în curs de desfășurare și nu este întreruptă. Putem testa aceste condiții utilizând SpeechSynthesis.speaking si SpeechSynthesis.paused proprietăți. Dacă ambele condiții sunt adevărate, onClickPause () funcţie întrerupe discursul prin apelarea SpeechSynthesis.pause () metodă.

     funcția onClickPause () if (synth.speaking &&! synth.paused) / * pauză narration * / synth.pause ();  
    3. Opriți

    onClickStop () funcția este construit similar cu onClickPause (). Dacă discursul este în desfășurare, noi Încetează prin apelarea SpeechSynthesis.cancel () această metodă îndepărtează toate declarațiile.

     funcția onClickStop () if (synth.speaking) / * stop narration * / / * pentru safari * / flag = false; synth.cancel ();  

    Rețineți că în cazul anulării vorbirii, pe sfarsit evenimentul este declanșat automat, și am adăugat deja codul de resetare a pavilionului în interiorul acestuia. in orice caz, există un bug în browser-ul Safari care împiedică declanșarea acestui eveniment, de aceea am resetat pavilionul în onClickStop () funcţie. Nu trebuie să faceți asta dacă nu doriți să îl sprijiniți pe Safari.

    Suport pentru browser

    Toate cele mai recente versiuni ale browserelor moderne au sprijin total sau parțial pentru API de sinteză a vorbirii. Browserele Webkit nu redă vorbă de la mai multe file, pauza este buggy (funcționează dar buggy) și vorbirea nu este resetată când utilizatorul reîncarcă pagina în browserele Webkit.

    Demo de lucru

    Aruncați o privire la demo-ul live de mai jos sau verificați codul complet de pe Github.

    A se vedea pen-ul? ??? ... ¸A¢Â                                                          Â.