Ионное приложение не распознает речь в Android-мобиле

Я хотел спроектировать ионное приложение, которое слушает голосовые команды, следуя инструкциям здесь. Но приложение, похоже, распознает голосовые команды по микрофону, если они протестированы на моем компьютере, используя var recognition = new webkitSpeechRecognition(); //To Computer var recognition = new webkitSpeechRecognition(); //To Computer команде var recognition = new webkitSpeechRecognition(); //To Computer увидев это сообщение, я заменил команду на

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

Но это, похоже, не работает на моем устройстве Android. Кто-нибудь сталкивался с той же проблемой с SpeechRecognitionPlugin ? Пожалуйста, поделитесь своими мыслями и отзывами … Спасибо

Наконец удалось взломать его. Трюк заключался в том, чтобы добавить плагин media cordova .

Рабочий код выглядит следующим образом:

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

Обходной путь тайм-аута для меня не работает. Тем не менее, я заметил, что я получаю почти 100% результаты, если я говорю НЕМЕДЛЕННО после звукового сигнала. Я добавил приглашение пользователю, если слова не найдены.

Вот пример, основанный на моем подходе:

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