Функцию обратного вызова, отвечающую за обработку ошибок, мы сделали совсем простой, научив ее обозначать только сам факт ошибки. И совершенно напрасно. Возможно, вы вслед за мной тоже это поняли. Если пока ничего, кроме ошибок, не получилось, не следует отчаиваться. Займемся возможными ошибками и, решив проблему, наверняка придем к успеху! Давайте напишем нормальный обработчик:
Recognition. onerror = function(event) {
If (event. error == ‘no-speech’) { console. log(‘Pe4b не опознается’);
}
If (event. error == ‘audio-capture’) { console. log(‘Отсутствует микрофон!’);
}
If (event. error == ‘not-allowed’) {
Console. log(‘Нет доступа к устройству’);
}
If (event. error == ‘aborted’) {
Console. log(‘Сигнал прерван!’);
}
If (event. error == ‘network’) {
Console. log(‘отсутствует сетевое подключение’);
}
If (event. error == ‘service-not-allowed’) { console. log(‘Сервис не доступен’);
}
If (event. error == ‘language-not-supported’) { console. log(3biK не поддерживается’);
}
If (event. error == ‘bad-grammar’) { console. log(‘B школу, неуч!’);
}
Тут требуется несколько пояснений.
Ошибка not-allowed может возникать по двум причинам — устройство (микрофон) заблокировано, поскольку захвачено каким-то другим процессом, или у процесса банально не хватает прав на захват.
Aborted — это прерывание сигналило другим процессом (например, во время сеанса распознавания «вклинилась» ICQ).
Сообщение service-not-allowed обычно означает, что настройки браузера не позволяют воспользоваться сервисом. Параметр, отвечающий за это разрешение, следует искать здесь — chrome: settings/contentExceptions#media-stream (сюда же нужно обратить внимание при простом not-allowed).
Наличие bad-grammar выглядит очень обнадеживающе, но, по всей вероятности, эта ошибка попа существует только в спецификации, воспроизвести ее у меня не получилось.
Надеюсь, анализ ошибок помог справиться с трудностями, посему продолжим изучение Web Speach API.
Добавить комментарий