如果之前集合到HelloWorld的项目还不会的话,请点击这个链接查看文章百度语音识别集成到HelloWorld项目按步骤 *** 作,因为这个项目是基于HelloWorld项目集成而来。
项目界面比较简单,能实现功能就行了。
布局代码
<?xml version="1.0" enCoding="utf-8"?><androIDx.constraintlayout.Widget.ConstraintLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:app="http://schemas.androID.com/apk/res-auto" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context=".MainActivity"> <button androID:ID="@+ID/btn_start" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="@string/start" app:layout_constraintBottom_totopOf="@+ID/guIDeline2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constrainttop_totopOf="@+ID/guIDeline2" /> <button androID:ID="@+ID/btn_stop" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="@string/stop" app:layout_constraintBottom_totopOf="@+ID/guIDeline3" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constrainttop_totopOf="@+ID/guIDeline3" /> <TextVIEw androID:ID="@+ID/tv_result" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="@string/re" androID:textSize="24sp" app:layout_constraintBottom_totopOf="@+ID/guIDeline" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintleft_toleftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constrainttop_totopOf="@+ID/guIDeline" app:layout_constraintVertical_bias="0.307" /> <androIDx.constraintlayout.Widget.GuIDeline androID:ID="@+ID/guIDeline" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:orIEntation="horizontal" app:layout_constraintGuIDe_percent="0.3" /> <androIDx.constraintlayout.Widget.GuIDeline androID:ID="@+ID/guIDeline2" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:orIEntation="horizontal" app:layout_constraintGuIDe_percent="0.5" /> <androIDx.constraintlayout.Widget.GuIDeline androID:ID="@+ID/guIDeline3" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:orIEntation="horizontal" app:layout_constraintGuIDe_percent="0.7" /></androIDx.constraintlayout.Widget.ConstraintLayout>
要实现功能我们只需要MainActivity.class加上自己定义方法的代码就可以了
import androIDx.annotation.NonNull;import androIDx.annotation.Nullable;import androIDx.appcompat.app.AppCompatActivity;import androIDx.core.app.ActivityCompat;import androIDx.core.content.ContextCompat;import androID.Manifest;import androID.app.Activity;import androID.content.Context;import androID.content.pm.PackageManager;import androID.os.Bundle;import androID.os.PersistableBundle;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.TextVIEw;import androID.Widget.Toast;import com.baIDu.aip.asrwakeup3.core.mini.ActivityMiniRecog;import com.baIDu.speech.EventManager;import com.baIDu.speech.EventManagerFactory;import com.baIDu.speech.asr.SpeechConstant;import org.Json.JsONException;import org.Json.JsONObject;import java.util.ArrayList;import java.util.linkedHashMap;import java.util.Map;public class MainActivity extends AppCompatActivity implements com.baIDu.speech.EventListener { protected TextVIEw tv_result; protected button btn_stop, btn_start; private EventManager asr; private voID start() { Map<String, Object> params = new linkedHashMap<>();//传递Map<String,Object>的参数,会将Map自动序列化为Json String event = null; event = SpeechConstant.ASR_START; params.put(SpeechConstant.ACCEPT_AUdio_VolUME, false);//回调当前音量 String Json = null; Json = new JsONObject(params).toString();//demo用Json数据来做数据交换的方式 asr.send(event, Json, null, 0, 0);// 初始化EventManager对象,这个实例只能创建一次,就是我们上方创建的asr,此处开始传入 } private voID stop() {// tv_result.append("停止识别:ASR_Stop"); asr.send(SpeechConstant.ASR_Stop, null, null, 0, 0);//此处停止 } @OverrIDe public voID onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); initVIEw(); initPermission(); asr = EventManagerFactory.create(this, "asr");//注册自己的输出事件类 asr.registerListener(this);//调用 EventListener 中 onEvent方法 btn_start.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { start(); } }); btn_stop.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { stop(); } }); } @OverrIDe protected voID onPause() { super.onPause(); asr.send(SpeechConstant.ASR_CANCEL, "{}", null, 0, 0); } @OverrIDe protected voID onDestroy() { super.onDestroy(); asr.send(SpeechConstant.ASR_CANCEL, "{}", null, 0, 0); asr.unregisterListener(this);//推出事件管理器 // 必须与registerListener成对出现,否则可能造成内存泄露 } private voID initPermission() { String[] permissions = {Manifest.permission.RECORD_AUdio, Manifest.permission.ACCESS_NETWORK_STATE, Manifest.permission.INTERNET, Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; ArrayList<String> toApplyList = new ArrayList<>(); for (String perm : permissions) { if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) { toApplyList.add(perm); //进入这里代表没有权限 } } String[] tmpList = new String[toApplyList.size()]; if (!toApplyList.isEmpty()) { ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123); } } private voID initVIEw() { tv_result = findVIEwByID(R.ID.tv_result); btn_start = findVIEwByID(R.ID.btn_start); btn_stop = findVIEwByID(R.ID.btn_stop); } @OverrIDe public voID onEvent(String name, String params, byte[] data, int offset, int length) { String resultTxt = null; if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)) {//识别结果参数 if (params.contains("\"final_result\"")) {//语义结果值 try { JsONObject Json = new JsONObject(params); resultTxt = Json.getString("best_result"); } catch (JsONException e) { e.printstacktrace(); } } } if (resultTxt != null) { resultTxt += "\n"; tv_result.setText(resultTxt); } } @OverrIDe public voID onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { // 此处为androID 6.0以上动态授权的回调,用户自行实现。 }}
测试成功的截图
以上是内存溢出为你收集整理的百度语音识别如何集合到自己的项目中?(手把手教学)全部内容,希望文章能够帮你解决百度语音识别如何集合到自己的项目中?(手把手教学)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)