HTML5语音识别---有没有办法设置用户期望动态说什么?(使用自定义语法)

Ste*_*hen 13 javascript html5 grammar speech-recognition dynamic

我正在寻找一种方法来定义您希望用户<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我与谷歌浏览器测试此,因而使用x-webkit-speech属性,而不是speech同样地x-webkit-grammar代替grammar.

Ste*_*hen 3

我找到了一种在客户端执行此操作的方法,使用新的 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;
Run Code Online (Sandbox Code Playgroud)

这会从语法字符串中生成一个 url,然后为我们的input元素设置该 url。

这样就不需要发出服务器请求,从而使速度更快,服务器负载更少。

有关 blob 的更多信息,请参阅thisthis