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

Я ищу способ определить, что вы ожидаете от пользователя в теге <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 ]

3 голосов
/ 27 февраля 2013

Я нашел способ сделать это на стороне клиента, используя новую функцию 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 элемента.

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

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

3 голосов
/ 26 марта 2012

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

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

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

...