在Android上语音转文字

我正在寻找一个具有语音转文字功能的应用程序。

我知道使用RecognizerIntent的这种能力:http : //android-

developers.blogspot.com/search/label/Speech%20Input

但是-我不希望弹出新的Intent,我想对当前应用程序中的某些点进行分析,并且我不希望它弹出某些内容以表明它当前正在尝试记录您的声音。

有谁对如何最好地做到这一点有任何想法。我可能正在考虑尝试Sphinx 4-但我不知道它是否能够在Android上运行-有没有人得到任何建议或经验?

我想知道是否可以更改此处的代码,以免打扰显示UI或按钮,而只进行处理:http

//developer.android.com/resources/samples/ApiDemos/src/com/example/android/

apis / app /VoiceRecognition.html

干杯,

回答:

如果您不想使用RecognizerIntent进行语音识别,则仍然可以使用SpeechRecognizer该类来进行语音识别。但是,使用该类比使用意图要难一些。最后一点,我强烈建议让用户知道他何时被记录,否则,当他最终发现时,他可能会非常适应。

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,

"com.domain.app");

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

System.out.println("No voice results");

} else {

System.out.println("Printing matches: ");

for (String match : voiceResults) {

System.out.println(match);

}

}

}

@Override

public void onReadyForSpeech(Bundle params) {

System.out.println("Ready for speech");

}

/**

* ERROR_NETWORK_TIMEOUT = 1;

* ERROR_NETWORK = 2;

* ERROR_AUDIO = 3;

* ERROR_SERVER = 4;

* ERROR_CLIENT = 5;

* ERROR_SPEECH_TIMEOUT = 6;

* ERROR_NO_MATCH = 7;

* ERROR_RECOGNIZER_BUSY = 8;

* ERROR_INSUFFICIENT_PERMISSIONS = 9;

*

* @param error code is defined in SpeechRecognizer

*/

@Override

public void onError(int error) {

System.err.println("Error listening for speech: " + error);

}

@Override

public void onBeginningOfSpeech() {

System.out.println("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);

重要说明:从UI线程运行此代码,并确保您具有必需的权限。

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

以上是 在Android上语音转文字 的全部内容, 来源链接: utcz.com/qa/425805.html

回到顶部