Android经验Android技术知识Android开发经验谈

讯飞语音听写Demo

2017-08-19  本文已影响99人  U2tzJTNE

本文迁移自我的CSDN

自从上次看了锤子M1发布会之后,一直对发布会上大放光彩的讯飞语音识别很感兴趣,最近正好有时间,便做了一个小Demo与大家分享一下。


效果演示

这里写图片描述

1. 下载SDK

我们的Demo开发需要借助讯飞开放平台提供的SDK,所以第一步我们需要先下载SDK

首先我们需要先创建一个应用

这里写图片描述

应用创建完成后,我们再次来到SDK下载页面,选择相应的服务

这里写图片描述

选中刚才创建的应用(该应用会和下载的SDK进行绑定)

这里写图片描述

2.导入SDK

将下载的SDK文件解压

这里写图片描述

libs 里面的jar文件和so库文件拷贝到项目的 libs 目录

这里写图片描述 这里写图片描述

选中两个jar文件右键选择“Add As Libary”,将jar文件添加到库


这里写图片描述

接下来就是导入assets目录里面的资源文件,Android Studio默认并没有创建该目录,所以我们需要自己手动创建

在项目的app目录上面右键 New/Folder/Assets Folder

这里写图片描述

最后,我们打开Module的 build.gradle 文件在 android 标签下添加如下代码,指定so库的位置

sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
}

3.添加用户权限

在工程AndroidManifest.xml 文件中添加如下权限

<!--连接网络权限,用于执行云端语音能力-->
<uses-permission android:name="android.permission.INTERNET"/>
<!--获取手机录音机使用权限-->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>

4.初始化

进入我的应用,复制自己的id

这里写图片描述

初始化即创建语音配置对象,只有初始化后才可以使用MSC 的各项服务。建议将初始化放在程序入口处(如Application、Activity 的 onCreate 方法),初始化代码如下:

//将“12345678”替换成您申请的APPID
SpeechUtility.createUtility(this,SpeechConstant.APPID+"=12345678");

6.按钮监听

//按钮监听
   public void startListener(View view){
       //1.创建RecognizerDialog对象
       RecognizerDialog mDialog = new RecognizerDialog(this,null);
       //2.设置accent、language等参数
       mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
       mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
       // 3.设置回调接口
       mDialog.setListener(new RecognizerDialogListener() {
            //识别结果的回调接口,会进行多次回调
            //当isLast为true时,识别结束
           @Override
           public void onResult(RecognizerResult result, boolean isLast) {
               //System.out.println("识别结果:"+result);
               mBuffer.append(parseDatd(result.getResultString()));
               if (isLast){
                   editText.setText(mBuffer.toString());
               }
           }
           @Override
           public void onError(SpeechError speechError) {

           }
       });
       //4.显示dialog,接收语音输入
       mDialog.show();
   }

8.解析数据

由于识别结果返回的是json格式的数据,我们并不能直接使用,此时需要将json转换为普通的String数据

我们可以借助一个开源的类库 GSON 添加方法如下:

按快捷键Ctrl + Shift + Alt + S 打开 项目结构 对话框,切换到 依赖 选项卡,点击右上角“+”号,搜索 gson ,如下图:

这里写图片描述
或者直接在项目的 build.gradle 文件的 dependencies 标签下,添加如下代码:
compile 'com.google.code.gson:gson:2.8.0'

解析json数据时,我们需要创建一个Bean类,可以借助Android Studio的一个插件 GsonFormat 帮我们快速生成,安装步骤如下:

按快捷键Ctrl + Alt + S 打开 Settings 对话框,选择 Plugins

这里写图片描述

编写Bean类

我们可以先运行程序进行测试,将结果打印出来

这里写图片描述

新建一个VoiceBean类,在该类的编辑界面 按Alt + S 快捷键,打开GsonFormat插件,复制刚才打印的json数据

这里写图片描述
从打印出的json中发现,我们只需要 “w” 对应的数据
这里写图片描述
点击 OK 即可创建完成

解析代码

//解析数据
private String parseDatd(String json) {
    //创建Gson对象
    Gson gson = new Gson();
    VoiceBean voiceBean = gson.fromJson(json,VoiceBean.class);
    StringBuffer sb = new StringBuffer();
    List<VoiceBean.WsBean> ws = voiceBean.getWs();
    for (VoiceBean.WsBean wsBean : ws){
        String word = wsBean.getCw().get(0).getW();
        sb.append(word);
    }
    return sb.toString();
}

项目文件下载

上一篇 下一篇

猜你喜欢

热点阅读