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


相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
3月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
82 0
|
2月前
|
Ubuntu 机器人 语音技术
语音识别与语音控制的原理介绍
硬件平台 机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>=10)/Ubuntu(>=20.04)扩展硬件:X3语音版 运行案例 首先进入OriginBot主控系统,运行一下指令。请注意,部分操作OriginBot内暂未放入,请根据内容进行适当处理。 cd /userdata/dev_ws/ # 配置TogetheROS环境 source /opt/tros/setup.bash # 从tros.b的安装路径中拷贝出运行示例需要的配置文件。 cp -r /opt/tros/lib/hobot_audio/config/ . # 加载音频驱动,设备启动之后只
221 83
|
7天前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
12天前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
39 1
|
22天前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
41 7
|
1月前
|
Ubuntu 机器人 语音技术
语音识别与语音控制
【10月更文挑战第4天】硬件平台 机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>=10)/Ubuntu(>=20.04)扩展硬件:X3语音版 运行案例 首先进入OriginBot主控系统,运行一下指令。请注意,部分操作OriginBot内暂未放入,请根据内容进行适当处理。 cd /userdata/dev_ws/ # 配置TogetheROS环境 source /opt/tros/setup.bash # 从tros.b的安装路径中拷贝出运行示例需要的配置文件。 cp -r /opt/tros/lib/hobot_audio/config/ . # 加载
|
1月前
|
人工智能 语音技术 数据格式
三文带你轻松上手鸿蒙的AI语音01-实时语音识别
三文带你轻松上手鸿蒙的AI语音01-实时语音识别
31 0
三文带你轻松上手鸿蒙的AI语音01-实时语音识别
|
3月前
|
开发工具 图形学 Android开发
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
|
3月前
|
开发工具 Android开发
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
Android项目架构设计问题之SDK内部减少每次回调时的冗余判断逻辑如何解决
38 0
|
3月前
|
Java API 开发工具
Android项目架构设计问题之为SDK添加新的回调支持如何解决
Android项目架构设计问题之为SDK添加新的回调支持如何解决
24 0

热门文章

最新文章

  • 1
    实时语音识别 使用websockt传输二进制数组 onSentenceEnd不返回结果
    30
  • 2
    在人工智能和机器学习的领域中,语音识别(Speech Recognition,SR)是一个重要的研究方向。它旨在将人类的语音转换为计算机可读的文本。
    110
  • 3
    Python基于librosa和人工神经网络实现语音识别分类模型(ANN算法)项目实战
    133
  • 4
    深度学习在语音识别中的进展
    59
  • 5
    语音识别------ffmpeg的使用01,ffmpeg的安装,会做PPT很好,ffmpeg不具备直接使用,只可以操作解码数据,ffmpeg用C语言写的,得学C语言,ffmpeg的安装
    64
  • 6
    语音识别-----列表的常用操作课后练习讲解,用变量追加,取出第一个,取出最后一个,下标位置,列表的循环遍历,下标+1的写法,len下标可以小于这个值,while循环对index循环的遍历
    38
  • 7
    语音识别-免费开源的语音转文本软件Whisper的本地搭建详细教程,python版本是3.805,ffmpeg是专门处理音视频的,ffmpeg的下载链接,现在要求安装python和ffmpeg
    217
  • 8
    语音识别,列表的定义语法,列表[],列表的下标索引,从列表中取出来特定的数据,name[0]就是索引,反向索引,头部是-1,my[1][1],嵌套列表使用, 列表常用操作, 函数一样,需引入
    40
  • 9
    语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
    39
  • 10
    语音识别----函数基础定义联系案例,函数的参数,函数的参数练习案例,函数的返回值定义语法,函数返回值之None,函数的说明文档,函数的嵌套调用,变量在函数中的作用域,内部变量变全局变量用global
    44