gpt4 book ai didi

java - 将语音识别限制为字母数字词

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:01 26 4
gpt4 key购买 nike

我想使用语音识别来处理我的应用程序中的命令。我知道在我的应用程序中的任何给定点,有效命令是什么在这一点上,所以想限制语音识别的结果匹配。

我的意思是在我的应用程序中..有效的单词只是数字加字母。我的意思是像 A13FG6 这样的数字。

我愿意喜欢能够将语音识别限制为仅尝试与 alphaNumeric 匹配单词.. 限制词汇量会增加其成功的机会..

我如何修改给定的代码来满足我的要求

提前致谢..

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

private TextView mText;
private SpeechRecognizer sr;
private static final String TAG = "MyStt3Activity";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button speakButton = (Button) findViewById(R.id.btn_speak);
mText = (TextView) findViewById(R.id.textView1);

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
getClass().getPackage().getName());

SpeechRecognizer recognizer = SpeechRecognizer
.createSpeechRecognizer(this.getApplicationContext());
RecognitionListener listener = new RecognitionListener() {
@Override
public void onResults(Bundle results) {
ArrayList<String> voiceResults = results
.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
if (voiceResults == null) {
Log.e(TAG, "No voice results");
} else {
Log.d(TAG, "Printing matches: ");
for (String match : voiceResults) {
Log.d(TAG, match);
mText.setText("results: " + match);
}
}
}

@Override
public void onReadyForSpeech(Bundle params) {
Log.d(TAG, "Ready for speech");
}

@Override
public void onError(int error) {
Log.d(TAG,
"Error listening for speech: " + error);
}

@Override
public void onBeginningOfSpeech() {
Log.d(TAG, "Speech starting");
}

@Override
public void onBufferReceived(byte[] buffer) {
// TODO Auto-generated method stub

}

@Override
public void onEndOfSpeech() {
// TODO Auto-generated method stub

}

@Override
public void onEvent(int eventType, Bundle params) {
// TODO Auto-generated method stub

}

@Override
public void onPartialResults(Bundle partialResults) {
// TODO Auto-generated method stub

}

@Override
public void onRmsChanged(float rmsdB) {
// TODO Auto-generated method stub

}
};
recognizer.setRecognitionListener(listener);
recognizer.startListening(intent);


/* speakButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

Intent intent = new Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
// intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
getClass().getPackage().getName());

intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
sr.startListening(intent);

// startActivityForResult(intent, 1010);
Log.i("111111", "11111111");
}
});*/
}
}

最佳答案

Android Speech API 不能限制识别,它不支持语法。但是,您可以尝试 CMUSphinx .请参阅链接下的示例,您可以定义一个仅使用字母数字的语法,它将离线工作,因此响应会非常快,您也可以调整最佳匹配的准确性。

关于java - 将语音识别限制为字母数字词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23890907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com