Domovská » Kódování » Jak přidat funkci převodu textu na řeč na libovolné webové stránce

    Jak přidat funkci převodu textu na řeč na libovolné webové stránce

    text na řeč funkce odkazuje na mluvené vyprávění textu na přístroji. V současné době zařízení, jako jsou notebooky, tablety a mobilní telefony tuto funkci již mají. Každá aplikace spuštěná na těchto zařízeních, například ve webovém prohlížeči, může využít, a rozšířit jeho funkčnost. Funkce pro vyprávění může být vhodnou pomůckou pro aplikaci, která ji má zobrazí bohatý text, jako takový nabízí možnost poslechu návštěvníkům webových stránek.

    Web Speech API

    Rozhraní API jazyka Web Speech je brána přístup k funkci Text-to-Speech pomocí webového prohlížeče. Pokud tedy chcete zavést funkci převodu textu na řeč na webové stránce s těžkým textem a umožnit čtenářům, aby si poslechli obsah, můžete využít tohoto praktického rozhraní API nebo konkrétněji jeho SpeechSynthesis rozhraní.

    Kontrola počátečního kódu a podpory

    Chcete-li začít, vytvořte webovou stránku pomocí mi ukázkový text, který má být vyprávěn, a tři tlačítka.

     

    Zajíc s mnoha přáteli

    Zajíc byl velmi oblíbený u…

    Odmítl však, že…

    Morální příběh…

    Tlačítka budou kontroly vyprávění. Nyní se musíme ujistit, zda UA podporuje SpeechSynthesis rozhraní. Chcete-li tak učinit, rychle zkontrolujeme JavaScript, pokud okno objekt má 'řečiSynthesis' vlastnictví, nebo ne.

     onload = function () if ('speechSynthesis' v okně) / * syntéza řeči podporována * / else / * syntéza řeči není podporována * / 

    Li speechSynthesis je k dispozici, nejprve vytvořit odkaz pro speechSynthesis které přidělujeme synth proměnná. My také zahájit vlajku s Nepravdivé hodnotu (uvidíme její účel později v příspěvku) a my vytvořit odkazy a obslužné rutiny události click pro tři tlačítka (Play, Pause, Stop).

    Když uživatel klikne na jedno z tlačítek, jeho příslušná funkce (onClickPlay (), onClickPause (), onClickStop ()).

     if ('speechSynthesis' v okně) var synth = speechSynthesis; var flag = false; / * odkazy na tlačítka * / var playEle = document.querySelector ('# play'); var pauseEle = document.querySelector ('# pause'); var stopEle = document.querySelector ('# stop'); / * obslužné rutiny události pro tlačítka * / playEle.addEventListener ('click', onClickPlay); pauseEle.addEventListener ('click', onClickPause); stopEle.addEventListener ('click', onClickStop); funkce onClickPlay ()  funkce onClickPause ()  funkce onClickStop ()  

    Vytvořte vlastní funkce

    Tak pojďme vytvořit funkce pro klepnutí ze tří jednotlivých tlačítek, která budou volána obsluhou události.

    1. Přehrát / Pokračovat

    Když kliknete na tlačítko Přehrát, nejprve zkontrolovat vlajka. Jestli je to Nepravdivé, nastavili jsme to skutečný, takže pokud je tlačítko kdykoliv kliknuto, kód uvnitř První -li podmínka nebude provedena (ne dokud vlajka není Nepravdivé znovu).

    Potom jsme vytvořit novou instanci SpeechSynthesisUtance rozhraní, které obsahuje informace o řeči, jako je text, který má být čten, hlasitost řeči, hlas mluvený, rychlost, hřiště a jazyk řeči. Přidáme text článku jako parametr konstruktoru, a přiřadit jej k promluva proměnná.

     funkce onClickPlay () if (! flag) flag = true; utterance = nová SpeechSynthesisUtterance (document.querySelector ('article'). textContent); utterance.voice = synth.getVoices () [0]; utterance.onend = function () flag = false; ; synth.speak (promluva);  if (synth.paused) / * unpause / resume vyprávění * / synth.resume ();  

    Používáme SpeechSynthesis.getVoices () metodu určit hlas pro řeč z hlasu dostupného v zařízení uživatele. Protože tato metoda vrací pole všech dostupných možností hlasu v zařízení, my přiřadit první dostupný hlas zařízení pomocí utterance.voice = synth.getVoices () [0]; prohlášení.

    na konci vlastnost představuje obslužnou rutinu události po dokončení hovoru. Uvnitř to změníme hodnotu vlajka proměnná zpět na false tak, aby kód, který začíná řeči lze provést když je tlačítko znovu klikli.

    Pak zavoláme SpeechSynthesis.speak () způsob, jak začněte vyprávět. Musíme také zkontrolovat pokud je vyprávění pozastaveno, pro které používáme pouze pro čtení SpeechSynthesis.paused vlastnictví. Pokud je vyprávění pozastaveno, musíme pokračujte ve vyprávění kliknutím na tlačítko, které můžeme dosáhnout pomocí SpeechSynthesis.resume () metoda.

    2. Pozastavení

    Nyní vytvořme onClickPause () funkci, ve které nejprve zkontrolujeme pokud vyprávění probíhá a není pozastaveno. Tyto podmínky můžeme otestovat pomocí SpeechSynthesis.speaking a SpeechSynthesis.paused vlastnosti. Pokud jsou obě podmínky pravdivé, naše onClickPause () funkce pozastaví řeč voláním SpeechSynthesis.pause () metoda.

     funkce onClickPause () if (synth.speaking &&! synth.paused) / * pauza vyprávění * / synth.pause ();  
    3. Zastavte

    onClickStop () funkce je postaven podobně onClickPause (). Pokud řeč pokračuje, my přestaň voláním SpeechSynthesis.cancel () metodu, která odstraní všechny promluvy.

     funkce onClickStop () if (synth.speaking) / * stop naration * / / * pro safari * / flag = false; synth.cancel ();  

    Všimněte si, že na zrušení řeči na konci událost je automaticky aktivována, a my jsme do něj již přidali kód pro reset vlajky. nicméně, v prohlížeči Safari je chyba To zabrání této události z palby, proto jsme resetovali vlajku v onClickStop () funkce. Nemusíte to dělat, pokud nechcete podporovat Safari.

    Podpora prohlížeče

    Všechny nejnovější verze moderních prohlížečů plnou nebo částečnou podporu pro API syntézy řeči. Prohlížeče Webkit nepřehrávají řeči z více karet, pozastavení je buggy (funguje, ale buggy), a řeč není resetována, když uživatel znovu načte stránku v prohlížečích Webkit.

    Pracovní demo

    Podívejte se na živé demo níže, nebo se podívejte na celý kód na Github.

    Viz Pen à  ° °¸A¢Â ??  ?? â' £ Text na řeč - JavaScript by HONGKIAT (@ hkdc) na CodePen.