Android 讯飞离线语音听写/离线语音识别SDK

简介: Android 讯飞离线语音听写/离线语音识别SDK

平台


Android + 讯飞离线语音SDK


SDK包


下载路径及方法见讯飞官方SDK文档:

离线语音听写 Android SDK 文档 #


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

image.png


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.xml
42 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语法的支持,这里略过.

运行:


image.png

image.png


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


image.png


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.jet 和 iat/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说明


相关实践学习
一键创建和部署高分电影推荐语音技能
本场景使用天猫精灵技能应用平台提供的技能模板,在2-5分钟内,创建一个好玩的高分电影推荐技能,使用模板后无须代码开发,系统自动配置意图、实体等,新手0基础也可体验创建技能的乐趣。
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
20天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
Android开发
Android实现语音播报的两种方式
Android实现语音播报的两种方式
57 0
|
4月前
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
419 0
|
5月前
|
JSON 自然语言处理 Java
Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
130 0
|
28天前
|
机器学习/深度学习 自然语言处理 算法
什么是语音识别的语音助手?
【4月更文挑战第8天】
28 3
什么是语音识别的语音助手?
|
2月前
|
运维 监控 Android开发
应用研发平台EMAS常见问题之安卓push的离线转通知目前无法收到如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
25 1
|
4月前
|
语音技术
长音频集成模型的标点结果既依赖于语音识别也依赖于语音端点检测(VAD)
长音频集成模型的标点结果既依赖于语音识别也依赖于语音端点检测(VAD)【1月更文挑战第11天】【1月更文挑战第52篇】
35 1
|
4月前
|
开发工具 Android开发
Android获取SDK的版本信息
Android获取SDK的版本信息
44 0
|
5月前
|
机器学习/深度学习 TensorFlow 语音技术
【Android +Tensroflow Lite】实现从基于机器学习语音中识别指令讲解及实战(超详细 附源码和演示视频)
【Android +Tensroflow Lite】实现从基于机器学习语音中识别指令讲解及实战(超详细 附源码和演示视频)
29 0
|
5月前
|
JSON 语音技术 Android开发
【Android App】在线语音识别功能实现(使用云知声平台与WebSocket 超详细 附源码)
【Android App】在线语音识别功能实现(使用云知声平台与WebSocket 超详细 附源码)
37 0