Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 语音识别在Rmschanged上获得负值_Android_Listener_Speech Recognition_Speech To Text - Fatal编程技术网

Android 语音识别在Rmschanged上获得负值

Android 语音识别在Rmschanged上获得负值,android,listener,speech-recognition,speech-to-text,Android,Listener,Speech Recognition,Speech To Text,我在试着辨认声音。它工作,但几秒钟后,它会自动断开,并给出rms值-2.12。如果我们再次开始再检查,会给我一个例外: 这是我的主要活动 public class MainActivity extends Activity { private SpeechRecognizer mSpeechRecognizer; private Intent mSpeechRecognizerIntent; protected long mSpeechRecognizerStartListeningTime

我在试着辨认声音。它工作,但几秒钟后,它会自动断开,并给出rms值-2.12。如果我们再次开始再检查,会给我一个例外:

这是我的主要活动

public class MainActivity extends Activity {

private SpeechRecognizer mSpeechRecognizer;
private Intent mSpeechRecognizerIntent;
protected long mSpeechRecognizerStartListeningTime = 0;
TextView tvreconizetext;
Button speakButton;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    speakButton = (Button) findViewById(R.id.bSpeak);
    tvreconizetext = (TextView) findViewById(R.id.tvreconizetext);

    mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
    mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 100000);
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName());
    SpeechRecognitionListener listener = new SpeechRecognitionListener();
    mSpeechRecognizer.setRecognitionListener(listener);

    speakButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            mSpeechRecognizer.startListening(mSpeechRecognizerIntent);

        }
    });

}

@Override
protected void onDestroy() {
    super.onDestroy();

    if (mSpeechRecognizer != null) {
        mSpeechRecognizer.destroy();
    }
}

protected class SpeechRecognitionListener implements RecognitionListener {

    @Override
    public void onBeginningOfSpeech() {
        Log.e("tag", "onBeginningOfSpeech");
    }

    @Override
    public void onBufferReceived(byte[] buffer) {
        Log.e("tag", "onBufferReceived :" + buffer);
    }

    @Override
    public void onEndOfSpeech() {
        Log.e("tag", "onEndOfSpeech ");
    }

    @Override
    public void onError(int error) {

        if (mSpeechRecognizer != null) {
            mSpeechRecognizer.cancel();
            mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
        } else {
            mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
        }
        Log.e("tag", "onError :" + error);

    }

    @Override
    public void onEvent(int eventType, Bundle params) {
        Log.e("tag", "onEvent :" + eventType + "," + params);
    }

    @Override
    public void onPartialResults(Bundle partialResults) {
        Log.e("tag", "onPartialResults :" + partialResults);
    }

    @Override
    public void onReadyForSpeech(Bundle params) {
        Log.e("tag", "onReadyForSpeech :" + params);
    }

    @Override
    public void onResults(Bundle results) {

        ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
        Log.e("matches", "matches ::" + matches.get(0));
        tvreconizetext.setText(matches.get(0));
        mSpeechRecognizer.cancel();
        mSpeechRecognizer.startListening(mSpeechRecognizerIntent);

    }

    @Override
    public void onRmsChanged(float rmsdB) {
        Log.e("tag", "onRmsChanged :" + rmsdB);

    }
}

}
公共类MainActivity扩展活动{
私人语音识别器;
私人意图mSpeechRecognizerIntent;
受保护的长mSpeechRecognizerStartListeningTime=0;
text查看tvreconizetext;
按钮扬声器按钮;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
speakButton=(按钮)findViewById(R.id.bSpeak);
tvreconizetext=(TextView)findViewById(R.id.tvreconizetext);
mSpeechRecognizer=SpeechRecognizer.createSpeechRecognizer(this);
mSpeechRecognizerIntent=新意图(RecognizerIntent.ACTION\u recognizer\u SPEECH);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_语言_模型,
识别者意图、语言、模型、自由形式);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA\语音\输入\最小\长度\毫秒,100000);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_调用_包,this.getPackageName());
SpeechRecognitionListener=新建SpeechRecognitionListener();
mSpeechRecognizer.setRecognitionListener(listener);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
}
});
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
if(mSpeechRecognizer!=null){
mSpeechRecognizer.destroy();
}
}
受保护类SpeechRecognitionListener实现了RecognitionListener{
@凌驾
开始时的公共无效fSpeech(){
Log.e(“tag”、“onbeginingofspeech”);
}
@凌驾
已接收公共无效onBufferReceived(字节[]缓冲区){
Log.e(“tag”,“onBufferReceived:”+buffer);
}
@凌驾
公共无效onEndOfSpeech(){
Log.e(“tag”、“onEndOfSpeech”);
}
@凌驾
公共无效onError(内部错误){
if(mSpeechRecognizer!=null){
mSpeechRecognizer.cancel();
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
}否则{
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
}
Log.e(“标记”,“onError:+错误”);
}
@凌驾
public void onEvent(int eventType,Bundle参数){
Log.e(“tag”、“onEvent:+eventType+”、“+params”);
}
@凌驾
public void onPartialResults(Bundle partialResults){
Log.e(“标签”,“部分结果:”+partialResults);
}
@凌驾
ReadyForSpeech上的公共void(Bundle参数){
Log.e(“tag”,“onReadyForSpeech:+params”);
}
@凌驾
公共结果(捆绑结果){
ArrayList matches=results.getStringArrayList(SpeechRecognitor.results\u RECOGNITION);
Log.e(“matches”,“matches::”+matches.get(0));
tvronizetext.setText(matches.get(0));
mSpeechRecognizer.cancel();
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
}
@凌驾
在RMSCHANGED上的公共无效(浮动rmsdB){
Log.e(“标签”,“onRmsChanged:+rmsdB”);
}
}
}
这是我的活动_main.xml

<Button
    android:id="@+id/bSpeak"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Speak" />

<TextView
    android:id="@+id/tvreconizetext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/bSpeak"
    android:gravity="center"
    android:textSize="18sp" />

我还在清单中使用了“录制音频”权限

这是个例外

01-02 11:42:39.706:E/ChromiumNetwork(6713):上传异常 方法01-02 11:42:39.706:E/铬网络(6713): com.google.android.apps.gsa.shared.exception.GsaIOException:错误 代码:262182 01-02 11:42:39.706:E/ChromiumNetwork(6713):at com.google.android.apps.gsa.shared.io.y.abort(QueueDataSource.java:61) 01-02 11:42:39.706:E/铬网络(6713):at com.google.android.apps.gsa.search.core.i.l.abort(ackeredatasource.java:94) 01-02 11:42:39.706:E/铬网络(6713):at com.google.android.apps.gsa.search.core.i.a.a.e.a(MonitoredCronetRequest.java:169) 01-02 11:42:39.706:E/铬网络(6713):at com.google.android.apps.gsa.search.core.i.a.a.e.a(MonitoredCronetRequest.java:44) 01-02 11:42:39.706:E/铬网络(6713):at com.google.android.apps.gsa.search.core.i.a.a.e$2.a(MonitoredCronetRequest.java:271) 01-02 11:42:39.706:E/铬网络(6713):at org.chromium.net.CronetUrlRequest$2.run(CronetUrlRequest.java:579) 01-02 11:42:39.706:E/铬网络(6713):at com.google.android.apps.gsa.search.core.i.x$1.run(TaskRunnerScheduledExecutor.java:36) 01-02 11:42:39.706:E/铬网络(6713):at Executors$RunnableAdapter.call(Executors.java:390) 01-02 11:42:39.706:E/铬网络(6713):at java.util.concurrent.FutureTask.run(FutureTask.java:234)01-02 11:42:39.706:E/ChromiumNetwork(6713):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 01-02 11:42:39.706:E/铬网络(6713):at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 01-02 11:42:39.706:E/铬网络(6713):at java.lang.Thread.run(Thread.java:838)01-02 11:42:39.706: 电子/彩色网络(6713):at com.google.android.apps.gsa.shared.util.concurrent.a.q$1.run(GsaThreadFactory.java:118)


如何使用识别侦听器顺利识别语音。如果有人有想法,请分享。

您可能想提供您编写的代码。以及完整的异常stacktrace。感谢回复@NikolayShmyrev我已经更新了我的问题,请检查我需要无限时间进行语音识别,如果我在100秒内没有说话,那么它将停止,否则它需要工作我也尝试了你的库“pocketsphinx”,但没有成功:(