帖子

[官方问题解答] 21001问题详解

[复制链接]
  • TA的每日心情
    开心
    2017-12-29 09:56
  • 签到天数: 46 天

    [LV.5]常住居民I

    1328114  楼主| 王水 发表于 2015-10-12 15:30:34 1#
    关于21001问题,在论坛已经有不少的好帖进行讲述了:
    http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=9688
    http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=10064
    但是很少有帖子详细说明一下21001出现的详细原因,只是给出一般的解决方法。这里为了让大家有自己分析问题和解决问题的习惯,特意总结一下这个21001。

    首先21001在错误描述是“没有安装语音组件”。这里的语音组件是什么呢?很多开发者以为这个语音组件就是语记(语音+),其实不然。
    这里的语音组件大家可以理解为“语音引擎”,因此当你看到21001“没有安装语音组件”时,SDK实际是想告诉你,她找不到这个引擎在哪里。
    这个引擎就是真正实现语音识别等核心算法的程序实体。它包括语记(语音+)和MSC两种引擎。

    • 我们知道,语记可以实现离线听写识别合成,那么很自然就能想到,语记这个app中是有上面说的那个“引擎”的,即语记可以不借助于任何云服务或者其他插件,就可以把你进去的音频“翻译”成文字。此即语记引擎
    • 我们还知道,官网有离线和在线版本的识别合成唤醒等各种功能的SDK,那么很自然又会想到,这个SDK中就有这个“引擎”的功能,这个引擎你可以理解为就是那个libmsc.so。此即是“MSC引擎”


    关于上面这两种引擎的设置请参考之前的帖子中engine_mode的描述
    【官方】关于SDK中engine_mode和engine_type的设置详解
    http://bbs.xfyun.cn/forum.php?mo ... 11534&fromuid=33982
    (出处: 语音云社区)

    那么到这里就要分两种情况来分析21001错误码了:
    • 当你设置引擎是语记(ENGINE_MOD=SpeechConstant.MODE_PLUS),即你本来就打算要使用语记的离线引擎功能。如果报了21001,那么就是告诉你,你没有安装语记,SDK无法实现你要语音功能。
    • 当你设置引擎是MSC(ENGINE_MOD=SpeechConstant.MODE_MSC),即你本来就打算要使用MSC的离线或者在线引擎。如果报了21001,那就是告诉你,SDK没有找到so库文件

    第一种情况比较简单,你直接下载安装语记即可解决。
    第二种情况是最常见的情况。这里说“没有找到so库”的原因可能性就太多了,下面就详细讲一下我见的比较多情况。
    • 工程中压根就没有放so库。这种情况怎么解决就不多说了
    • 混淆时没有-keep class com.iflytek.**{*;}。这种情况下有可能程序直接崩溃,而不会抛出21001,但是原理是类似的。就是SDK代码的混淆导致jni层中native方法名的混乱,从而导致在so库中找不到对应的方法,和so库没有找到(加载)的效果是一样的。
    • 虽然工程中放了so库,但是如下图所示,部分文件夹下没有放置,从而导致部分手机上面可以运行,部分手机上面运行出现21001的情况。这个和Android的so库加载机制有关,不同的平台会使用不同平台对应的文件夹下的so库,如果某平台对应的文件夹里没有libmsc.so就会报错,如果某平台对应的文件夹不存在,系统会到armeabi文件夹中去找。注意:32位so和64位so是不能通用的目前,64位在线离线功能的so均已经上线。 QQ图片20151****50331.png
    • 如果开发环境是Android Studio,那么你需要将so放在jniLibs目录下,或者在配置文件中指定so加载的路径。因为AS默认是从jniLibs目录加载so库的,这里有想详细了解的,可以自行百度一下。


    21001的分析就这么多,下面说一些题外话:
    在使用我台的SDK中遇到问题了,我们推荐大家首先在SDK文档或者论坛中搜索一下你的问题,根据我的经验大家有九成的问题都是重复的,至少有六成的问题是没有仔细看文档和Demo造成的。因此在文档和论坛中很容易找到类似问题。在论坛中没有找到需要帖子也可以自己发帖子求助,这样可以为后来的同志带来方便。
    iflytek-小黑 发表于 2015-10-12 16:11:35
    2#
    楼主棒棒哒
    使用道具 举报 回复
    发表于 2015-10-19 17:11:26
    3#
    楼主 威武
    使用道具 举报 回复
    z@pg.hn 发表于 2016-3-17 00:58:29
    4#
    还是不行
    使用道具 举报 回复
    merry 发表于 2016-7-4 21:37:27
    5#
    上面所有的问题都设置了,还是不行
    使用道具 举报 回复
    小西哥 发表于 2016-7-6 08:52:14
    6#
    merry 发表于 2016-7-4 21:37
    上面所有的问题都设置了,还是不行

    不行的话可以把logcat截图看下,是不是在load libmsc.so的时候有异常日志。
    使用道具 举报 回复
    merry 发表于 2016-7-6 15:28:23
    7#
    [img]C:\Users\admin\Pictures\QQ图片20160****52523.pngC:\Users\admin\Pictures\QQ图片20160****52740.png[/img]
    使用道具 举报 回复
    merry 发表于 2016-7-6 15:29:58
    8#
    是不是这个日志
    QQ图片20160706152523.png
    QQ图片20160706152740.png
    使用道具 举报 回复
    小西哥 发表于 2016-7-7 08:30:52
    9#
    merry 发表于 2016-7-6 15:29
    是不是这个日志

    截图没有看到有效信息呢,过滤下关键字:libmsc 。
    使用道具 举报 回复
    天亮说晚安 发表于 2016-10-12 16:53:04
    10#
    以上办法都试了,还是不行
    无标题.png
    使用道具 举报 回复