最近看了看百度语音和讯飞语音识别的实现,吐个槽,他们的官方文档是真的写得垃圾,可能是我技术不到位,

反正我是很难看懂的,不吐槽了,先上实现

讯飞的官方文档

https://doc.xfyun.cn/msc_android/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB.html

按步骤来

  • 注册账号进去后注册应用,得到APPID(这是必须操作,因为不注册应用是不可以下载的,当然也不要想着从其他位置拷贝SDK过来,这里我开始没有理解,后面才知道,每个SDK都是和你要用的应用的APPID绑定的,所以即使拷了别人的SDK过来也没用)

下载 的SDK后面图画部分就是你的APPID,也就是这个SDK必须使用这个APPID

  • 得到了资源后接下来就是新建工程,然后将文件放到对应位置了

三个对应的资料在SDK里面找到文件 对症下药即可

在app的build.gradle里面添加上面配置,加载libs和jnilibs的文件

 sourceSets{main{jniLibs.srcDir 'libs'jni.srcDirs = []}}
  • 接下来就是代码实现了
  • 添加权限
  • <!--连接网络权限,用于执行云端语音能力 --><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"/>
  • 首先需要初始化操作
    SpeechUtility.createUtility(this, SpeechConstant.APPID + "=111111111");

    后面的111111是代表你的APPID,拿来替换即可,这个初始化可以在你的demo里面oncreate方法里面进行

  • 下面这个代码是得到并显示讯飞语音识别视图

  •     public void startVoice(){//1.创建RecognizerDialog对象RecognizerDialog recognizerDialog = new RecognizerDialog(MainActivity.this, this);//2.设置accent、language等参数recognizerDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");//语种,这里可以有zh_cn和en_usrecognizerDialog.setParameter(SpeechConstant.ACCENT, "mandarin");//设置口音,这里设置的是汉语普通话 具体支持口音请查看讯飞文档,recognizerDialog.setParameter(SpeechConstant.TEXT_ENCODING, "utf-8");//设置编码类型//其他设置请参考文档http://www.xfyun.cn/doccenter/awd//3.设置讯飞识别语音后的回调监听recognizerDialog.setListener(new RecognizerDialogListener() {@Overridepublic void onResult(RecognizerResult recognizerResult, boolean b) {//返回结果if (!b) {Log.i("test_xunfei", recognizerResult.getResultString());result(recognizerResult.getResultString());}}@Overridepublic void onError(SpeechError speechError) {//返回错误Log.e("test_xunfei", speechError.getErrorCode() + "");}});//显示讯飞语音识别视图recognizerDialog.show();}

    箭头指向的这个this是我实现了InitListener接口,这个接口会让你实现下面这个方法

   @Overridepublic void onInit(int code) {if (code != ErrorCode.SUCCESS) {Toast.makeText(MainActivity.this,"初始化失败,错误码:" + code,Toast.LENGTH_LONG).show();}}
  • 接下来是拿到识别后的返回结果
  • 在上面onresult毁掉方法里面的log,拿到的只是json数据
  • {"sn":1,"ls":false,"bg":0,"ed":0,"ws":[{"bg":1,"cw":[{"sc":0.0,"w":"你好"}]}]}这样的值,解析这个数据即可得到
  • 添加fastjson用来解析这个返回值implementation 'com.alibaba:fastjson:1.2.8'
  •   public String result(String resultString){JSONObject jsonObject = JSON.parseObject(resultString);JSONArray jsonArray = jsonObject.getJSONArray("ws");StringBuffer stringBuffer = new StringBuffer();for (int i = 0; i < jsonArray.size(); i++) {JSONObject jsonObject1 = jsonArray.getJSONObject(i);JSONArray jsonArray1 = jsonObject1.getJSONArray("cw");JSONObject jsonObject2 = jsonArray1.getJSONObject(0);String w = jsonObject2.getString("w");stringBuffer.append(w);}String result = stringBuffer.toString();Log.i("test_xunfei", "识别结果为:" + result);return result;}

    解析后得到的结果是:识别结果为:你好

  • 好了,总共就这些了,只是先语音识别功能这样还是看上去挺简单的,就是很多时候官方文档没有解析很多细节,所以出了错很多时候不知道为什么,希望能帮到大家吧

讯飞语音识别demo实现相关推荐

  1. Flutter版讯飞语音识别demo

    xf_demo是根据科大讯飞语音听写的WebAPI编写的Flutter版demo 官方文档地址:https://www.xfyun.cn/doc/asr/voicedictation/API.html ...

  2. 讯飞语音识别和唤醒开发示例

    讯飞语音识别和唤醒开发示例 最近需要用到讯飞的语音识别和语音唤醒的功能,就对这方面进行了一下简单研究. 本文帮助大家简单入门,并且提供几个代码示例给大家参考. 讯飞开发者网址:https://www. ...

  3. 语音识别技术原理是什么 讯飞语音识别技术特点介绍【详解】

    语音识别技术原理简介 自动语音识别技术(Auto Speech Recognize,简称ASR)所要解决的问题是让计算机能够"听懂"人类的语音,将语音中包含的文字信息"提 ...

  4. 讯飞社区android 源码,android 讯飞语音 demo

    [实例简介] android 讯飞语音 demo 博客地址:http://blog.csdn.net/chenshufei2/article/details/8496905 [实例截图] [核心代码] ...

  5. 腾讯、百度、讯飞 语音识别

    一.腾讯语音识别-一句话语音识别 1.账号申请 (1)搜索腾讯云官网 https://cloud.tencent.com/?fromSource=gwzcw.2212127.2212127.22121 ...

  6. python实时语音智能聊天<讯飞语音识别+青云客机器人>

    python基于 讯飞语音识别实现语音智能聊天 GitHub项目链接:https://github.com/superzhangjc/python-Voice_chat.git

  7. 讯飞语音识别配置笔记

    不久前开发过讯飞语音识别和小程序结合的系统,发表了一篇配置记录,有一些同学问一下问题,我再把我但是自己做的另外一篇记录发出来,给需要的同行参考一下.上一篇文章的地址:http://blog.csdn. ...

  8. unity通过WebAPI连接Websocket实现讯飞语音识别与合成。

    下载地址:https://download.csdn.net/download/qq_39735878/12447473 unity写的讯飞语音识别合成与评测功能,走的是webapi,连接讯飞WebS ...

  9. java版阿里云,百度ai,讯飞语音识别效果简单对比及demo

    因为公司的业务的需要,对三家的语音识别(简短语句识别java版)进行了调用和对比,把自己的测试成果贴出来供需要的人参考使用.并贴出主要代码块 阿里云的一句话识别: package com.alibab ...

最新文章

  1. 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...
  2. 13、Java菜单条、菜单、菜单项
  3. Python学习之GUI--SQL数据库连接
  4. 开始→运行→输入的命令集锦 1
  5. Matplotlib画图常用方法总结(全)
  6. equipment download和CRM 的change history
  7. squid代理服务器(捎带的SNAT)
  8. SaltStack 部署案例 02
  9. python使用opencv库_python库(OpenCV的简单使用)
  10. 通过模板生成Excel表格——XLSTransformer
  11. Vulkan教程翻译
  12. centeros安装mySQL
  13. SIP协议详解(中文)-5
  14. fgo服务器维护补偿,FGO1月23日服务器故障说明公告 全服补偿24圣晶石
  15. 【工作日报】2019年7月 前端开发工作日报汇总
  16. 用java计算三角形周长_三角形求周长和面积完整的解决方案
  17. 解决VS报表.rdl 显示乱码“小方块”问题
  18. 为什么包装类型间的相等判断应该用 equals
  19. 1. 批处理常用符号详解:
  20. C++转换函数 (conversion function)

热门文章

  1. 用友uap nc65开发-输出模版(打印模版)开发介绍
  2. QML添加图片资源和自定义组件报错解决
  3. GD32F4XX GPIO初始化
  4. 51nod 1596搬货物
  5. 友推在Android 实现微信等分享代码的常见问题
  6. javaScript数据类型 转换方式
  7. 键盘硬件扫描码(邓志)
  8. javascript经典算法之最小硬币找零问题
  9. app安全:如何应对界面劫持
  10. Master of Both