新版Android Studio接入百度语音识别转文字流程
Android Studio集成百度语音识别SDK流程摘要
·
新版Android Studio接入百度语音识别转文字流程
1.创建应用
在语音技术页面创建应用
选择功能
填写你创建的应用包名
2.下载SDK
下载SDK

3.导入模块
将下载好的例程解压
复制出里面的core
导入core
修改bulid.gradle.kt(app)
修改core里的build.gradle
然后重新构建,完成后如下
先运行一遍以防报错!!!
4.参考代码编写
所有代码均为claude-3.5编写
RecognizerManager.java工具方法
package com.example.rk3568_music.baidu;
import android.content.Context;
import android.util.Log;
import com.baidu.speech.EventListener;
import com.baidu.speech.EventManager;
import com.baidu.speech.EventManagerFactory;
import com.baidu.speech.asr.SpeechConstant;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class RecognizerManager {
private static final String TAG = "RecognizerManager";
private static final String APP_ID = "你的ID";
private static final String APP_KEY = "你的KEY";
private static final String SECRET_KEY = "你的KEY";
private final EventManager asr;
private final RecognitionListener recognitionListener;
private final EventListener eventListener;
public interface RecognitionListener {
void onResult(String result);
void onError(String error);
}
public RecognizerManager(Context context, RecognitionListener listener) {
this.recognitionListener = listener;
this.asr = EventManagerFactory.create(context, "asr");
this.eventListener = (name, params, data, offset, length) -> handleEvent(name, params);
initRecognizer();
}
private void initRecognizer() {
try {
asr.registerListener(eventListener);
Log.i(TAG, "语音识别引擎初始化成功");
} catch (Exception e) {
Log.e(TAG, "初始化语音识别引擎失败: " + e.getMessage());
recognitionListener.onError("初始化语音识别引擎失败: " + e.getMessage());
}
}
private void handleEvent(String eventName, String params) {
if (params == null || params.isEmpty()) return;
try {
JSONObject json = new JSONObject(params);
Log.i(TAG, "Event: " + eventName + ", Params: " + params);
switch (eventName) {
case SpeechConstant.CALLBACK_EVENT_ASR_READY:
Log.i(TAG, "引擎就绪,可以开始说话");
break;
case SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL:
handlePartialResult(json);
break;
case SpeechConstant.CALLBACK_EVENT_ASR_FINISH:
handleFinishResult(json);
break;
case SpeechConstant.CALLBACK_EVENT_ASR_ERROR:
String errorMsg = json.optString("desc", "未知错误");
Log.e(TAG, "识别错误: " + errorMsg);
recognitionListener.onError(errorMsg);
break;
}
} catch (Exception e) {
Log.e(TAG, "处理识别事件失败: " + e.getMessage());
}
}
private void handlePartialResult(JSONObject json) throws Exception {
if (json.has("results_recognition") &&
"final_result".equals(json.optString("result_type"))) {
String result = json.getJSONArray("results_recognition").getString(0);
recognitionListener.onResult(result);
}
}
private void handleFinishResult(JSONObject json) throws Exception {
if (json.has("error")) {
int errorCode = json.getInt("error");
if (errorCode != 0) {
String errorDesc = json.optString("desc", "未知错误");
Log.e(TAG, "识别错误: " + errorDesc + " (错误码: " + errorCode + ")");
recognitionListener.onError(errorDesc);
}
}
}
public void startListening() {
try {
Map<String, Object> params = new HashMap<>();
// 授权参数
params.put(SpeechConstant.APP_ID, APP_ID);
params.put(SpeechConstant.APP_KEY, APP_KEY);
params.put(SpeechConstant.SECRET, SECRET_KEY);
// 识别参数
params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME, false);
params.put(SpeechConstant.VAD, "touch");
params.put(SpeechConstant.PID, 1537);
params.put(SpeechConstant.VAD_ENDPOINT_TIMEOUT, 0);
asr.send(SpeechConstant.ASR_START, new JSONObject(params).toString(), null, 0, 0);
Log.i(TAG, "开始录音识别");
} catch (Exception e) {
Log.e(TAG, "启动语音识别失败: " + e.getMessage());
recognitionListener.onError("启动语音识别失败: " + e.getMessage());
}
}
public void stopListening() {
try {
asr.send(SpeechConstant.ASR_STOP, null, null, 0, 0);
Log.i(TAG, "停止录音识别");
} catch (Exception e) {
Log.e(TAG, "停止语音识别失败: " + e.getMessage());
}
}
public void release() {
try {
if (asr != null) {
asr.send(SpeechConstant.ASR_CANCEL, null, null, 0, 0);
asr.unregisterListener(eventListener);
Log.i(TAG, "释放语音识别资源");
}
} catch (Exception e) {
Log.e(TAG, "释放语音识别资源失败: " + e.getMessage());
}
}
}
使用示例,仅供参考
// 语音识别管理器
private RecognizerManager recognizerManager;
// 语音识别按钮
private Button btnVoiceRecognition;
// 用于控制是否正在录音
private boolean isListening = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化百度语音识别
initVoiceRecognition();
}
// 初始化语音识别功能
private void initVoiceRecognition() {
btnVoiceRecognition = findViewById(R.id.btn_voice_recognition);
recognizerManager = new RecognizerManager(this, new RecognizerManager.RecognitionListener() {
@Override
public void onResult(String result) {
Log.i(TAG, "语音识别结果: " + result);
}
@Override
public void onError(String error) {
Log.e(TAG, "语音识别错误: " + error);
runOnUiThread(() -> {
Toast.makeText(MainActivity.this, error, Toast.LENGTH_SHORT).show();
btnVoiceRecognition.setText("开始语音识别");
isListening = false;
});
}
});
btnVoiceRecognition.setOnClickListener(v -> {
if (!isListening) {
recognizerManager.startListening();
btnVoiceRecognition.setText("停止识别");
isListening = true;
} else {
recognizerManager.stopListening();
btnVoiceRecognition.setText("开始语音识别");
isListening = false;
}
});
}
5.运行情况

6.总结
借助ai大幅度加快开发速度,主要使用工具为cusor、Android Studio,
在每次完成新功能前一定要备份!!!一定要备份!!!一定要备份!!!避免出错
更多推荐




所有评论(0)