[英]How to get SpeechRecognizer to return non-English strings
我正在使用SpeechRecognizer
尝试找回一些德语字符串。 我正在传递Google Translate德语录音(例如,“你好吗?”->“ Wie geht es Ihnen?”)。
我已经看过几个关于如何更改语言以接受英语以外的东西的SO问题,但似乎没有一个可行。
在将设备的语言设置保持为英语(en-US)的同时,有人知道如何执行此操作吗?
仅当将设备的语言设置为“ de-DE”时,我才能成功取回德语字符串。
这是我的示例代码:
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
Button mSpeakBtn;
TextView mResultTextView;
SpeechRecognizer mSpeechRecognizer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Init Views
mSpeakBtn = (Button) findViewById(R.id.speak_btn);
mResultTextView = (TextView) findViewById(R.id.result_tv);
// Set click listener for button
mSpeakBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mResultTextView.setText("Speak now...");
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(getApplicationContext());
mSpeechRecognizer.setRecognitionListener(new RecognitionListener() {
@Override
public void onReadyForSpeech(Bundle params) {
}
@Override
public void onBeginningOfSpeech() {
}
@Override
public void onRmsChanged(float rmsdB) {
}
@Override
public void onBufferReceived(byte[] buffer) {
}
@Override
public void onEndOfSpeech() {
mResultTextView.setText("Processing...");
}
@Override
public void onError(int error) {
mResultTextView.setText("ERROR: " + error);
}
@Override
public void onResults(Bundle results) {
List<String> allWords = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
Log.d(TAG, "onResults:\t" + allWords.toString());
String result = allWords.get(0);
mResultTextView.setText("RESULT: '" + result + "'");
}
@Override
public void onPartialResults(Bundle partialResults) {
}
@Override
public void onEvent(int eventType, Bundle params) {
}
});
String locale = Locale.GERMANY.toString().replace("_", "-");
Log.d(TAG, "Locale:\t" + locale);
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, locale);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, locale);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication().getPackageName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
mSpeechRecognizer.startListening(intent);
}
});
}
}
我也只在这样做的地方尝试过:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, locale);
mSpeechRecognizer.startListening(intent);
但是结果是一样的-将德语发音转换为“英语”。
有指针吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.