平台

Android + 讯飞离线语音SDK

SDK包

下载路径及方法见讯飞官方SDK文档:
离线语音听写 Android SDK 文档 #

在开发者控制台, 可以直接下载SDK.

SDK包中的文件结构

~/Downloads/Android_esriat_exp1143_5a2b58b9$ tree
.
├── assets 带UI需要用到的一些图片等资源
│   └── iflytek
│       ├── recognize.xml
│       ├── voice_bg.9.png
│       ├── voice_empty.png
│       ├── voice_full.png
│       ├── waiting.png
│       └── warning.png
├── libs JNI库能JAR包, 只支持v7, v8 64
│   ├── arm64-v8a
│   │   └── libmsc.so
│   ├── armeabi-v7a
│   │   └── libmsc.so
│   └── Msc.jar
├── readme.txt
├── release.txt
├── res SDK资源
│   ├── asr
│   ├── iat
│   │   ├── common.jet
│   │   └── sms_16k.jet
│   ├── ivw
│   ├── layout
│   │   └── ifly_layout_mnotice_image.xml
│   ├── tts
│   └── xtts
└── sample 参考DEMO└── mscV5PlusDemo├── build.gradle├── libs│   ├── arm64-v8a│   │   └── libmsc.so│   ├── armeabi-v7a│   │   └── libmsc.so│   └── Msc.jar├── lint.xml├── msc.cfg└── src└── main├── AndroidManifest.xml├── assets│   ├── asr│   ├── call.bnf│   ├── grammar_sample.abnf│   ├── iat│   ├── iattest.wav│   ├── iflytek│   │   ├── recognize.xml│   │   ├── voice_bg.9.png│   │   ├── voice_empty.png│   │   ├── voice_full.png│   │   ├── waiting.png│   │   └── warning.png│   ├── ivw│   ├── layout│   │   └── ifly_layout_mnotice_image.xml│   ├── tts│   ├── userwords│   ├── wake.bnf│   ├── wake_grammar_sample.abnf│   └── xtts├── java│   └── com│       └── iflytek│           ├── mscv5plusdemo│           │   ├── AsrDemo.java│           │   ├── IatDemo.java│           │   ├── IvwActivity.java│           │   ├── MainActivity.java│           │   ├── OneShotDemo.java│           │   ├── SpeechApp.java│           │   ├── TtsDemo.java│           │   └── WakeDemo.java│           └── speech│               ├── setting│               │   ├── IatSettings.java│               │   └── TtsSettings.java│               └── util│                   ├── FucUtil.java│                   ├── JsonParser.java│                   ├── SettingTextWatcher.java│                   └── XmlParser.java└── res├── drawable│   ├── cancel_button.xml│   ├── list_bg_color.xml│   ├── main_setting_btn_np.xml│   ├── ok_button.xml│   ├── setting.png│   └── setting_p.png├── drawable-hdpi│   ├── bg.png│   ├── btn_left_f.9.png│   ├── btn_left_n.9.png│   ├── btn_left_p.9.png│   ├── btn_left.xml│   ├── btn_right_f.9.png│   ├── btn_right_n.9.png│   ├── btn_right_p.9.png│   ├── btn_right.xml│   ├── button_login.xml│   ├── cancel.9.png│   ├── cancel_p.9.png│   ├── editbox.9.png│   ├── edittext_name.9.png│   ├── head.png│   ├── icon.png│   ├── login.png│   ├── login_p.png│   ├── mic_0.png│   ├── mic_1.png│   ├── mic_2.png│   ├── mic_3.png│   ├── name_left.png│   ├── name_right.png│   ├── ok.9.png│   ├── ok_d.9.png│   ├── ok_p.9.png│   ├── pane_bg.9.png│   └── superman.9.png├── drawable-ldpi│   └── icon.png├── drawable-mdpi│   └── icon.png├── layout│   ├── iatdemo.xml│   ├── isrdemo.xml│   ├── ivw_activity.xml│   ├── list_items.xml│   ├── main.xml│   ├── oneshot_activity.xml│   ├── title.xml│   ├── ttsdemo.xml│   └── wake_activity.xml├── values│   ├── colors.xml│   ├── dimen.xml│   ├── strings.xml│   └── styles.xml└── xml├── iat_setting.xml├── tts_setting.xml└── understand_setting.xml42 directories, 101 files

使用

首先可以尝试使用SDK中的DEMO, 将Sample下的mscV5PlusDemo导入到Android Studio中,

~/StudioProjects/TestCodes/mscV5PlusDemo$ ll
total 612
drwxrwxr-x  5 anson anson   4096 3月  14 10:43 ./
drwxrwxr-x 20 anson anson   4096 3月  14 10:37 ../
-rw-rw-r--  1 anson anson    836 3月  14 09:14 build.gradle
drwxrwxr-x  4 anson anson   4096 3月  14 10:07 libs/
-rw-rw-r--  1 anson anson     53 3月  14 09:14 lint.xml
-rw-rw-r--  1 anson anson   5517 3月  14 09:14 msc.cfg
drwxrwxr-x  3 anson anson   4096 3月  14 10:07 src/

PS: 需要打开 android.useAndroidX=true配置, 有可能还需解决一些JDK版本不支持LAMBA语法的支持,这里略过.
运行:


一个小插曲: SDK中的DEMO运行离线识别时, DEMO居然报错了??

2022-03-14 10:56:34.643 18483-18483/com.iflytek.mscv5plusdemo W/System.err: java.io.FileNotFoundException: iat/common.jet
2022-03-14 10:56:34.643 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.content.res.AssetManager.nativeOpenAssetFd(Native Method)
2022-03-14 10:56:34.643 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.content.res.AssetManager.openFd(AssetManager.java:966)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.cloud.util.ResourceUtil.a(SourceFile:11)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.cloud.util.ResourceUtil.generateResourcePath(SourceFile:4)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.mscv5plusdemo.IatDemo.getResourcePath(IatDemo.java:358)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.mscv5plusdemo.IatDemo.setParam(IatDemo.java:326)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.mscv5plusdemo.IatDemo.onClick(IatDemo.java:116)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.view.View.performClick(View.java:7312)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.view.View.performClickInternal(View.java:7286)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.view.View.access$3600(View.java:838)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.view.View$PerformClick.run(View.java:28242)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.os.Handler.handleCallback(Handler.java:900)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:103)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.os.Looper.loop(Looper.java:219)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:8668)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
2022-03-14 10:56:34.644 18483-18483/com.iflytek.mscv5plusdemo W/System.err: java.io.FileNotFoundException: iat/sms_16k.jet
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.content.res.AssetManager.nativeOpenAssetFd(Native Method)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.content.res.AssetManager.openFd(AssetManager.java:966)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.cloud.util.ResourceUtil.a(SourceFile:11)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.cloud.util.ResourceUtil.generateResourcePath(SourceFile:4)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.mscv5plusdemo.IatDemo.getResourcePath(IatDemo.java:360)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.mscv5plusdemo.IatDemo.setParam(IatDemo.java:326)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.iflytek.mscv5plusdemo.IatDemo.onClick(IatDemo.java:116)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.view.View.performClick(View.java:7312)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.view.View.performClickInternal(View.java:7286)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.view.View.access$3600(View.java:838)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.view.View$PerformClick.run(View.java:28242)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.os.Handler.handleCallback(Handler.java:900)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:103)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.os.Looper.loop(Looper.java:219)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:8668)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
2022-03-14 10:56:34.645 18483-18483/com.iflytek.mscv5plusdemo W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

有两个文件找不到: iat/common.jetiat/sms_16k.jet

这两个文件在SDK包中的:

Android_esriat_exp1143_5a2b58b9/res/iat/
total 32020
drwxr-xr-x 2 anson anson     4096 3月  14 09:14 ./
drwxr-xr-x 8 anson anson     4096 3月  14 09:14 ../
-rw-r--r-- 1 anson anson  9781778 3月  14 09:14 common.jet
-rw-r--r-- 1 anson anson 22994400 3月  14 09:14 sms_16k.jet

找到并把这两个文件拷贝到项目相应的目录下: src/main/assets/iat/
完整文件目录结构如下:

├── build.gradle
├── libs
│   ├── arm64-v8a
│   │   └── libmsc.so
│   ├── armeabi-v7a
│   │   └── libmsc.so
│   └── Msc.jar
├── lint.xml
├── msc.cfg
└── src└── main├── AndroidManifest.xml├── assets│   ├── asr│   ├── call.bnf│   ├── grammar_sample.abnf│   ├── iat│   │   ├── common.jet│   │   └── sms_16k.jet│   ├── iattest.wav│   ├── iflytek│   │   ├── recognize.xml│   │   ├── voice_bg.9.png│   │   ├── voice_empty.png│   │   ├── voice_full.png│   │   ├── waiting.png│   │   └── warning.png│   ├── ivw│   ├── layout│   │   └── ifly_layout_mnotice_image.xml│   ├── tts│   ├── userwords│   ├── wake.bnf│   ├── wake_grammar_sample.abnf│   └── xtts├── java│   └── com│       └── iflytek│           ├── mscv5plusdemo│           │   ├── AsrDemo.java│           │   ├── IatDemo.java│           │   ├── IvwActivity.java│           │   ├── MainActivity.java│           │   ├── OneShotDemo.java│           │   ├── SpeechApp.java│           │   ├── TtsDemo.java│           │   └── WakeDemo.java│           └── speech│               ├── setting│               │   ├── IatSettings.java│               │   └── TtsSettings.java│               └── util│                   ├── FucUtil.java│                   ├── JsonParser.java│                   ├── SettingTextWatcher.java│                   └── XmlParser.java└── res├── drawable│   ├── cancel_button.xml│   ├── list_bg_color.xml│   ├── main_setting_btn_np.xml│   ├── ok_button.xml│   ├── setting.png│   └── setting_p.png├── drawable-hdpi│   ├── bg.png│   ├── btn_left_f.9.png│   ├── btn_left_n.9.png│   ├── btn_left_p.9.png│   ├── btn_left.xml│   ├── btn_right_f.9.png│   ├── btn_right_n.9.png│   ├── btn_right_p.9.png│   ├── btn_right.xml│   ├── button_login.xml│   ├── cancel.9.png│   ├── cancel_p.9.png│   ├── editbox.9.png│   ├── edittext_name.9.png│   ├── head.png│   ├── icon.png│   ├── login.png│   ├── login_p.png│   ├── mic_0.png│   ├── mic_1.png│   ├── mic_2.png│   ├── mic_3.png│   ├── name_left.png│   ├── name_right.png│   ├── ok.9.png│   ├── ok_d.9.png│   ├── ok_p.9.png│   ├── pane_bg.9.png│   └── superman.9.png├── drawable-ldpi│   └── icon.png├── drawable-mdpi│   └── icon.png├── layout│   ├── iatdemo.xml│   ├── isrdemo.xml│   ├── ivw_activity.xml│   ├── list_items.xml│   ├── main.xml│   ├── oneshot_activity.xml│   ├── title.xml│   ├── ttsdemo.xml│   └── wake_activity.xml├── values│   ├── colors.xml│   ├── dimen.xml│   ├── strings.xml│   └── styles.xml└── xml├── iat_setting.xml├── tts_setting.xml└── understand_setting.xml

再次运行, 成功!!

参考

SDK说明

Android 讯飞离线语音听写/离线语音识别SDK相关推荐

  1. Android讯飞语音云语音听写学习

    讯飞语音云语音听写学习 这几天两个舍友都买了iPhone 6S,玩起了"Hey, Siri",我依旧对我的Nexus 5喊着"OK,Google".但种种原因, ...

  2. Android——讯飞语音唤醒简介及实现

    前段时间写了一个关于百度语音唤醒文章,最近有做了一个讯飞语音的应用,在这里把学习的资料整理一下. 唤醒的整个过程如下: (图源自讯飞官网) 讯飞的语音唤醒功能实现起来挺方便的(相比百度,百度语音And ...

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

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

  4. Unity 讯飞实时语音转写(二)—— 接收转写结果

    目录 Unity 讯飞实时语音转写(一)-- 使用WebSocket连接讯飞语音服务器 Unity 讯飞实时语音转写(二)-- 接收转写结果 Unity 讯飞实时语音转写(三)-- 分析转写结果 正文 ...

  5. 讯飞智能语音鼠标G50:AI语音、转写翻译、记录截图一键搞定!

    随着互联网的发展,智能鼠标已经成为我们生活和工作中不可或缺的组成部分.然而,鼠标滚轮异响.按键失灵.驱动难用.手感不合适等一系列问题仍时有发生,所以选择一款智能鼠标尤为重要,它不仅可以提高我们的工作效 ...

  6. android 讯飞语音 提示组件未安装,讯飞语音听写API 未安装组件 错误码21001

    在使用讯飞语音听写时,使用云端听写而不是使用本地出现这个未安装组件错误那可能就是so文件没有成功导入.文档中都是ADT环境的配置,在AndroidStudio中jar包等都和ADT差别不大,但是SO文 ...

  7. Android讯飞语音集成【在线语音合成2】

    前言: 语音合成: 与语音听写相反,语音合成是将一段文字转换为语音,可根据需要合成出不同音色.语速和语调的声音,让机器像人一样开口说话 效果图: 2.直接上代码,配置不再重复说明了: ①.TTSAct ...

  8. android 讯飞语音引擎3.0默认粤语播报

    粤语语音引擎apk及粤语资源包 android 6.0 平台老人机需求设备默认支持粤语离线播报,在网上找了许多资料都没有价值. 发现讯飞的TTS3.0联网下载粤语包后可以完美支持.然后尝试反编译和预置 ...

  9. Android 讯飞语音开发

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 前段时间火了一个很牛的讯飞语音,去看官方文档,瞬间蒙逼,官方是用的eclipse,我用的Android Studio.好了,能上代 ...

最新文章

  1. 07 分支管理 —— Feature分支
  2. 乐观锁 -业务判断 解决高并发问题
  3. Struts2.3.4.1+Spring3.2.3+Hibernate4.1.9整合
  4. CD marker 是什么?
  5. GDCM:读取和打印DICOM的属性的测试程序
  6. delphi查看源码版本_[Mybatis]-IDEA导入Mybatis源码
  7. 简洁UI好玩的文字转换emoji表情微信小程序支持句子词语转换_源码
  8. 【ElasticSearch】ElasticSearch在数十亿级别数据下,如何提高查询效率? 性能优化
  9. PAT排名汇总(排序)
  10. 使用sphinx+reStructuredText制作文档
  11. 以后 博文 要做 中文对照,利于国际化,利于自己熟悉英语。
  12. poj2391 Ombrophobic Bovines 拆点连边要注意
  13. freeswitch1.10.7 安装部署排坑
  14. 伸缩门遥控器c语言程序,伸缩门遥控器匹配方法是什么呢? 如何学会电动门的遥控编码...
  15. git使用meld的方法
  16. 解决 jack server is not running
  17. 加速器 (Accelerator or Offload Engine)
  18. 解决PS等软件出现应用程序无法正常启动(0xc000007b)
  19. 微信视频服务器能保存多久,微信视频动态保存多久(微信背景视频只能一天吗)...
  20. Codeblocks 新建操作(单c文件新建和c工程创建)

热门文章

  1. 数学建模最小二乘法拟合_MATLAB最小二乘法拟合曲线公式
  2. 【文集】Unity的热更新
  3. Looksery Cup 2015 F - Yura and Developers 单调栈+启发式合并
  4. Java图片压缩大小,图片缩放
  5. 谈《黑社会之龙城岁月》中之大D
  6. java 手机声音提醒功能_Android基于广播事件机制实现简单定时提醒功能代码
  7. 打造高效能研发团队的 5 个关键步骤
  8. 格式化代码_格式化代码是什么意思
  9. mysql 时间计算器
  10. jwt单点登录 和防重放攻击