2011-03-02 5 views
4

Android에서 CMU pocketsphinx 음성 인식기의 구현 예를 제공하는 PocketSphinxAndroidDemo를 컴파일하려고합니다. 먼저 here 토론과 비슷한 오류가 발생했습니다. NDK 빌드를 실행 한 후,이 오류가있어 :NDK를 사용하여 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: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와 재건의 추천을 시도를하지만, 작동하지 않았다.

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

이 PocketSphinxAndroidDemo를 컴파일하려고 누구도이 문제가 발생 했 : 나는 다음은 err.h 위해 포함 변경할 수있는 JNI/pocketsphinx.i 꿀꺽 꿀꺽 파일을 수정? 내 편집 내 편집에 더 얻을 수 있도록 듯하지만, 지금은 조립 관련 오류 받고 있어요 : 다시

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 

는, 사람이이 문제를 해결하는 방법을 알고 않습니다를? 나는이 문제에 대해 불평하는 어떤 개발자도 보지 못했고, 그래서 나는 더 나아갈 것을 주저한다. 당신의 도움을 주셔서 감사합니다.

+0

내 코드는 아래에있는 내 솔루션을 사용하여 컴파일 할 수있었습니다; 그러나 나는 이것이 필요하다는 것을 확신하지 못한다. 왜냐하면 나는 똑같은 일을해야하는 다른 사람에 대해 읽지 않았기 때문이다. 그러니 자유롭게 해결책을 제안하십시오. –

답변

2

분명히 일부 소스는 여전히 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 

난 아직도 궁금.

1

편집 파일 JNI/Android.mk

변경 라인 162 :

LOCAL_STATIC_LIBRARIES := sphinxutil sphinxfe sphinxfeat sphinxlm pocketsphinx 

에 :

LOCAL_STATIC_LIBRARIES := pocketsphinx sphinxlm sphinxfeat sphinxfe sphinxutil 
관련 문제