Android语音识别器Vuzix M300

Android语音识别器Vuzix M300,android,speech-recognition,vuzix,Android,Speech Recognition,Vuzix,我有一个Vuzix m300(更新1.2),我正在尝试让我的应用程序运行语音控制。我真的找不到任何特定于m300的代码示例(我想是因为它是新的吗?)。内置的语音识别器工作正常。但当我尝试通过android.SpeechRecognitor使用它时,我发现识别功能不可用 我尝试了一些在互联网上找到的代码,尽管有些代码应该可以在m100上使用。对我来说什么都不管用 这是我的密码: protected void onCreate(Bundle savedInstanceState) {

我有一个Vuzix m300(更新1.2),我正在尝试让我的应用程序运行语音控制。我真的找不到任何特定于m300的代码示例(我想是因为它是新的吗?)。内置的语音识别器工作正常。但当我尝试通过android.SpeechRecognitor使用它时,我发现识别功能不可用

我尝试了一些在互联网上找到的代码,尽管有些代码应该可以在m100上使用。对我来说什么都不管用

这是我的密码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //grant access to internet
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        //set layout
        setContentView(R.layout.activity_main);    
        boolean b = SpeechRecognizer.isRecognitionAvailable(getApplicationContext());
        final List<ResolveInfo> services = getApplicationContext().getPackageManager().queryIntentServices(
                new Intent(RecognitionService.SERVICE_INTERFACE), 0);
        b = isPackageInstalled(this.getApplicationContext(), "com.google.android.googlequicksearchbox");
    }
    public static boolean isPackageInstalled(@NonNull final Context ctx, @NonNull final String packageName) {
        try {
            ctx.getApplicationContext().getPackageManager().getApplicationInfo(packageName, 0);
            return true;
        } catch (final PackageManager.NameNotFoundException e) {
            return false;
        }
其余的:

private RecognitionListener prepareRegnitionListener() {
    // TODO Auto-generated method stub
    return new RecognitionListener() {

        @Override
        public void onRmsChanged(float rmsdB) {
            //Didn´t use
        }

        @Override
        public void onResults(Bundle results) {
            ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
            Log.d(MainActivity,"Completed speech recognition: Result: " + matches);
            String match = matches.get(0);
        }

        @Override
        public void onReadyForSpeech(Bundle params) {
            Log.d(MainActivity, "ReadyforSpeech");
        }

        @Override
        public void onPartialResults(Bundle partialResults) {
            // Nothing

        }

        @Override
        public void onEvent(int eventType, Bundle params) {
            // Nothing

        }

        @Override
        public void onError(int error) {
            switch (error){
                case SpeechRecognizer.ERROR_AUDIO:
                    Log.e(MainActivity,"Failed to recognize speech: Audio recording error.");
                    startListening(1000);
                    break;
                case SpeechRecognizer.ERROR_CLIENT:
                    Log.e(MainActivity,"Failed to recognize speech: Insufficient permissions.");
                    startListening(1000);
                    break;
                case SpeechRecognizer.ERROR_NO_MATCH:

                    Log.d(MainActivity,"Failed to recognize speech: No recognition results matched. Retrying...");
                    startListening(1000);
                    break;
                default:
                    Log.e(MainActivity,"Failed to recognize speech. Unknown error" + error);
                    startListening(1000);

            }


        }

        @Override
        public void onEndOfSpeech() {
            Log.d(MainActivity, "EndofSpeech");
        }

        @Override
        public void onBufferReceived(byte[] buffer) {
            //Didn´t use

        }

        @Override
        public void onBeginningOfSpeech() {
            Log.d(MainActivity, "beginnofSpeech");//Do something when speaking starts
        }
    };
}
private RecognitionListener prepareRegionListener(){
//TODO自动生成的方法存根
返回新的RecognitionListener(){
@凌驾
在RMSCHANGED上的公共无效(浮动rmsdB){
//没有使用
}
@凌驾
公共结果(捆绑结果){
ArrayList matches=results.getStringArrayList(SpeechRecognitor.results\u RECOGNITION);
Log.d(MainActivity,“完成的语音识别:结果:“+匹配”);
字符串匹配=匹配。获取(0);
}
@凌驾
ReadyForSpeech上的公共void(Bundle参数){
Log.d(主要活动,“ReadyforSpeech”);
}
@凌驾
public void onPartialResults(Bundle partialResults){
//没什么
}
@凌驾
public void onEvent(int eventType,Bundle参数){
//没什么
}
@凌驾
公共无效onError(内部错误){
开关(错误){
case SpeechRecognizer.ERROR\u音频:
Log.e(MainActivity,“无法识别语音:音频录制错误”);
听讲(1000);
打破
案例SpeechRecognizer.ERROR\u客户端:
Log.e(MainActivity,“无法识别语音:权限不足”);
听讲(1000);
打破
case SpeechRecognizer.ERROR\u NO\u匹配:
Log.d(MainActivity,“无法识别语音:没有匹配的识别结果。正在重试…”);
听讲(1000);
打破
违约:
Log.e(MainActivity,“无法识别语音。未知错误”+错误);
听讲(1000);
}
}
@凌驾
公共无效onEndOfSpeech(){
日志d(主活动,“EndofSpeech”);
}
@凌驾
已接收公共无效onBufferReceived(字节[]缓冲区){
//没有使用
}
@凌驾
开始时的公共无效fSpeech(){
Log.d(MainActivity,“beginnofSpeech”);//开始讲话时做些什么
}
};
}

调用onReadyforSpeech方法,但之后什么都没有发生,然后抛出错误。

我不熟悉vuzix Android版本,但显然它没有您需要的Google软件包。我也有这个问题,我已经通过下载和安装谷歌应用程序和谷歌现在应用程序的apks解决了这个问题

您可以在这里尝试:


要以编程方式访问Vuzix内置语音识别,首先需要下载并安装M300 SDK。看

安装SDK后,Android SDK/add-ons/addon-vuzixm300sdk-vuzix-23/docs文件夹中有关于如何使用内置语音识别服务的文档。看


jar库(com.vuzix.sdk.speechrecognitionservice.jar)位于Android sdk/addons/addon-vuzixm300sdk-vuzix-23/libs文件夹中。

非常感谢,工作非常顺利。但是,难道没有一种方法可以使用内置的备受赞誉的“真正的免提”服务吗?我对此没有经验。但试试谷歌的“行动”\u“声音”\u“搜索”\u“双手”\u免费,这会让你找到一些关于它的帖子。我也在试用M300,我无法让Vuzix的语音识别功能发挥作用。“内置语音识别器工作正常”是什么意思?我试着从他们的网站上运行这个示例项目,它编译得很好,但由于缺少一些类,在运行时崩溃了。
private RecognitionListener prepareRegnitionListener() {
    // TODO Auto-generated method stub
    return new RecognitionListener() {

        @Override
        public void onRmsChanged(float rmsdB) {
            //Didn´t use
        }

        @Override
        public void onResults(Bundle results) {
            ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
            Log.d(MainActivity,"Completed speech recognition: Result: " + matches);
            String match = matches.get(0);
        }

        @Override
        public void onReadyForSpeech(Bundle params) {
            Log.d(MainActivity, "ReadyforSpeech");
        }

        @Override
        public void onPartialResults(Bundle partialResults) {
            // Nothing

        }

        @Override
        public void onEvent(int eventType, Bundle params) {
            // Nothing

        }

        @Override
        public void onError(int error) {
            switch (error){
                case SpeechRecognizer.ERROR_AUDIO:
                    Log.e(MainActivity,"Failed to recognize speech: Audio recording error.");
                    startListening(1000);
                    break;
                case SpeechRecognizer.ERROR_CLIENT:
                    Log.e(MainActivity,"Failed to recognize speech: Insufficient permissions.");
                    startListening(1000);
                    break;
                case SpeechRecognizer.ERROR_NO_MATCH:

                    Log.d(MainActivity,"Failed to recognize speech: No recognition results matched. Retrying...");
                    startListening(1000);
                    break;
                default:
                    Log.e(MainActivity,"Failed to recognize speech. Unknown error" + error);
                    startListening(1000);

            }


        }

        @Override
        public void onEndOfSpeech() {
            Log.d(MainActivity, "EndofSpeech");
        }

        @Override
        public void onBufferReceived(byte[] buffer) {
            //Didn´t use

        }

        @Override
        public void onBeginningOfSpeech() {
            Log.d(MainActivity, "beginnofSpeech");//Do something when speaking starts
        }
    };
}