我一直在研究不同的线程,但是没有发现任何对我遇到的问题有用的东西.我想摆脱语音识别开始时发出的“哔”声.我正在使用Jelly Bean 4.2.2,因此不确定在早期版本中是否存在相同的问题,如果我也想解决此问题.另外,我想知道是否有人对如何响应某些语音识别结果提出建议.请让我知道我的代码如何即兴包含这些功能.
package com.example.speech;import java.util.ArrayList;import androID.media.AudioManager;import androID.os.Build;import androID.os.Bundle;import androID.os.CountDownTimer;import androID.app.Activity;import androID.content.Intent;import androID.speech.RecognitionListener;import androID.speech.RecognizerIntent;import androID.speech.SpeechRecognizer;import androID.vIEw.Menu;import androID.vIEw.VIEw.OnClickListener;import androID.vIEw.VIEw;import androID.Widget.ArrayAdapter;import androID.Widget.button;import androID.Widget.ListVIEw;import androID.util.Log;public class MainActivity extends Activity implements OnClickListener {ListVIEw lv;private SpeechRecognizer mSpeechRecognizer;private Intent mSpeechRecognizerIntent; boolean reseter = false;private AudioManager mAudioManager;private volatile boolean mNoSpeechCountDownOn;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); boolean available = SpeechRecognizer.isRecognitionAvailable(this); Log.d("Speech", "available = " + available); mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this); mSpeechRecognizer.setRecognitionListener(new SpeechListener()); mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALliNG_PACKAGE, this.getPackagename()); mAudioManager = (AudioManager) getSystemService(this.AUdio_SERVICE); commandA();}private CountDownTimer mNoSpeechCountDown = new CountDownTimer(5000, 5000){ @OverrIDe public voID onTick(long millisUntilFinished) { } @SuppressWarnings("synthetic-access") @OverrIDe public voID onFinish() { mNoSpeechCountDownOn = false; mSpeechRecognizer.cancel(); mSpeechRecognizer.startListening(mSpeechRecognizerIntent); }};@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true;}private class SpeechListener implements RecognitionListener { @OverrIDe public voID onBeginningOfSpeech() { if (mNoSpeechCountDownOn) { mNoSpeechCountDownOn = false; mNoSpeechCountDown.cancel(); } Log.d("Speech", "onBeginningOfSpeech"); } @OverrIDe public voID onBufferReceived(byte[] buffer) { Log.d("Speech", "onBufferReceived"); } @OverrIDe public voID onEndOfSpeech() { Log.d("Speech", "onEndOfSpeech"); } @OverrIDe public voID one rror(int error) { if (mNoSpeechCountDownOn) { mNoSpeechCountDownOn = false; mNoSpeechCountDown.cancel(); } Log.d("Speech", "onError"); } @OverrIDe public voID onEvent(int eventType, Bundle params) { Log.d("Speech", "onEvent"); } @OverrIDe public voID onPartialResults(Bundle partialResults) { Log.d("Speech", "onPartialResults"); } @OverrIDe public voID onReadyForSpeech(Bundle params) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { mNoSpeechCountDownOn = true; mNoSpeechCountDown.start(); mAudioManager.setStreamMute(AudioManager.STREAM_SYstem, false); } Log.d("Speech", "onReadyForSpeech"); try { Thread.sleep(4900); } catch (InterruptedException e) { mSpeechRecognizer.startListening(mSpeechRecognizerIntent); mAudioManager.setStreamMute(AudioManager.STREAM_SYstem, true); Log.d("speech", "Mute on"); } } @OverrIDe public voID onResults(Bundle results) { Log.d("Speech", "results"); ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESulTS_RECOGNITION); // Do whatever you want here try { Thread.sleep(1); } catch (InterruptedException e) { mSpeechRecognizer.startListening(mSpeechRecognizerIntent); mAudioManager.setStreamMute(AudioManager.STREAM_SYstem, true); Log.d("speech", "Mute on"); } } @OverrIDe public voID onRmsChanged(float rmsdB) { //Log.d("Speech", "onRmsChanged"); }}@OverrIDepublic voID onClick(VIEw v) { // Todo auto-generated method stub} }
解决方法:
public class MainActivity extends Activity implements OnClickListener {ListVIEw lv;private SpeechRecognizer mSpeechRecognizer;private Intent mSpeechRecognizerIntent; boolean reseter = false;private AudioManager mAudioManager;OverrIDeprotected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);lv = (ListVIEw)findVIEwByID(R.ID.lvVoiceReturn);button b= (button)findVIEwByID(R.ID.bVoice);b.setonClickListener(this);boolean available = SpeechRecognizer.isRecognitionAvailable(this);Log.d("Speech", "available = " + available);mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);mSpeechRecognizer.setRecognitionListener(new SpeechListener());mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALliNG_PACKAGE, this.getPackagename());mAudioManager = (AudioManager) getSystemService(Context.AUdio_SERVICE);}private CountDownTimer mNoSpeechCountDown = new CountDownTimer(5000, 5000){ @OverrIDe public voID onTick(long millisUntilFinished) { } @SuppressWarnings("synthetic-access") @OverrIDe public voID onFinish() { mNoSpeechCountDownOn = false; mSpeechRecognizer.cancel(); mSpeechRecognizer.startListening(mSpeechRecognizerIntent); }};@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@OverrIDepublic voID onClick(VIEw v) { // Todo auto-generated method stub`Log.d("speech", "button active");mSpeechRecognizer.startListening(mSpeechRecognizerIntent);mAudioManager.setStreamMute(AudioManager.STREAM_SYstem, true);}private class SpeechListener implements RecognitionListener {@OverrIDepublic voID onBeginningOfSpeech() { if (mNoSpeechCountDownOn) { mNoSpeechCountDownOn = false; mNoSpeechCountDown.cancel(); } Log.d("Speech", "onBeginningOfSpeech");}@OverrIDepublic voID onBufferReceived(byte[] buffer) { Log.d("Speech", "onBufferReceived");}@OverrIDepublic voID onEndOfSpeech() { Log.d("Speech", "onEndOfSpeech");}@OverrIDepublic voID one rror(int error) { if (mNoSpeechCountDownOn) { mNoSpeechCountDownOn = false; mNoSpeechCountDown.cancel(); } Log.d("Speech", "onError");}@OverrIDepublic voID onEvent(int eventType, Bundle params) { Log.d("Speech", "onEvent");}@OverrIDepublic voID onPartialResults(Bundle partialResults) { Log.d("Speech", "onPartialResults");}@OverrIDepublic voID onReadyForSpeech(Bundle params) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { mNoSpeechCountDownOn = true; mNoSpeechCountDown.start(); mAudioManager.setStreamMute(AudioManager.STREAM_SYstem, false); } Log.d("Speech", "onReadyForSpeech");}@OverrIDepublic voID onResults(Bundle results) { Log.d("Speech", "results"); ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESulTS_RECOGNITION); // Do whatever you want here}@OverrIDepublic voID onRmsChanged(float rmsdB) { //Log.d("Speech", "onRmsChanged");}}}
总结 以上是内存溢出为你收集整理的语音识别中的果冻豆蜂鸣声全部内容,希望文章能够帮你解决语音识别中的果冻豆蜂鸣声所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)