【问题标题】:Start speech recognizer on Android using Phonegap使用 Phonegap 在 Android 上启动语音识别器
【发布时间】:2013-05-28 04:15:28
【问题描述】:

目前我正在制作一个 Phonegap 应用程序。 我想将增强现实与语音输入结合起来。 Phonegap 有一个名为 SpeechRecognizer 的插件,但我无法让它工作。

我的标题:

<script type="text/javascript" src="cordova-2.6.0.js"></script>
    <script type="text/javascript" src="SpeechRecognizer.js"></script>
    <script type="text/javascript" charset="utf-8">
        document.addEventListener("deviceready", onDeviceReady, false);

        function speechOk() {
            alert('speech works');
        }

        function speechFail() {
            alert("speech doesn't work");
        }

        function onDeviceReady() {
            window.plugins.speechrecognizer.init(speechOk, speechFail);
        }

        $("#micButton").bind("touchstart", function() {     
            var requestCode = 4815162342;
            var maxMatches = 1;
            var promptString = "What do you want?";
            window.plugins.speechrecognizer.startRecognize(speechOk, speechFail, requestCode, maxMatches, promptString);
        });
    </script>

项目图片(config.xml):

提前致谢

【问题讨论】:

  • 我按照 github repo 上的 readme.md 让它工作得很好。你确定所有的拼写都正确吗?最初我遇到了麻烦,因为我将其输入错误为 speechRecgonizer。另外...您的设备上有语音识别器应用程序吗?它在 Nexus7 上对我有用,但在没有语音识别器应用程序的旧设备上,它失败了。如果你在onDeviceReady() 中执行console.log(window.plugins.speechrecognizer) 会发生什么?最后,你的日志说了什么?
  • 这很奇怪。我无法让它工作。我的控制台日志:“Uncaught TypeError: Cannot read property 'speechrecognizer' of undefined” 你的意思是什么:你的设备上有语音识别器应用程序吗?我有一个 Sony Xperia Z (android 4.1.2) 所以这不会是问题吧?
  • 我已在 android manifest 中将 min sdk 版本更改为 15,现在我不再收到任何控制台错误,但现在它根本没有记录任何内容。

标签: javascript android cordova speech-recognition


【解决方案1】:

不是你的错,SpeechRecognizer.java 里面有 bug。

我遇到了同样的问题,我只是用旧版本(如2.0.0)替换Speech Recognizer插件解决了它,你可以从github下载它。

它对我有用 Phonegap 2.5.0,猜猜它适用于 2.6.0

【讨论】:

    【解决方案2】:

    有一些问题。 首先,SDK 版本不对。如果您使用新的cordova,您还必须使用最新版本的插件。此版本需要 SDK 15 或更高版本。 (安卓清单 -> &lt;uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17" /&gt;)。 之后,由于某种原因,插件 init 没有返回任何内容。 我刚刚触发了:window.plugins.speechrecognizer.startRecognize();单击按钮时函数,它就会执行。

    javascript(此代码需要 jQuery):

        $("#micButton").bind("touchstart", function() {        
            var requestCode = 4815162342;
            var maxMatches = 1;
            var promptString = "What do you want?";
            window.plugins.speechrecognizer.startRecognize(speechOk, speechFail, requestCode, maxMatches, promptString);
        });
    
        function speechOk(result) {
            var match, respObj;
            if (result) {
                respObj = JSON.parse(result);
                if (respObj) {
                    var response = respObj.speechMatches.speechMatch[0];
                    $("#searchField").val(response);
                    $("#searchButton").trigger("touchstart");
                } 
            }
        }
    
        function speechFail(m) {
            navigator.notification.alert("Sorry, I couldn't recognize you.", function() {}, "Speech Fail");
        }
    

    '#micButton' 是您必须按下才能启动 android 语音识别的按钮

    '#searchField' 是一个输入字段,从语音识别中获取结果

    感谢 MrBillau 的好建议。

    【讨论】:

    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多