Ion application does not recognize speech on Android mobile phone

I wanted to create an ionic application that listens to voice commands, following the instructions here. But the application seems to recognize voice commands by microphone if they are tested on my computer using the var recognition = new webkitSpeechRecognition(); //To Computer var recognition = new webkitSpeechRecognition(); //To Computer . But seeing this post , I replaced the command

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

But this does not seem to work on my Android device. Has anyone come across the same issue with SpeechRecognitionPlugin ? Please share your thoughts and feedback ... Thank you

+3
source share
2 answers

Finally, he can hack. The trick was to add the media cord plugin .

The working code is as follows:

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(); }); } 
+1
source

The timeout workaround doesn't work for me. However, I noticed that I get almost 100% of the results if I speak IMMEDIATELY after a beep. I added an invitation to the user if no words were found.

Here is an example based on my approach:

 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(); } } 
+2
source

All Articles