尝试使用 NDK 构建 PocketSphinxAndroidDemo 时出现问题

2023-12-08

我正在尝试编译 PocketSphinxAndroidDemo,它提供了 Android 上 CMU pocketsphinx 语音识别器的示例实现。我首先收到类似于讨论的错误here。执行 ndk-build 后,出现以下错误:

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Compile thumb  : pocketsphinx_jni <= pocketsphinx_wrap.c
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c:761:28: error: sphinxbase/err.h: No such file or directory
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c: In function 'Java_edu_cmu_pocketsphinx_pocketsphinxJNI_Decoder_1processRaw_1_1SWIG_10':
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c:1441: warning: assignment discards qualifiers from pointer target type
make: *** [/home/nick/workspace/android/PocketSphinxDemo/obj/local/armeabi/objs-debug/pocketsphinx_jni/pocketsphinx_wrap.o] Error 1

我尝试了重建的建议sphinxbase and pocketsphinx库并重建ndk-build -B,但这没有用。然后我修改了 jni/pocketsphinx.i swig 文件以更改 err.h 的包含内容:

#include <pocketsphinx.h>
//#include <sphinxbase/err.h>
#include <err.h>

有尝试编译 PocketSphinxAndroidDemo 的人遇到过这个问题吗?我的编辑似乎让我可以进一步进行编译,但现在我遇到了与程序集相关的错误:

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Compile thumb  : pocketsphinx_jni <= pocketsphinx_wrap.c
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c: In function 'Java_edu_cmu_pocketsphinx_pocketsphinxJNI_Decoder_1processRaw_1_1SWIG_10':
/home/nick/workspace/android/PocketSphinxDemo/jni/pocketsphinx_wrap.c:1442: warning: assignment discards qualifiers from pointer target type
Compile thumb  : sphinxfeat <= cmn.c
/tmp/cceyE035.s: Assembler messages:
/tmp/cceyE035.s:655: Error: selected processor does not support `smull r1,r2,r0,r4'
/tmp/cceyE035.s:657: Error: unshifted register required -- `orr r1,r1,r2,lsl#20'
/tmp/cceyE035.s:932: Error: selected processor does not support `smull r1,r2,r0,r4'
/tmp/cceyE035.s:934: Error: unshifted register required -- `orr r1,r1,r2,lsl#20'
make: *** [/home/nick/workspace/android/PocketSphinxDemo/obj/local/armeabi/objs-debug/sphinxfeat/cmn.o] Error 1

再次,有人知道如何解决这个问题吗?我还没有看到任何其他开发人员抱怨这个问题,所以我犹豫是否要进一步解决。感谢您的帮助。


显然,一些源代码仍然需要标记为 ARM 编译。我修改了 Android.mk 的以下部分,将 cmn.c 和 lda.c 设置为使用 ARM 进行编译。

include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(SPHINX_PATH)/sphinxbase/include/android $(SPHINX_PATH)/sphinxbase/include
LOCAL_CFLAGS += -DHAVE_CONFIG_H
LOCAL_CFLAGS += -DANDROID_NDK

LOCAL_PATH := $(SPHINX_PATH)/sphinxbase/src/libsphinxbase/feat
LOCAL_MODULE := sphinxfeat

LOCAL_SRC_FILES := \
    agc.c \
    cmn.c.arm \
    cmn_prior.c.arm \
    feat.c \
    lda.c.arm

我仍然想知道是否其他人必须这样做才能使他们的代码成功编译。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试使用 NDK 构建 PocketSphinxAndroidDemo 时出现问题 的相关文章

随机推荐

  • 如何在opencl中创建离线编译并创建其二进制文件?

    在OpenCl的在线编译中 我们要做 program clCreateProgramWithSource context 1 const char source str const size t source size ret 但是 对于
  • Gradle 依赖项中的重复类

    我正在构建一个 Android 应用程序 并使用 recaptcha 和 easywsdl 存储库 这两个存储库都包含 okhttp 和 okio jar 并且在启动存在重复类的应用程序时出现错误 然而 这些并不相同 如果我从项目中排除 o
  • YouTube API 用于获取频道上的所有视频

    我们需要一个按 YouTube 频道名称排列的视频列表 使用 API 我们可以使用以下 API 获取频道列表 仅频道名称 https gdata youtube com feeds api channels v 2 q tendulkar
  • 在模态上滚动时防止触摸设备上的主体滚动

    我正在开发一个网络应用程序 该应用程序使用大量模态叠加层以及模态中的可滚动内容 在触摸设备上 特别是在 Android 上 移动浏览器希望滚动模式后面的正文内容 而不是模式内的实际可滚动内容区域 或者 如果内容确实滚动 当它到达可滚动区域的
  • 将 byte[] 转换为图像

    我已将图像上传到我的数据库中byte 现在我想把它展示出来 出现错误 用户代码未处理参数异常Parameter is not valid 在这一行 newImage System Drawing Image FromStream strea
  • 使用 JSoup 从表中提取数据

    我想使用 JSoup 框架提取该表 以将内容保存在 表 数组中 第一个 tr 标签是表头 以下所有内容 不包括在内 描述了该内容 table width 100 cellspacing 0 cellpadding 4 border 1 tr
  • 只允许图像FILE_UPLOAD

    基本上下面的代码只允许图片通过我添加的 mov and mp4到允许列表 但上传时它仍然输出该文件不是图像 只是想知道我哪里出了问题 帖子及形式
  • 如何使用手柄在android中缩放视图?

    我正在尝试实现一个手柄来缩放 android 中的视图 我不想使用多点触控之类的东西 而是希望能够仅用一根手指来调整图像大小 这是我的活动代码 我觉得好像我非常接近 但有五件事无法正常工作 缩放已关闭 它的增长速度比应有的要快得多 Solv
  • 在运行时确定泛型方法参数的类型

    给定一个具有以下结构的类 我试图确定泛型方法的调用者分配的参数 T 的类型 public class MyClass public
  • 使用 GKMatch 的 Game Center 多人游戏但似乎无法连接

    大家好 我是 iOS 游戏中心的新人 我正在尝试将使用匹配的多人游戏功能添加到我的游戏中并遵循文档 到目前为止 我的 2 个客户端可以成功获得匹配 即调用 matchmakerViewController didFindMatch 回调并传
  • 使用 Google Apps 脚本将数据从数组复制/推送到工作表范围,一次一行

    我在原始表上使用 getValues 创建了一个多维数组sheetValues 我想将sheetValues数组中的值复制到目标工作表中 如何将sheetValues数组每行的内容推送到目标工作表中 什么函数允许我将数组的每一行一次一行 检
  • 如何知道我在 Windows 批处理文件中连接的是哪个 SSID?

    目前 我有 2 个批处理文件 可以使用注册表编辑器打开和关闭代理 Like reg add HKCU Software Microsoft Windows CurrentVersion Internet Settings v ProxyEn
  • java 9未命名模块在调试时从两者读取包[X](使用IntelliJ)

    在我的项目中 我有一个使用多个第三方库的包 让我们看一下依赖树 INFO commons logging commons logging jar 1 2 compile INFO org apache directory studio or
  • id:css中的悬停id?是否可以?

    这是我的 html 代码 div div div div div div div div 这是我的 CSS 代码 这个悬停为什么不起作用 谁来帮帮我 我需要当我悬停 id 1时 将更改背景颜色 id 2 因为这些 div
  • XTS 将函数应用于一天中的时间子集?

    如何将汇总函数应用于一天中的时间子集 例如 r T16 00 T17 00 Value 我怎样才能应用类似的东西function x quantile x c 90 每天样本小时的价值 您可以使用apply daily在完成一天中的时间子集
  • 正则表达式匹配空格,但不在“字符串”中

    仅当空格未用双引号 括起来时 我才会查找匹配空格的正则表达式 例如 在 Mary had a little lamb 它应该匹配第一个和第二个空格 但不匹配其他空格 我想分割字符串only不在双引号内的空格处 也不在引号处 我正在使用 C
  • 有没有更快的 CountIF

    正如标题所说 是否有任何函数或 VBA 代码可以执行与 countif 相同的功能并且速度更快 目前正处于大规模计数阶段 它正在耗尽我的 CPU 它只是工作表中的基本计数 不在 VBA 中 countif X X Y 然而 名单非常庞大 所
  • 模拟器总是崩溃并显示错误“等待设备时出错:AVD 的模拟器进程已终止”

    我现在被困在假设它的硬件上 但没有太大意义 因为它以前可以工作 并且突然停止了 昨天一整天 当尝试在任何设备 任何 api 任何应用程序中打开模拟器 包括仅打开模拟器本身 时 我收到此崩溃消息 我尝试过卸载并安装 android studi
  • 在 Apache Spark Python 中自定义 K-means 距离公式

    现在我使用 K means 进行聚类和跟踪本教程 and API 但我想使用自定义公式来计算距离 那么如何使用 PySpark 在 k means 中传递自定义距离函数呢 一般来说 使用不同的距离度量没有意义 因为 k 均值 与k 中心点
  • 尝试使用 NDK 构建 PocketSphinxAndroidDemo 时出现问题

    我正在尝试编译 PocketSphinxAndroidDemo 它提供了 Android 上 CMU pocketsphinx 语音识别器的示例实现 我首先收到类似于讨论的错误here 执行 ndk build 后 出现以下错误 Gdbse