语音识别onRmsChanged得到的值为负数。

问题描述 投票:4回答:1

我正在尝试识别语音。它的工作,但几秒钟后,它自动断开,并给出了 "我的声音"。均值 -2.12. 如果我们再次开始重建,它给我一个异常。

这里是我的MainActivity.class,

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);

    }
}

}

下面是我的activity_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" />

我还在Manifest中使用了 "RECORD_AUDIO "权限。

这里是异常

01-02 11:42:39.706: EChromiumNetwork(6713): 上传方法出现异常 01-02 11:42:39.706: EChromiumNetwork(6713): com.google.android.app.gsa.shared.exception.GsaIOException: 错误代码。262182 01-02 11:42:39.706: EChromiumNetwork(6713): at com.google.android.app.gsa.shared.io.y.abort(QueueDataSource.java:61) 01-02 11:42:39.706: EChromiumNetwork(6713): at com.google.android.app. gsa.search.core.i.l.abort(EagerDataSource.java:94) 01-02 11:42:39.706: EChromiumNetwork(6713): at com.google.android.app.gsa.search.core.i.a.a.e.a(MonitoredCronetRequest.java:169) 01-02 11:42:39. 706: EChromiumNetwork(6713): at com.google.android.app.gsa.search.core.i.a.e.a(MonitoredCronetRequest.java:44) 01-02 11:42:39.706: EChromiumNetwork(6713): at com.google.android.app.gsa.search.core.i.a. a.e$2.a(MonitoredCronetRequest.java:271) 01-02 11:42:39.706: EChromiumNetwork(6713): at org.chromium.net.CronetUrlRequest$2.run(CronetUrlRequest.java:579) 01-02 11:42:39.706: EChromiumNetwork(6713): at com. google.android.app.gsa.search.core.i.x$1.run(TaskRunnerScheduledExecutor.java:36) 01-02 11:42:39.706: EChromiumNetwork(6713): at java.util.concurrent.Executors$RunnableAdapter.call(Executors. java:390) 01-02 11:42:39.706: EChromiumNetwork(6713): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 01-02 11:42:39.706: EChromiumNetwork(6713): at java.util.concurrent.ThreadPoolExecutor. runWorker(ThreadPoolExecutor.java:1080) 01-02 11:42:39.706: EChromiumNetwork(6713): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 01-02 11:42:39. 706: EChromiumNetwork(6713): at java.lang.Thread.run(Thread.java:838) 01-02 11:42:39.706: EChromiumNetwork(6713): at com.google.android.app.gsa.shared.util.concurrent.a.q$1.run(GsaThreadFactory.java:118)

如何能用识别听筒顺利识别语音。如果有人有想法请分享。

android listener speech-recognition speech-to-text
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.