android 之讯飞语音输入(1)

最近因为公司项目,研究了一下讯飞语音相关接入的技术,实现了讯飞的语音输入和合成输出,发现这真是一个很好玩的东西,下面进入正题

(1),进行这一类开发,需要先进入讯飞语音平台注册,选取你想要接入的技术,下载相应的SDK,获取相应的APPID

(2),将SDKdemo程序lib文件夹下的

这三个文件拷贝到你的项目lib文件下
(3),将demo程序的assets文件夹拷贝到你的项目目录下
(4)好,准备工作基本就绪,下面开始进入正题
在工程中假如权限Androidminifest.xml中
//连接网络的权限
    <uses-permission android:name="android.permission.INTERNET"/>
  <!-- 获取手机录音机使用的权限  听写识别语义理解需要用到此权限 -->
     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
 <!-- 读取网络信息状态 -->
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
      <!-- 获取当前WiFi状态 -->
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
      <!-- 允许程序改变网络连接状态 -->
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
      <!-- 读取手机信息权限 -->
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
      <!-- 读取联系人权限 -->
     <uses-permission android:name="android.permission.READ_CONTACTS"/>
//接下来是初始化语音配置对象
 //初始化及创建语音配置对象 其中的APPID对应你自己申请的APPID(这部分代码最好写在oncreat内部)
  SpeechUtility.createUtility(MainActivity.this,SpeechConstant.APPID+"=572be963");
对了  说一下我的布局 ,我是用一个按钮触发的语音输入的方法,你可以根据自己的需要来配置
然后再方法内部进行如下配置
 voiceButton.setOnClickListener(new OnClickListener() {
   
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
     RecognizerDialog  mDialog = new RecognizerDialog(MainActivity.this ,mInitListener);
           //2.设置accent、language等参数
           mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
           mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
           //若要将UI控件用于语义理解,必须添加以下参数设置,设置之后onResult回调返回将是语义理解
           //结果
           mDialog.setParameter("asr_sch", "1");
           mDialog.setParameter("nlp_version", "2.0");
           //3.设置回调接口
           mDialog.setListener(mRecognizerDialogListener);
           //4.显示dialog,接收语音输入
           mDialog.show();
   }
  });
//因为返回的字段是json 数据,所以还要进行解析,将demo工程的jsonparser拷贝到项目中,下面的解析要用到
//语音输入的方法
  private InitListener mInitListener = new InitListener() {
      public void onInit(int code) {
      if (code == ErrorCode.SUCCESS) {}}
      };
      //语音输入的方法
       private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() {
              public void onResult(RecognizerResult results, boolean isLast) {
               String text = JsonParser.parseIatResult(results.getResultString());
               String sn = null;
            // 读取json结果中的sn字段
            try {
             JSONObject resultJson = new JSONObject(results.getResultString());
             sn = resultJson.optString("sn");
            } catch (JSONException e) {
             e.printStackTrace();
            }
            mIatResults.put(sn, text);
            StringBuffer resultBuffer = new StringBuffer();
            for (String key : mIatResults.keySet()) {
             resultBuffer.append(mIatResults.get(key));
            }
            
          mInputMsg.setText(resultBuffer.toString());
               Toast.makeText(MainActivity.this, resultBuffer.toString()+"", Toast.LENGTH_SHORT).show();
              }
         public void onError(SpeechError error) {
             //Toast.makeText(getApplication(), error.getPlainDescription(true), Toast.LENGTH_SHORT).show();
         }
        
     };
到现在为止语音的输入已经基本完成了,可以根据自己的需要进行完善,刚开始写博客,思维有点乱,以后努力

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值