SpeechRecognizer:没有选定的语音识别服务

Mar*_*tis 4 java android speech-recognition speech-to-text

这就是我启动我的RecogniseListener意图的方法:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);   
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

intent.putExtra("android.speech.extra.DICTATION_MODE", true);               
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,this.getPackageName());
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,1);
sr.startListening(intent);
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个奇怪的行为.它适用于某些手机(三星galaxy S5,在这种情况下),但我在联想K50-T5上收到以下错误:

E/SpeechRecognizer: no selected voice recognition service
Run Code Online (Sandbox Code Playgroud)

这是我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="lips.deafcommunication.deaflips">

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppThemeNoBar">
    <activity android:name=".MainActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".ChatInProgressActivity" android:screenOrientation="portrait"
                android:windowSoftInputMode="adjustPan"
                android:configChanges="keyboardHidden|orientation|screenSize"
        ></activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

Ham*_*mza 7

在我的情况下,用户设备的这个警告案例,如果他/她没有默认选择语音识别器服务,这里是设置照片设置这个问题,你在照片中看到没有默认选择的服务,

在此输入图像描述

通过明确添加 GoogleRecognitionService到我的问题来解决这个问题,SpeechRecognizer最后我的代码看起来像这个

 this.speechRecognizer = SpeechRecognizer.createSpeechRecognizer(getActivity(), ComponentName.unflattenFromString("com.google.android.googlequicksearchbox/com.google.android.voicesearch.serviceapi.GoogleRecognitionService"));
Run Code Online (Sandbox Code Playgroud)

所以你的代码看起来像你使用默认的语音意图,在这里制作你自己的自定义识别器是链接到我如何使用语音识别没有在Android手机中烦人的对话框

注意:确保您已安装Google应用


小智 6

该错误表明没有可用的语音识别器服务。您应该在调用 SpeechRecognizer.createSpeechRecognizer 之前测试此条件。

import android.speech;

if(SpeechRecognizer.isRecognitionAvailable(this)) {
    SpeechRecognizer sr = SpeechRecognizer.createSpeechRecognizer(this);
} else {
    // SOME SORT OF ERROR
}
Run Code Online (Sandbox Code Playgroud)


Gab*_*han 5

这意味着用户根本没有安装语音识别器,或者没有配置运行语音识别器.你无法解决这个问题,用户必须安装一个.