{"id":6823,"date":"2017-01-17T14:45:51","date_gmt":"2017-01-17T14:45:51","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=6823"},"modified":"2019-03-03T07:15:09","modified_gmt":"2019-03-03T07:15:09","slug":"campo-texto-reconocimiento-voz","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/","title":{"rendered":"Campo de texto con reconocimiento de voz"},"content":{"rendered":"<p>En este art\u00edculo vamos a ver lo simple que es crear un campo de texto que permita el <strong>reconocimiento de la voz<\/strong>. Esta funcionalidad puede resultar muy \u00fatil para el usuario disponiendo de la posibilidad de poder decir unas palabras mediante la voz para evitar tener que teclear cada letra. Este sistema se podr\u00eda emplear en un buscador para nuestra tienda, en un formulario de contacto o en la implementaci\u00f3n de un chat.<\/p>\n<p>Como podemos conseguirlo?<\/p>\n<p>En Javascript tenemos una API que podemos utilizar f\u00e1cilmente en nuestros proyectos para <strong>reconocer la voz del usuario<\/strong>.<\/p>\n<p>Crearemos nuestro campo de texto como solemos hacer habitualmente dentro del formulario correspondiente en cualquier parte del &lt;body&gt;. Por ejemplo:<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/input.html\"><span class=\"kw2\">input<\/span><\/a> <span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;search&quot;<\/span> <span class=\"kw3\">value<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;&quot;<\/span> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;search_input&quot;<\/span> placeholder<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;Escribe aqu\u00ed...&quot;<\/span> <span class=\"sy0\">\/<\/span>&gt;<\/span><\/pre><\/div><\/div>\n<p>En la cabecera &lt;head&gt; de nuestra p\u00e1gina tendremos que incluir la librer\u00eda jQuery, como por ejemplo:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.12.4\/jquery.min.js&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<p>La clave del asunto viene a continuaci\u00f3n. Tambi\u00e9n en la cabecera de tu p\u00e1gina debes a\u00f1adir el siguiente trozo de c\u00f3digo:<\/p>\n<div id=\"wpshdo_3\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_3\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_3\"><\/a><a id=\"wpshat_3\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_3\"  onClick=\"javascript:wpsh_toggleBlock(3)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_code(3)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_print(3)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_3\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\">$<span class=\"br0\">&#40;<\/span>document<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">ready<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw2\">var<\/span> recognition <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> webkitSpeechRecognition<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    recognition.<span class=\"me1\">continuous<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span>\n    recognition.<span class=\"me1\">lang<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;es&quot;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#search_input'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">click<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>event<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        recognition.<span class=\"me1\">start<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    recognition.<span class=\"me1\">onresult<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">function<\/span> <span class=\"br0\">&#40;<\/span>event<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        finalResult <span class=\"sy0\">=<\/span> <span class=\"st0\">''<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"kw1\">for<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw2\">var<\/span> i <span class=\"sy0\">=<\/span> event.<span class=\"me1\">resultIndex<\/span><span class=\"sy0\">;<\/span> i <span class=\"sy0\">&lt;<\/span> event.<span class=\"me1\">results<\/span>.<span class=\"me1\">length<\/span><span class=\"sy0\">;<\/span> <span class=\"sy0\">++<\/span>i<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n            <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>event.<span class=\"me1\">results<\/span><span class=\"br0\">[<\/span>i<span class=\"br0\">]<\/span>.<span class=\"me1\">isFinal<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n                finalResult <span class=\"sy0\">=<\/span> event.<span class=\"me1\">results<\/span><span class=\"br0\">[<\/span>i<span class=\"br0\">]<\/span><span class=\"br0\">[<\/span>0<span class=\"br0\">]<\/span>.<span class=\"me1\">transcript<\/span><span class=\"sy0\">;<\/span>\n                $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#search_input'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">val<\/span><span class=\"br0\">&#40;<\/span>finalResult<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"br0\">&#125;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n    <span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/pre><\/div><\/div>\n<p>Estamos inicializando la API de reconocimiento de voz de la siguiente forma:<\/p>\n<div id=\"wpshdo_4\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_4\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_4\"><\/a><a id=\"wpshat_4\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_4\"  onClick=\"javascript:wpsh_toggleBlock(4)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_code(4)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_print(4)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_4\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\"><span class=\"kw2\">var<\/span> recognition <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> webkitSpeechRecognition<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/pre><\/div><\/div>\n<p>Definimos la continuidad del momento de hablar, <span class=\"black\">establecemos que cuando el usuario deje de hablar, el reconocimiento de voz llega a su fin con:<\/span><\/p>\n<div id=\"wpshdo_5\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_5\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_5\"><\/a><a id=\"wpshat_5\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_5\"  onClick=\"javascript:wpsh_toggleBlock(5)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_5\" onClick=\"javascript:wpsh_code(5)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_5\" onClick=\"javascript:wpsh_print(5)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_5\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\">recognition.<span class=\"me1\">continuous<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><\/pre><\/div><\/div>\n<p>Establecemos el idioma que se debe reconocer. En nuestro caso, nos interesa el espa\u00f1ol:<\/p>\n<div id=\"wpshdo_6\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_6\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_6\"><\/a><a id=\"wpshat_6\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_6\"  onClick=\"javascript:wpsh_toggleBlock(6)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_6\" onClick=\"javascript:wpsh_code(6)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_6\" onClick=\"javascript:wpsh_print(6)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_6\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\">recognition.<span class=\"me1\">lang<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;es&quot;<\/span><span class=\"sy0\">;<\/span><\/pre><\/div><\/div>\n<p>Cuando el usuario haga click en el campo de texto, empezamos el reconocimiento de voz. Eso lo conseguimos con:<\/p>\n<div id=\"wpshdo_7\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_7\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_7\"><\/a><a id=\"wpshat_7\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_7\"  onClick=\"javascript:wpsh_toggleBlock(7)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_7\" onClick=\"javascript:wpsh_code(7)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_7\" onClick=\"javascript:wpsh_print(7)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_7\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\">$<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#search_input'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">click<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span>event<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    recognition.<span class=\"me1\">start<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/pre><\/div><\/div>\n<p>Finalmente, definimos el evento que debe generarse cuando el usuario termina de hablar:<\/p>\n<div id=\"wpshdo_8\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_8\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_8\"><\/a><a id=\"wpshat_8\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_8\"  onClick=\"javascript:wpsh_toggleBlock(8)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_8\" onClick=\"javascript:wpsh_code(8)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_8\" onClick=\"javascript:wpsh_print(8)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_8\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\">recognition.<span class=\"me1\">onresult<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">function<\/span> <span class=\"br0\">&#40;<\/span>event<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    finalResult <span class=\"sy0\">=<\/span> <span class=\"st0\">''<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">for<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw2\">var<\/span> i <span class=\"sy0\">=<\/span> event.<span class=\"me1\">resultIndex<\/span><span class=\"sy0\">;<\/span> i <span class=\"sy0\">&lt;<\/span> event.<span class=\"me1\">results<\/span>.<span class=\"me1\">length<\/span><span class=\"sy0\">;<\/span> <span class=\"sy0\">++<\/span>i<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>event.<span class=\"me1\">results<\/span><span class=\"br0\">[<\/span>i<span class=\"br0\">]<\/span>.<span class=\"me1\">isFinal<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n            finalResult <span class=\"sy0\">=<\/span> event.<span class=\"me1\">results<\/span><span class=\"br0\">[<\/span>i<span class=\"br0\">]<\/span><span class=\"br0\">[<\/span>0<span class=\"br0\">]<\/span>.<span class=\"me1\">transcript<\/span><span class=\"sy0\">;<\/span>\n            $<span class=\"br0\">&#40;<\/span><span class=\"st0\">'#search_input'<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">val<\/span><span class=\"br0\">&#40;<\/span>finalResult<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span><\/pre><\/div><\/div>\n<p>La variable event.resultIndex contiene las palabras reconocidas por la API. Las recorremos para mostrarlas.<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/scripts\/jquery\/reconocimiento-voz\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ver ejemplo en funcionamiento<\/a><\/p>\n<p><strong>Inconvenientes<\/strong><\/p>\n<ul>\n<li>No funciona en dispositivos m\u00f3viles<\/li>\n<li>En algunos navegadores tampoco acaba de funcionar<\/li>\n<\/ul>\n<p>Si sab\u00e9is de alg\u00fan plugin o script que permita reconocer la voz en todos los dispositivos y navegadores, no dudes en enviarnos un comentario con esta informaci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo vamos a ver lo simple que es crear un campo de texto que permita el reconocimiento de la voz. Esta funcionalidad puede resultar muy \u00fatil para el usuario disponiendo de la posibilidad de poder decir unas palabras mediante la voz para evitar tener que teclear cada letra. Este sistema se podr\u00eda emplear [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6824,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,5],"tags":[84,79],"class_list":["post-6823","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html","category-jquery","tag-formularios","tag-inputs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Campo de texto con reconocimiento de voz - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Reconocimiento de la voz del usuario utilizando la API webkitSpeechRecognition de JavaScript.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Campo de texto con reconocimiento de voz - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Reconocimiento de la voz del usuario utilizando la API webkitSpeechRecognition de JavaScript.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-17T14:45:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-03-03T07:15:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/01\/voice-search1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"248\" \/>\n\t<meta property=\"og:image:height\" content=\"248\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/\",\"name\":\"Campo de texto con reconocimiento de voz - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/01\/voice-search1.png\",\"datePublished\":\"2017-01-17T14:45:51+00:00\",\"dateModified\":\"2019-03-03T07:15:09+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Reconocimiento de la voz del usuario utilizando la API webkitSpeechRecognition de JavaScript.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/01\/voice-search1.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/01\/voice-search1.png\",\"width\":248,\"height\":248},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Campo de texto con reconocimiento de voz\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Campo de texto con reconocimiento de voz - Jose Aguilar Blog","description":"Reconocimiento de la voz del usuario utilizando la API webkitSpeechRecognition de JavaScript.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Campo de texto con reconocimiento de voz - Jose Aguilar Blog","og_description":"Reconocimiento de la voz del usuario utilizando la API webkitSpeechRecognition de JavaScript.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2017-01-17T14:45:51+00:00","article_modified_time":"2019-03-03T07:15:09+00:00","og_image":[{"width":248,"height":248,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/01\/voice-search1.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/","url":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/","name":"Campo de texto con reconocimiento de voz - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/01\/voice-search1.png","datePublished":"2017-01-17T14:45:51+00:00","dateModified":"2019-03-03T07:15:09+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Reconocimiento de la voz del usuario utilizando la API webkitSpeechRecognition de JavaScript.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/01\/voice-search1.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2017\/01\/voice-search1.png","width":248,"height":248},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/campo-texto-reconocimiento-voz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Campo de texto con reconocimiento de voz"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/6823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=6823"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/6823\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/6824"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=6823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=6823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=6823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}