Přejít k navigační liště

Zdroják » JavaScript » Když webová aplikace promluví… Představujeme Speech Synthesis API

Když webová aplikace promluví… Představujeme Speech Synthesis API

Články JavaScript

Mobilní i desktopové aplikace mohou s uživatelem již dávno komunikovat pomocí hlasu, proč by to neměly umět i aplikace webové? Můžou, připravuje se totiž API, které jim to umožní, a můžete si ho dnes vyzkoušet v prohlížeči Chrome.

Tento článek je překladem textu Web apps that talk – Introduction to the Speech Synthesis API z HTML5rocks, jehož autorem je Eric Bidelman a je zde zveřejněn pod licencí CC BY 3,.0.

Pozn. překl.: Zkoušejte syntézu na anglických textech, v případě použití českých znaků mi syntéza v Chrome 33 padala.

API Web Speech přidává do JavaScriptu rozpoznávání hlasu (speech to text) a hlasovou syntézu (text to speech). Tento článek se zabývá tou druhou částí, která byla nedávno přidána do Chrome 33 (jak mobilního tak desktopového). Pokud vás zajímá rozpoznávání hlasu, přečtěte si související článek Webové stránky dostanou rozpoznávání řeči – přichází Web Speech API.

Základy

V tom nejjednodušším případě postačí, když předáte výrok (utterance) API metodě speechSynthesis.speak():

var msg = new SpeechSynthesisUtterance('Hello World');
window.speechSynthesis.speak(msg);

Vyzkoušejte si to:

Pozn. překl.: Pokud máte Chrome 33, měli byste po kliknutí na tlačítko slyšet přečtení anglického nadpisu článku. Český nadpis nešel použít – při pokusu o přečtení textu s českými znaky se syntéza řeči zasekne a přestane fungovat až do restartu prohlížeče.

Můžete také změnit parametry, které ovlivňují hlasitost (volume), rychlost řeči (rate), hlas (voice), výšku hlasu (pitch) a jazyk (lang):

var msg = new SpeechSynthesisUtterance();
var voices = window.speechSynthesis.getVoices();
msg.voice = voices[10]; // Pozn.: některé hlasy nepodporují změnu parametrů
msg.voiceURI = 'native';
msg.volume = 1; // 0 to 1
msg.rate = 1; // 0.1 to 10
msg.pitch = 2; //0 to 2
msg.text = 'Hello World';
msg.lang = 'en-US';

msg.onend = function(event) {
  console.log('Přečteno za ' + event.elapsedTime + ' vteřin.');
};

speechSynthesis.speak(msg);

Nastavení hlasu

Pomocí API můžete také zjistit seznam hlasů, které hlasový engine prohlížeče podporuje:

speechSynthesis.getVoices().forEach(function(voice) {
  console.log(voice.name, voice.default ? '(default)' :'');
});

A nastavením vlastnosti .voice u objektu s textem můžete vybrat jiný hlas:

var msg = new SpeechSynthesisUtterance('I see dead people!');
msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Whisper'; })[0];
speechSynthesis.speak(msg);

Demo

V přednášce „More Awesome Web: features you’ve always wanted“ na Google I/O 2013 jsem předvedl demo s Web Speech API’s SpeechRecognition používající Google Translate API pro automatický překlad vstupu z mikrofonu do jiného jazyka:

DEMO: http://www.moreawesomeweb.com/demos/speech_translate.html

Bohužel pro syntézu se používalo nedokumentované (a neoficiální) API. Dnes tu ale máme kompletní Web Speech API a můžeme přeložený text opět přečíst. Demo jsem aktualizoval, aby používalo oficiální API pro syntézu řeči.

Podpora prohlížečů

Chrome 33 má plnou podporu Web Speech API a Safari pro iOS7 obsahuje částečnou podporu.

Detekce podpory

Jelikož prohlížeče mohou podporovat jednotlivé části API zvlášť (to je případ prohlížeče Chromium), můžete chtít detekovat zvlášť každou z těchto částí:

if ('speechSynthesis' in window) {
 // Podpora syntézy. Vaše aplikace může mluvit!
}

if ('SpeechRecognition' in window) {
  // Podpora rozpoznávání řeči. Můžete mluvit na vaši aplikaci!
}

A to je vše. Pokud vás téma dál zajímá, přečtěte si související Webové stránky dostanou rozpoznávání řeči – přichází Web Speech API.

Komentáře

Odebírat
Upozornit na
guest
2 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
Cejvik

Mikrofon na vyhledávání jsem taky párkrát zkoušel a je to super.

jano

Pokial je podpora prehliadacov problem, tak sa da na syntezu reci pouzit aj existujuci polyfill https://github.com/janantala/speech-synthesis

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.