Android 中的离线语音识别
Offline Speech Recognition in Android
我在 Whosebug 上搜索了很多关于这个问题的信息,但线程已经超过 3 年了。
我实现了 Google Voice Recognition
,它需要 Internet 连接。搜索如何使用 Offline Voice Recognition
没有成功。
现在可以在离线时使用 Voice Recognition
吗?
我的代码:
speechStartButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
promtSpeechInput();
}
});
private void promtSpeechInput() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
"Recording...");
try {
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
} catch (ActivityNotFoundException e) {
Toast.makeText(getApplicationContext(), "Language not supported", Toast.LENGTH_SHORT).show();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CAMERA_PIC_REQUEST: {
try {
Bitmap image = (Bitmap) data.getExtras().get("data");
ImageView imageView = (ImageView) findViewById(R.id.taskPhotoImage);
imageView.setImageBitmap(image);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
case REQ_CODE_SPEECH_INPUT: {
if(resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
speechToTextField.setText(speechToTextField.getText()+" " +result.get(0));
}
break;
}
}
}
国王问候
不适用于 Google。
您必须使用其他解决方案,例如 CMU Sphinx。
在这里查看:Android: Speech Recognition without using google server
实际上您可以离线使用 SpeechRecognizer。
- 转到设置 -> “语言和输入法”
- 从“键盘和输入法”部分选择键盘并启用“Google语音输入”
- 返回上一屏幕“语言和输入”,您将看到“Google 语音输入”已启用。
- 点击“离线语音识别”。
- 下载语言。
- 现在您应该可以在离线模式下使用 Speech To Text。
问题在于,如果不使用循环,它就不是连续的,并且由于持续不断的哔哔声,将循环与 SpeechRecognizer 一起使用绝对令人讨厌。有很多方法可以解决蜂鸣声,但大多数方法都可以使蜂鸣声和与蜂鸣声相同的音频流上的所有内容静音。
在步骤中还提到,您还必须下载 "Google Voice Typing" 和一种语言,它会占用更多存储空间 space。总的来说,您可以离线使用 SpeechRecognizer,但这很麻烦。
我在 Whosebug 上搜索了很多关于这个问题的信息,但线程已经超过 3 年了。
我实现了 Google Voice Recognition
,它需要 Internet 连接。搜索如何使用 Offline Voice Recognition
没有成功。
现在可以在离线时使用 Voice Recognition
吗?
我的代码:
speechStartButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
promtSpeechInput();
}
});
private void promtSpeechInput() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
"Recording...");
try {
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
} catch (ActivityNotFoundException e) {
Toast.makeText(getApplicationContext(), "Language not supported", Toast.LENGTH_SHORT).show();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CAMERA_PIC_REQUEST: {
try {
Bitmap image = (Bitmap) data.getExtras().get("data");
ImageView imageView = (ImageView) findViewById(R.id.taskPhotoImage);
imageView.setImageBitmap(image);
} catch (NullPointerException e) {
e.printStackTrace();
}
}
case REQ_CODE_SPEECH_INPUT: {
if(resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
speechToTextField.setText(speechToTextField.getText()+" " +result.get(0));
}
break;
}
}
}
国王问候
不适用于 Google。
您必须使用其他解决方案,例如 CMU Sphinx。 在这里查看:Android: Speech Recognition without using google server
实际上您可以离线使用 SpeechRecognizer。
- 转到设置 -> “语言和输入法”
- 从“键盘和输入法”部分选择键盘并启用“Google语音输入”
- 返回上一屏幕“语言和输入”,您将看到“Google 语音输入”已启用。
- 点击“离线语音识别”。
- 下载语言。
- 现在您应该可以在离线模式下使用 Speech To Text。
问题在于,如果不使用循环,它就不是连续的,并且由于持续不断的哔哔声,将循环与 SpeechRecognizer 一起使用绝对令人讨厌。有很多方法可以解决蜂鸣声,但大多数方法都可以使蜂鸣声和与蜂鸣声相同的音频流上的所有内容静音。
在步骤中还提到,您还必须下载 "Google Voice Typing" 和一种语言,它会占用更多存储空间 space。总的来说,您可以离线使用 SpeechRecognizer,但这很麻烦。