Mājas lapa » Kodēšana » Kā pievienot teksta-runas funkciju jebkurā tīmekļa lapā

    Kā pievienot teksta-runas funkciju jebkurā tīmekļa lapā

    The No teksta uz izrunu iezīme attiecas uz runāts stāstījums par tekstu tiek parādīts ierīcē. Šobrīd tādas ierīces kā klēpjdatori, planšetdatori un mobilie tālruņi jau ir šī funkcija. Jebkura programma, kas darbojas šajās ierīcēs, piemēram, tīmekļa pārlūkprogrammā, var izmantot to, un paplašināt tās funkcionalitāti. Stāstījuma funkcija var būt piemērots palīglīdzeklis lietojumprogrammai parāda bagātīgu tekstu, kā tas piedāvā iespēju klausīties vietnes apmeklētājiem.

    Web runas API

    The Tīmekļa runas JavaScript API ir vārti uz piekļūt teksta-runas funkcijai, izmantojot tīmekļa pārlūkprogrammu. Tātad, ja vēlaties ieviest teksta-runas funkcionalitāti teksta smagā tīmekļa lapā, un ļaujiet lasītājiem uzklausīt saturu, varat izmantot šo ērto API vai, precīzāk, tās Runas sintēze saskarne.

    Sākotnējā koda un atbalsta pārbaude

    Lai sāktu darbu, izveidosim tīmekļa lapu ar man parauga teksts stāstāms, un trīs pogas.

     

    Zaķis ar daudziem draugiem

    Zaķis bija ļoti populārs ar…

    Bet viņš atteicās, norādot, ka…

    Stāsta morāle…

    Pogas būs stāstījuma vadība. Tagad mums ir jāpārliecinās, vai UA atbalsta Runas sintēze saskarne. Lai to izdarītu, mēs ātri pārbaudām JavaScript, ja logu objektam ir “runas sinteze” īpašums, vai nē.

     onload = funkcija () if ('runas sinteze' logā) / * runas sintēze atbalstīta * / cits / * runas sintēze netiek atbalstīta * / 

    Ja runas sinteze ir pieejams, vispirms mēs izveidot atsauci runas sinteze ko mēs piešķiram sintezētājs mainīgais. Mēs arī uzsākt karogu Ar nepatiesa vērtība (mēs to redzēsim vēlāk postā), un mēs izveidot atsauces un noklikšķiniet uz notikumu apstrādes par trim pogām (Play, Pause, Stop).

    Kad lietotājs noklikšķina uz vienas no pogām, tās atbilstošā funkcija (onClickPlay (), onClickPause (), onClickStop ()) tiks izsaukts.

     ja ('runas sinteze' logā) var synth = runSynthesis; var flag = false; / * atsauces uz pogām * / var playEle = document.querySelector ('# play'); var pauseEle = document.querySelector ('# pause'); var stopEle = document.querySelector ('# stop'); / * noklikšķiniet uz notikumu apstrādes ar pogām * / playEle.addEventListener ('klikšķi', onClickPlay); pauseEle.addEventListener ('klikšķis', onClickPause); stopEle.addEventListener ('klikšķi', onClickStop); funkcija onClickPlay ()  funkcija onClickPause ()  funkcija onClickStop ()  

    Izveidojiet pielāgotās funkcijas

    Tagad pieņemsim veidot klikšķa funkcijas no trim atsevišķām pogām, ko izsauks notikumu apstrādātāji.

    1. Atskaņot / atsākt

    Noklikšķinot uz pogas Atskaņot, vispirms mēs pārbaudiet karodziņš. Ja tas ir nepatiesa, mēs to uzstādām taisnība, tāpēc, ja jebkurā laikā poga tiek noklikšķināta vēlāk, kods iekšpusē vispirms ja stāvoklis netiks izpildīts (ne līdz brīdim, kad karogs ir nepatiesa atkal).

    Tad mēs izveidot jaunu. \ t SpeechSynthesisUtterance interfeiss, kas satur informāciju par runu, piemēram, lasāmo tekstu, runas apjomu, balss, kas runā, ātrumu, skaņu un runas valodu. Mēs pievienojam raksta tekstu kā konstruktora parametru, un piešķir to izteikšana mainīgais.

     funkcija onClickPlay () if (! flag) flag = taisnība; izrunāšana = jauns SpeechSynthesisUtterance (document.querySelector ('article'). textContent); utterance.voice = synth.getVoices () [0]; utterance.onend = funkcija () flag = false; ; synth.speak (izteikšana);  if (synth.paused) / * unpause / atsākt stāstījumu * / synth.resume ();  

    Mēs izmantojam SpeechSynthesis.getVoices () metode noteikt runu no balss, kas pieejamas lietotāja ierīcē. Tā kā šī metode atgriež ierīcē visas pieejamās balss opcijas, mēs piešķirt pirmās pieejamās ierīces balss izmantojot utterance.voice = synth.getVoices () [0]; paziņojums, apgalvojums.

    The onend īpašums ir notikumu apstrādātājs izpildīts, kad runāšana ir pabeigta. Tās iekšpusē mēs mainām vērtību karodziņš mainīgais atpakaļ uz nepatiesu lai kods, kas sāk runu var izpildīt kad poga ir vēlreiz noklikšķinājis.

    Tad mēs to saucam SpeechSynthesis.speak () metode, lai sākt stāstījumu. Mums ir arī jāpārbauda ja stāstījums ir apturēts, par kuru mēs izmantojam tikai lasāmu SpeechSynthesis.paused īpašums. Ja stāstījums ir apturēts, mums ir nepieciešams atsākt stāstījumu uz pogas klikšķa, ko mēs varam sasniegt, izmantojot SpeechSynthesis.resume () metodi.

    2. Pauze

    Tagad radīsim onClickPause () funkcija, kurā mēs vispirms pārbaudām ja stāstījums notiek un nav apturēts. Mēs varam pārbaudīt šos nosacījumus, izmantojot SpeechSynthesis.speaking un SpeechSynthesis.paused īpašības. Ja abi nosacījumi ir patiesi, mūsu onClickPause () funkciju aptur runu zvanot uz SpeechSynthesis.pause () metodi.

     funkcija onClickPause () if (synth.speaking &&! synth.paused) / * pauzes stāstījums * / synth.pause ();  
    3. Pārtraukt

    The onClickStop () funkcija ir būvēts līdzīgi kā onClickPause (). Ja runas notiek, mēs beidz zvanot uz RunasSynthesis.cancel () metodi noņem visas izrunas.

     funkcija onClickStop () if (synth.speaking) / * pārtraukt stāstījumu * / / * safari * / flag = false; synth.cancel ();  

    Ņemiet vērā, ka runas atcelšanas gadījumā onend notikums tiek automātiski izslēgts, un mēs jau esam pievienojuši karoga atiestatīšanas kodu. Tomēr, Safari pārlūkprogrammā ir kļūda kas novērš šo notikumu šaušanu, tāpēc mēs pārcēlām karogu uz onClickStop () funkciju. Jums tas nav jādara, ja nevēlaties atbalstīt Safari.

    Pārlūka atbalsts

    Visas jaunākās mūsdienu pārlūkprogrammu versijas ir pilnīgs vai daļējs atbalsts runas sintēzes API. Webkit pārlūkprogrammas neatskaņo runu no vairākām cilnēm, pauzēšana ir buggy (darbojas, bet buggy), un runas nav atiestatītas, kad lietotājs pārlādē lapu Webkit pārlūkprogrammās.

    Darba demonstrācija

    Apskatiet tālāk redzamo tiešo demonstrāciju vai apskatiet pilnu kodu Github.

    Skatiet pildspalvu â?¸Ã¢Â?       £ Teksts uz runu - JavaScript ar HONGKIAT (@hkdc) par CodePen.