Подтвердить что ты не робот

HTML5 Распознавание речи --- есть ли способ установить, что пользователь должен сказать динамически? (Использование пользовательских грамматик)

Я ищу способ определить, что вы ожидаете от пользователя в теге <input> с набором атрибутов HTML 5 speech.
 Я знаю, что вы можете указать конкретную грамматику для использования через атрибут grammar, вот так:
<input type="text" speech grammar="grammar.grxml" />

(см. http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html)

но я надеялся на способ сделать эту динамику, чтобы я мог указать, что я ожидаю, что пользователь скажет через javascript.

Например, если у вас есть динамически сгенерированный список элементов для пользователя, чтобы выбрать из речи, как бы вы указали, что то, что они скажут, скорее всего, будет одним из этих элементов?

P.S. Я тестирую это с помощью Google Chrome, используя вместо атрибута x-webkit-speech вместо speech, а также x-webkit-grammar вместо grammar.

4b9b3361

Ответ 1

Я нашел способ сделать это на стороне клиента, используя новую функцию html5: blobs.

window.URL = window.URL || window.webkitURL;

var myGrammar = new Blob(["My custom grammar"], {
     type: 'text/xml Or whatever is the proper MIME type for grammars'});

var grammarUrl = window.URL.createObjectURL(myGrammar); 

myInput = document.getElementById("myInput");

myInput.grammar = grammarUrl;

Это делает url из строки грамматики, а затем устанавливает этот url для нашего элемента input.

Таким образом, нет необходимости делать запрос сервера, тем самым делая его быстрее и меньше нагрузки на сервер.

Для получения дополнительной информации о блобах см. this и this.

Ответ 2

Файл грамматики может быть динамически сгенерирован с использованием чего-то вроде PHP, JSP или вашего любимого языка веб-разработки. Файл грамматики извлекается с использованием HTTP, поэтому вы можете иметь что-то вроде этого, если используете PHP:

<input type="text" speech grammar="grammar.php?some_var=foo" />

PHP будет динамически создавать грамматику на основе информации, переданной в строке запроса, или через хранимую информацию сеанса и возвращать ее в речевой механизм.