Oživení webového obsahu pomocí nativního převodu textu na řeč v prohlížeči
Věděli jste, že moderní prohlížeče mají zabudovanou funkci převodu textu na řeč? Je to neuvěřitelně užitečný nástroj, zejména pro uživatele s postižením, kteří se při navigaci na webových stránkách spoléhají na čtečky obrazovky. Kromě přístupnosti je to však také zábavný způsob, jak učinit obsah interaktivnějším.
V tomto článku vám ukážu, jak vytvořit jednoduchou čtečku příspěvků na blogu pomocí rozhraní API SpeechSynthesis v JavaScriptu. Pojďme proměnit naše webové stránky v mluvící dinosaury!
Jak to funguje?
K hlasitému čtení obsahu webové stránky můžeme využít rozhraní API speechSynthesis. Funguje to tak, že se vyberou konkrétní prvky na stránce, extrahují se jejich texty a vše převede se do řeči.
Zde je úryvek JavaScriptu, který jsem použil k vytvoření čtečky příspěvků na blogu:
speachStatus: '',
isSpeechSynthesisSupported() {
return 'speechSynthesis' in window && 'SpeechSynthesisUtterance' in window;
},
pauseSpeach() {
this.speachStatus = 'pause';
speechSynthesis.pause();
},
playSpeach() {
speechSynthesis.cancel();
this.speakText(this.getSpeachText());
this.speachStatus = 'speach';
},
resumeSpeach() {
if (this.speachStatus == '') {
this.playSpeach();
} else {
this.speachStatus = 'speach';
speechSynthesis.resume();
}
},
stopSpeach() {
this.speachStatus = '';
speechSynthesis.cancel();
},
getSpeachText() {
const elements = document.querySelectorAll(".speach");
const text = Array.from(elements).map(el => el.innerText).join(". ");
return text.trim();
},
speakText(text, lang = null) {
const utterance = new SpeechSynthesisUtterance(text);
if (lang === null) {
lang = document.documentElement.lang || "en-US";
}
utterance.lang = lang;
speechSynthesis.speak(utterance);
}
Vysvětlění
isSpeechSynthesisSupported()
- Ověření, zda prohlížeč podporuje převod textu na řeč.playSpeach()
- Spustí syntézu řeči a nahlas přečte obsah nalezený pod prvky s třídou .speach.pauseSpeach()
- Pozastaví aktuální řeč.resumeSpeach()
- Obnoví řeč od místa, kde byla pozastavena.stopSpeach()
- Úplně zruší řeč.getSpeachText()
- Shromáždí všechny prvky s třídou .speach, extrahuje jejich text a spojí je tečkou (.), aby se zavedly přirozené pauzy.speakText()
- Převede extrahovaný text na řeč, přičemž použije výchozí jazyk webové stránky.
Vytvoření jednoduchého přehrávače řeči
Nyní, když máme vytvořenou logiku, můžeme vytvořit jednoduchý přehrávač s tlačítky pro přehrávání, pozastavení, obnovení a zastavení. Zde je příklad:
<button @click="playSpeach()">Play</button>
<button @click="pauseSpeach()">Pause</button>
<button @click="resumeSpeach()">Resume</button>
<button @click="stopSpeach()">Stop</button>
<div class="speach">Toto je testovací příspěvek na blogu. Užijte si jeho poslech!</div>
Proč je to užitečné
- Přístupnost - pomáhá zrakově postiženým uživatelům snadněji konzumovat obsah.
- Hands-free zážitek - Umožňuje uživatelům poslouchat při více činnostech.
- Pomůcka při učení - Lze ji použít ke zlepšení výslovnosti a jazykových dovedností.
Zábava! - Koho by nebavilo nechat svou webovou stránku mluvit?
Doufám, že vás to nadchne stejně jako mě! Vyzkoušejte to a dejte mi vědět, jak převod textu na řeč používáte ve svých projektech.