3

目前我正在制作一个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): 在此处输入图像描述

提前致谢

4

2 回答 2

2

不是你的错,SpeechRecognizer.java里面有一个错误。

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

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

于 2013-05-27T19:40:29.693 回答
1

有一些问题。首先,SDK 版本不对。如果您使用新的cordova,您还必须使用最新版本的插件。此版本需要 SDK 15 或更高版本。(安卓清单-> <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17" />)。之后,由于某种原因,插件 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 的好建议。

于 2013-04-17T10:44:06.230 回答