Zaciekawiły mnie możliwości, jakie daje Web Speech API. Ostatnio napisałem o przetwarzaniu mowy na tekst, więc naturalnym kierunkiem będzie sprawdzenie odwrotności tego procesu – przetwarzanie tekstu na mowę. Niestety, jeśli chodzi o kompatybilność, realnie działa to jedynie na stacjonarnym i mobilnym Google Chrome, oraz jeszcze na kilku innych, egzotycznych przeglądarkach. Być może niedługo interfejs będzie wspierany również w Microsoftowym Edgu. Jednak na razie pozostaje nam uzbroić się w cierpliwość i czekać na ruchy pozostałych dostawców.
Jak Google Chrome przetwarza mowę na tekst?
Google Chrome wysyła żądanie przetworzenia mowy na tekst na własne serwery. Z tego powodu konieczne jest aktywne połączenie z Internetem, aby cały proces zadziałał.
Jak przetwarzanie mowy na tekst działa w praktyce?
Przygotowałem niewielki przykład w formie notatnika głosowego. Google Chrome może poprosić Cię o dostęp do mikrofonu. Kliknij Start i zacznij mówić do mikrofonu. Z listy języków w przykładzie dostępne są jedynie polski, angielski i niemiecki, jednak dostępna lista jest długa i nie trzeba się tak ograniczać.
Kod JavaScript dla przetwarzania mowy na tekst
Cały kod dla powyższego przykładu dostępny jest na moim GitHubie. W skrócie omówię, jak rozpocząć zabawę z przetwarzaniem mowy.
Sprawdzamy, czy stosowny interfejs jest dostępny.
Co ciekawe, w Edge interfejs webkitSpeechRecognition jest dostępny i konsola nie wyrzuci tutaj błędu. Niestety jednak samo przetwarzanie mowy dostępne już nie jest.
1 2 3 4 5 | if (!('webkitSpeechRecognition' in window)) { // przeglądarka nie obsługuje przetwarzania mowy na tekst } else { // przetwarzanie mowy } |
Inicjalizujemy interfejs przetwarzania mowy
1 2 | let recognition = new webkitSpeechRecognition(); recognition.lang = 'pl-PL'; |
- Parametr .continuous decyduje o tym, czy dla każdego procesu rozpoznawania mowy zwracane są ciągłe wyniki, czy tylko jeden.
- Parametr .interimResult decyduje o tym, czy mają być zwracane wyniki pośrednie dla każdego przetwarzania, czy jedynie wynik finalny.
Uruchamiamy przetwarzanie mowy
1 | recognition.start() |
Odbieramy wynik przetwarzania mowy na tekst
1 2 3 | recognition.onresult = function(event) { console.log(event.results[0][0].transcript); } |
Kończymy rozpoznawanie mowy, kiedy przeglądarka wykryje zakończony proces mówienia
1 2 3 | recognition.onspeechend = function() { recognition.stop(); } |
W konsoli pojawią się wyniki przetwarzania naszej mowy na tekst.
Podsumowanie
Więcej na temat przetwarzania mowy na tekst można znaleźć w tym opisie
Zachęcam do eksperymentowania. Może warto pomyśleć o nawigowaniu stroną internetową lub aplikacją za pomocą mowy? To mogłoby podnieść poziom dostępności takiej witryny, przynajmniej jeśli chodzi o Google Chrome.
Tagi: przetwarzanie mowy • rozpoznawanie mowy • speech recognition • Web Speech API