gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:10 25 4
gpt4 key购买 nike

我正在尝试编译 PocketSphinxAndroidDemo,它提供了 CMU pocketsphinx 语音识别器在 Android 上的示例实现。我第一次收到类似讨论的错误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

我尝试了重建 sphinxbasepocketsphinx 库并使用 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

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

关于android - 尝试使用 NDK 构建 PocketSphinxAndroidDemo 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5169699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com