Haz que tu sitio web entienda lo que dices
Poder hablar con tu sitio web, abre un abanico de posibilidades enorme, especialmente en términos de experiencia de usuario. Con la implementación adecuada se podría crear una tienda virtual que permita a tus usuarios hacer compras sin necesidad de tocar el teclado, el mouse, ni la pantalla táctil; únicamente utilizando su voz. Hoy te contaré como puedes disfrutar de las APIs de reconocimiento de voz que otorgan Chrome, Edge y Safari.
Construiremos una aplicación que muestre en pantalla lo que escuche y agregaremos un comando extra para abrir wikipedia por voz en sólo 3 pasos.
Puedes probar el resultado final: CodePen
const elNavegadorEsCompatible = ()=>{ if (navigator.userAgent.indexOf("Chrome") || navigator.userAgent.indexOf("Edge") || navigator.userAgent.indexOf("Safari")) return true; alert('El Navegador no es compatible con el Reconocimiento de voz'); return false; }
if(elNavegadorEsCompatible()){ const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition || window.mozSpeechRecognition || window.msSpeechRecognition)(); }
if(elNavegadorEsCompatible()){ const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition || window.mozSpeechRecognition || window.msSpeechRecognition)(); /* 2.2 */ recognition.lang = "es-US"; }
if(elNavegadorEsCompatible()){ const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition || window.mozSpeechRecognition || window.msSpeechRecognition)(); recognition.lang = "es-US"; /* 2.3 */ recognition.onend = event => { recognition.start(); }; }
if(elNavegadorEsCompatible()){ const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition || window.mozSpeechRecognition || window.msSpeechRecognition)(); recognition.lang = "es-US"; recognition.onend = event => { recognition.start(); }; /* 2.4 */ recognition.onresult = resultado => {manejarResultado(resultado); }; }
if(elNavegadorEsCompatible()){ const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition || window.mozSpeechRecognition || window.msSpeechRecognition)(); recognition.lang = "es-US"; recognition.onend = event => { recognition.start(); }; recognition.onresult = resultado => {manejarResultado(resultado); }; /* 2.5 */ recognition.start(); }
const manejarResultado = resultado => { document.body.innerHTML = resultado.results[0][0].transcript }
const manejarResultado = resultado => { document.body.innerHTML = resultado.results[0][0].transcript /* Adicional */ if(resultado.results[0][0].transcript.toLowerCase().trim() == 'abrir wikipedia'){ const childFrame = document.createElement('iframe'); childFrame.src = "https://es.wikipedia.org/wiki/Wikipedia:Portada"; childFrame.style.width = "100vw"; childFrame.style.height = "500px"; document.body.append(childFrame) } }
Y Listo! Ya tenemos reconocimiento de voz en nuestras aplicaciones web en sólo 15 líneas de código (sin los comentarios y sin el ejemplo de abrir wikipedia)
Nota: En ambientes de producción, por motivos de seguridad la mayoría de navegadores exige tener instalado un certificado SSL que encripte los datos, ya que la voz es envíada a servidores para ser procesada por inteligencia artificial y convertida a texto.