5

Volevo progettare un'app ionica che ascolta i comandi vocali seguendo il tutorial here Ma l'app sembra riconoscere i comandi vocali tramite il microfono se testato sul mio computer usando il comando var recognition = new webkitSpeechRecognition(); //To Computer .ma nel vedere questo post ho sostituito il comando perIonica non riconosce il parlato in Android mobile

var recognition = new SpeechRecognition(); // To Device

Ma questo doesnt sembra funzionare sul mio dispositivo Android .. qualcuno ha affrontato lo stesso problema con SpeechRecognitionPlugin? Si prega di condividere i vostri pensieri e recensioni ... Grazie

+0

Qualcuno ha preso a lavorare su Android Marshmallow? Mi sono bloccato anche con lo stesso problema ma non utilizzando Ionic anche se – Gandhi

+0

ho pubblicato il codice che ho testato su dispositivo Android 6. Dagli un colpo dopo aver aggiunto il plug-in Cordova Media. – Gandhi

+0

L'aggiunta del plug-in multimediale non funziona per me! Qualche altra soluzione? – vohrahul

risposta

1

Finalmente in grado di crack. Il trucco era aggiungere cordova media plugin.

Il codice di lavoro è la seguente:

index.html

<!DOCTYPE html> 
<html> 
    <head>   
     <meta name="format-detection" content="telephone=no"> 
     <meta name="msapplication-tap-highlight" content="no"> 
     <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 
     <link rel="stylesheet" type="text/css" href="css/index.css"> 
     <title>Speech Recognition</title> 
    </head> 
    <body>  
     <br> 
     <br> 
     <br> 
     <br> 
     <br> 
     <br> 
     <br> 
     <br> 
     <form> 
     Click to speak <input type="button" value="speak" name="Download" id="speak" /> <br> 
     <input type="text" id="q" name="q" size=60> 
     </form> 

     <script type="text/javascript" src="js/jquery.js"></script> 
     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="js/app.js"></script> 
    </body> 
</html> 

app.js

$(document).ready(function() { 
    document.addEventListener("deviceready", onDeviceReady, false); 
}); 

var recognition; 
function onDeviceReady() { 

    $('#speak').click(function() { 
     recognition = new SpeechRecognition();   
     recognition.onresult = function(event) { 
      if (event.results.length > 0) { 
       console.log(event.results[0][0].transcript);     
       q.value = event.results[0][0].transcript; 
      } 
     };  
     recognition.start(); 
    }); 
} 
2

Il timeout soluzione non funziona per me. Tuttavia, ho notato che ottengo risultati quasi al 100% se parlo IMMEDIATAMENTE dopo il segnale acustico. Ho aggiunto un messaggio all'utente se non sono state trovate parole.

Ecco un esempio in base alla mia approccio:

var recording = false; 
var spokenInput = ''; 

function startRecognition() { 
    if (!recording) { 

     recording = true; 
     spokenInput = ''; 

     var recognition = new SpeechRecognition(); 

     recognition.onresult = function(event) { 
      if (event.results.length > 0) { 
       spokenInput = event.results[0][0].transcript; 
      } 
     }; 

     recognition.onend = function() { 
      recording = false; 
      if (spokenInput) { 
       alert(spokenInput); 
      } else { 
       alert('For best results, try speaking immediately after the beep!'); 
      } 
     }; 

     setTimeout(function() { 
      recognition.stop(); 
     }, 6000); // Force stop after 6 seconds 

     recognition.start(); 

    } 
} 
+0

Ancora non sono in grado di registrare la mia voce al telefono. Penso che sia il problema con var recognition = new SpeechRecognition(); – forgottofly

+0

@forgottofly Ho dimenticato di aggiungere il metodo di avvio. Fisso. – lincolnberryiii

Problemi correlati