📅  最后修改于: 2023-12-03 15:24:26.756000             🧑  作者: Mango
在Android开发中,将语音转换为文本是很常见的一个需求,比如语音输入、语音搜索等等。Android提供了自带的语音识别功能,可以非常方便地进行语音转换为文本。本文将介绍如何在Android中使用自带的语音识别功能将语音转换为文本。
首先,需要在AndroidManifest.xml
中添加一下权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
其中,RECORD_AUDIO
权限用于录制语音,INTERNET
权限用于连接Google服务器进行语音识别。
Android提供了RecognizerIntent
类来创建语音识别的意图。以下是一个简单的示例:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "请说话...");
startActivityForResult(intent, REQUEST_CODE);
其中:
ACTION_RECOGNIZE_SPEECH
是语音识别的行为。EXTRA_LANGUAGE_MODEL
指定语言模型,这里使用LANGUAGE_MODEL_FREE_FORM
表示自由形式的语音识别。EXTRA_PROMPT
用于设置提示信息,可以根据需要自定义。startActivityForResult
方法用于启动语音识别意图。当语音识别完成后,会将结果返回给调用者。因此需要在onActivityResult
方法中处理语音识别结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if (results != null && results.size() > 0) {
String result = results.get(0);
// 处理识别结果
}
}
super.onActivityResult(requestCode, resultCode, data);
}
其中:
RESULT_OK
表示语音识别成功。EXTRA_RESULTS
是返回的识别结果,是一个String类型的ArrayList。以下是一个完整的示例,用于将语音转换为文本,然后显示在TextView中:
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 1001;
private Button mBtnStart;
private TextView mTvResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnStart = findViewById(R.id.btn_start);
mTvResult = findViewById(R.id.tv_result);
mBtnStart.setOnClickListener(new View.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_PROMPT, "请说话...");
startActivityForResult(intent, REQUEST_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if (results != null && results.size() > 0) {
String result = results.get(0);
mTvResult.setText(result);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
}
使用Android自带的语音识别功能,可以非常方便地将语音转换为文本。在实际开发中,可以根据需要进行进一步封装,提供更加灵活的语音输入方式。