平台
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.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语法的支持,这里略过.
运行:
一个小插曲: 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.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
再次运行, 成功!!