javascript - usar - Reconocimiento de voz HTML5: ¿hay alguna manera de establecer lo que el usuario debe decir dinámicamente?(Usando Gramáticas personalizadas)
voz a texto java (2)
El archivo de gramática se puede generar dinámicamente usando algo como PHP, JSP o su lenguaje de desarrollo web favorito. El archivo de gramática se busca usando HTTP, por lo que podría tener algo como esto si está usando PHP:
<input type="text" speech grammar="grammar.php?some_var=foo" />
El PHP crearía dinámicamente la gramática basada en información pasada en una cadena de consulta oa través de información de sesión almacenada y la devolvería al motor de voz.
Estoy buscando una forma de definir lo que espera que el usuario diga en una etiqueta <input>
con el conjunto de atributos de speech
HTML 5.
Sé que puede especificar una gramática específica para usar a través del atributo de grammar
, como este:
<input type="text" speech grammar="grammar.grxml" />
(ver http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html )
pero esperaba una forma de hacer esto dinámico, para poder especificar lo que espero que el usuario diga a través de javascript.
Por ejemplo, si tuviera una lista de elementos generados dinámicamente para que un usuario los seleccione por voz, ¿cómo especificaría que lo que dirán será probablemente uno de esos elementos?
PD. Estoy probando esto con Google Chrome, usando el atributo x-webkit-speech
lugar de speech
y asimismo x-webkit-grammar
lugar de grammar
.
Encontré una forma de hacerlo desde el lado del cliente, usando una nueva característica 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;
Esto crea una url de la cadena de gramática y luego establece esa url para nuestro elemento de input
.
De esta forma, no es necesario realizar una solicitud de servidor, lo que hace que sea más rápido y menos cargado en el servidor.