Blog de Gonzalo

Blog de programación de Gonzalo López

CONVERTIR VOZ A TEXTO EN JAVASCRIPT

JAVASCRIPT

Los navegadores modernos implementan la API Web Speech, pero esta está dividida en dos interfaces, independiente la una de la otra. SpeechSynthesis que permite convertir texto a voz. La que vamos a ver ahora es la interfaz SpeechRecognition que permite convertir voz a texto en javascript.
La API de reconocimiento de voz es sorprendentemente precisa para una función de navegador gratuita. En unas pruebas que he realizado ha reconocido correctamente casi todas mis frases y supo qué palabras van juntas hasta formar discursos que tenían sentido. También te permite dictar caracteres especiales como puntos y aparte, signos de interrogación y líneas nuevas. Lo primero que hay que hacer es comprobar si el navegador tiene acceso a la API y mostrar un mensaje de error en el caso de que no:


try {
  var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
  var recognition = new SpeechRecognition();
}
catch(e) {
  console.error(e);
}
La variable de reconocimiento nos dará acceso a todos los métodos y propiedades de la API. Hay varias opciones disponibles, pero solo se definiran recognition.continuous a true. Esto permitirá a los usuarios hablar con pausas más largas entre palabras y frases.

recognition.onstart = function() { 
  instructions.text('Voice recognition activated. Try speaking into the microphone.');
}

recognition.onspeechend = function() {
  instructions.text('You were quiet for a while so voice recognition turned itself off.');
}

recognition.onerror = function(event) {
  if(event.error == 'no-speech') {
    instructions.text('No speech was detected. Try again.');  
  };
}
Ejemplo sencillo:

//Función llamada desde un boton
function SpeechRecog() {
    var output = document.getElementById("output"); ///input text donde se escribirá el texto
    var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition;
    var recognition = new SpeechRecognition();

    // This runs when the speech recognition service starts
    recognition.onstart = function() {};
    
    recognition.onspeechend = function() {
        recognition.stop();
    }
  
    // This runs when the speech recognition service returns result
    recognition.onresult = function(event) {
        var transcript = event.results[0][0].transcript;
        var confidence = event.results[0][0].confidence;
        output.value=transcript;
    };
  
     // start recognition
     recognition.start();
}


Os aconsejo el artículo Convertir textos a voz

Compartir en twitter