语音唤醒初始化失败问题
Xtra_Duke 发布于2020-08 浏览:3407 回复:3
4
收藏

现象

开始语音唤醒有下面的报错

{"error":11,"desc":"Wakeup engine model file invalid","sub_error":11005}

 

过程

官方的错误码描述是

模型文件不可用   --  11005   ( https://ai.baidu.com/ai-doc/SPEECH/qk38lxh1q )

但是模型bin文件不论是自己生成的WakeUp.bin,还是Demo里的WakeUp.bin ,按照Demo的方式放到 src/main/assets/ 下还是会报一样的错。

帖子 https://ai.baidu.com/forum/topic/show/497055 里描述的  so文件 都已经放入 jniLibs 内,但是 getApplicationContext().getApplicationInfo().nativeLibraryDir 拿到的路径下,确实没有任何 so

 

nativeLibraryDir 下没有so的原因和 Gradle Android plugin 有关。 com.android.tools.build:gradle:[版本号] ,版本号大于等于 3.6.0 的都会有类似问题

Android Gradle Plugin Version 版本在 项目根目录 build.gradle 内,或 Open Module Settings 的 Project 标签内

改成 3.5.0 之后 nativeLibraryDir 下就可以看到所有 jniLibs 下的so库,并且唤醒功能不再报错。

 

导致 so 库消失的原因是 Android Gradle Plugin 在 3.6.0 上默认关闭了 extractNativeLibs,目的是可以降低对存储空间的消耗,具体参考:https://developer.android.google.cn/studio/releases/gradle-plugin 并搜索 extractNativeLibs。

 

(规避)解决方案是,

在WakeUp.bin 没问题,语音so正确预置,并且 Gradle Android Plugin Version >= 3.6.0的前提下,修改你App的 AndroidManifest.xml ,在 application 标签内加上 android:extractNativeLibs="true"。

 

现在看下来更像是 语音 API 没有完全兼容 APK uncompressed native library 的场景,并且报的错误不是 jni库加载的问题,而是 11005-模型文件不可用 ,这应该会让开发者非常疑惑。

 

 

结论

请百度语音SDK的工程师们处理以下两个问题

1. 文档中声明,在 Android Gradle Plugin Version 大于等于 3.6.0 的项目上,要在 App 的 AndroidManifest.xml 的 application标签额外增加 android:extractNativeLibs="true" 以解决初始化失败问题

2. 正向处理掉库加载的问题,适配有 extractNativeLibs="false" 需求的应用

 

 

收藏
点赞
4
个赞
共3条回复 最后由qq928243596回复于2022-09
#4RainerSwear回复于2021-11

试了,可行。谢谢楼主

0
#3Xtra_Duke回复于2020-08
#2 用户已被禁言回复
你好,目前工程师这边验证gradle:4.0.1 运行没有报错。能否提供下复现的具体步骤。
展开

用的什么手机,Android什么版本, 只有当下面的方法输出是 "Files in nativeDir: []"  的时候才能复现。

 

Log.d("test", "Files in nativeDir: " +
Arrays.asList(new File(getApplicationContext().getApplicationInfo().nativeLibraryDir).listFiles()));

 

检查你们工程师自己的工程是不是已经设置了 android:extractNativeLibrary="true"  。

我这边的两个Huawei手机  Honor V10 Android 9.0 和 Huawei Play4T pro  Android 9.0,都不行。

0
#2用户已被禁言回复于2020-08

你好,目前工程师这边验证gradle:4.0.1 运行没有报错。能否提供下复现的具体步骤。

0
TOP
切换版块