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说明


相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
4月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
122 0
|
1月前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
86 1
|
2月前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
68 7
|
3月前
|
JavaScript 前端开发 Android开发
让Vite+Vue3项目在Android端离线打开(不需要起服务)
让Vite+Vue3项目在Android端离线打开(不需要起服务)
126 10
|
4月前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
195 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
4月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
415 4
|
4月前
|
开发工具 图形学 Android开发
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
|
4月前
|
开发工具 Android开发
Flutter: Android SDK not found at this location,Android Studio not found at xxx
Flutter: Android SDK not found at this location,Android Studio not found at xxx
170 2
|
4月前
|
开发工具 Android开发
[Android Studio]please select android sdk
[Android Studio]please select android sdk
85 1
|
4月前
|
开发工具 Android开发
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
47 0