Поддержка API webkitSpeechRecognition в Opera

Мы используем API webkitSpeechRecognition в Chrome. Поскольку это прототип приложения, мы рады поддерживать только Chrome, поэтому мы определяем поддержку API, выполняя window.hasOwnProperty('webkitSpeechRecognition') проверку (как предложено Google). Это, к счастью, терпит неудачу в Firefox, но новая Opera (основанная на webkit) сообщает, что у нее есть это свойство. И действительно, весь код работает, как и предполагалось, за исключением... ни одного события никогда не запускается, голос никогда не записывается.

Итак, мой вопрос: могу ли я заставить его работать как-то? Требуются ли для этого какие-то специальные разрешения или настройки?

В качестве альтернативы, есть ли способ (кроме старого доброго браузерного обнюхивания) обнаружить правильную, работающую поддержку webkitSpeechRecognition?


person SáT    schedule 20.04.2016    source источник
comment
Вы нашли альтернативу сниффингу браузера? Я сталкиваюсь с той же проблемой   -  person Oscar Hermosilla    schedule 14.12.2016
comment
@OscarHermosilla нет, к сожалению. Для нас это было не критично, поэтому особо активно не искал. Но мне любопытно, позвольте мне просто назначить награду.   -  person SáT    schedule 14.12.2016


Ответы (2)


Прямо сейчас только у Google Chrome есть API для распознавания речи потоком (у них есть API Google Sppeech).

Если вы будете использовать https://www.google.com/intl/en/chrome/demos/speech.html в Opera он скажет вам, что для этого вам нужен Chrome25+.

Согласно http://caniuse.com/#feat=speech-recognition, браузер Opera поддерживает для этой функции, но сейчас она не работает. У оперы нет API-сервиса, который переводил бы его на лету. Сейчас в их браузере есть только функция заполнителей, может быть, в будущем они это сделают, прямо нет, это не работает.

*ОТРЕДАКТИРОВАНО*

Пример Google, как определить, работает он или нет.

// checking by google
if (!('webkitSpeechRecognition' in window)) {
  console.log('GOOGLE: not working on this browser');
} else {
  console.log('GOOGLE: working');
}

//your way
if (window.hasOwnProperty('webkitSpeechRecognition')) {
  console.log('YOUR: working');
} else {
  console.log('YOUR: not working on this browser');
}

person Michał Ignaszewski    schedule 14.12.2016
comment
Я использую сборку Opera 41.0.2353.69, и демонстрационная страница речи просто не работает, ничего мне не сообщая. И я усмехнулся, когда caniuse.com сообщает об этом как о частичной поддержке, как и Chrome. Во всяком случае, есть ли способ определить, что это просто функция-заполнитель? (И почему бы им просто не выбросить исключение или что-то в этом роде вместо того, чтобы молча умереть?) - person SáT; 14.12.2016
comment
webkitSpeechRecognition — пытается найти программное обеспечение для распознавания речи по умолчанию для работы. Chrome по умолчанию передает поток через chrome в API речи Google для распознавания речи (поэтому у вас так много языков, которые можно распознать). На мобильных устройствах обычно есть программное обеспечение для распознавания речи, Opera на этом мобильном устройстве должна работать, на рабочем столе она не работает. Надеюсь, это поможет. - person Michał Ignaszewski; 14.12.2016
comment
Я добавил пример с демо-страницы Google, очень похожий на window.hasOwnProperty, но, возможно, это имеет значение, он обнаруживает webkit в моем Chrome, но не в моей Opera 42. - person Michał Ignaszewski; 14.12.2016
comment
Будь я проклят, используя Оперу 42.0.2393.85, у меня работает/работает. Вы не знаете? Странный. И... нет, я не думаю, что hasOwnProperty или простая проверка свойств должны иметь значение. - person SáT; 17.12.2016
comment
Я использую Ubuntu 16.04.1, Opera 42.0.2393.85. Я думаю, что, возможно, на вашей ОС установлена ​​какая-то программа для распознавания речи, и Opera ее увидит. - person Michał Ignaszewski; 19.12.2016
comment
В соответствии с opera.com/help/tutorials/voice/using создайте голос распознавание работает только в Windows XP или 2000 или выше (поэтому нужна программа MS для сборки речи в текст). Я думаю, что та же логика для webkitSpeechRecognition. - person Michał Ignaszewski; 19.12.2016

В следующем примере Google используется временная метка, чтобы определить, что Opera не инициировала начальное событие: https://www.google.com/intl/en/chrome/demos/speech.html

person jlchereau    schedule 24.03.2018