Ostatnio bawię się interfejsem WebSpeech, a konkretnie SpeechRecognition.

Testowałem na komputerze w Chrome w Windows i działa poprawnie i zgodnie z dokumentacją.

Nie wchodząc w szczegóły, pierwsze próby to zrobienie aplikacji na obraz i podobieństwo https://www.google.com/intl/pl/chrome/demos/speech.html bazując na dokumentacji i analizując zdarzenia. Opcje Continuous i MaxAlternatives obiektu SpeechRecognition działają zgodnie z dokumentacją.

Testowałem na dwóch smartfonach z Androidem, przeglądarka Google Chrome i na obu smartfonach działa inaczej, na jednym dokładnie analizowałem zawartość struktury wchodzącej przez parametr do metody zdarzenia OnResult. Opcja MaxAlternatives wydaje się być ignorowana i działa jak MaxAlternatives=5, działa przy Continuous=true i Continuous=false, ale nie wchodząc w szczegóły, w obu przypadkach inaczej niż w dokumentacji, przez co muszę trochę inaczej analizować strukturę zawierającą rozpoznany tekst do swoich zastosowań i w efekcie mieć dwie wersje procedury obsługi zdarzenia, jedna do użycia na komputerze, druga do użycia na smartfonie.

Dlaczego na smartfonie SpeechRecognition działa inaczej niż na komputerze i inaczej niż według dokumentacji (na komputerze działa tak, jak jest w dokumentacji)?

Próbowałem podziałać z tym na Firefox i gdzieś wyczytałem, że do tego należy ustawić opcje media.webspeech.recognition.enable na true i media.webspeech.synth.enabled na true. Po tej zmianie przeglądarka widzi typ SpeechRecognition, jedynie nie obsługuje opcji Continuous (ale to nie jest duży problem). Jednakże, przy próbie wywołania metody Start() skrypt wysypuje błąd. Czy można zmusić Firefox do rozpoznawania mowy, czy trzeba przyjąć, że rozpoznawanie mowy działa tylko w Chrome?