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.

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

PS Я тестирую это с Google Chrome, таким образом, используя x-webkit-speech атрибут вместо speech и аналогично x-webkit-grammar вместо grammar,

2 ответа

Решение

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

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 элемент.

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

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

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

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

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

Другие вопросы по тегам