Я новичок здесь, и я надеюсь, что смогу помочь с приложением Android, используя Pocketsphinx (с NDK).
Я делаю эту работу для школьного проекта, где мы создаем GPS, и мы хотели добавить офлайн распознавание голоса, Pocketsphinx, кажется, является подходящим способом, поэтому я скачал libraris sphinxbase и pocketsphinx, а также демопроект, который они иметь.
После большого количества исправлений и попыток (сначала установки и привыкания к Ubuntu, исправления ошибок, возникающих при попытке скомпилировать библиотеки, ошибок при попытке собрать библиотеки с помощью NDK для получения файла .so, проблемы с проектом, не имеющим нужных библиотек для Android, и преобразованием его в проект 2.1 для тестирования на моем телефоне) я смог запустить программу (хотя по какой-то причине я должен запустить ее 2 раза 3 раза, прежде чем она появится на мой телефон).
Моя проблема возникает, когда я пытаюсь использовать демонстрационный проект, для тех, кто не знает, как он выглядит, это просто простая текстовая область и кнопка, вы нажимаете кнопку, чтобы она начала запись, а затем говорите и вводите речь должна появиться как текст в области, как только я нажимаю на эту кнопку, она закрывается. Он не падает, процесс умирает, но я не получаю трассировку стека. Из того, что я вижу из отладочной информации, он запускает процесс записи, но затем падает после этого, я полагаю, что он аварийно завершает работу, когда собирается начать работу с собственным кодом.
Что я могу понять из неясной информации отладки, которую я получаю, так это то, что Native-среда закрывается, я получаю сообщение отладки с тегом Zygote и сообщением «Процесс X завершен сигналом (11)». Из моего поиска я узнал, что это, скорее всего, означает ошибку сегментации (SIGSEGV).
Насколько я понял, у меня нет реального понимания того, что означает ошибка сегментации или как решить эту проблему. Ниже я добавлю часть журнала, это то, что я вижу перед смертью программы, если вам нужна дополнительная информация из журналов, пожалуйста, скажите мне, что и как получить, поскольку я очень не уверен, какая информация будет полезна.
Я работаю над Ubuntu 11.10 с Eclipse и плагинами Android, мой телефон - Sony Ericsson Xperia, если это уместно, работает под управлением некоторой версии Sony Ericsson Android 2.1, библиотеки sphinx - это последняя версия с веб-сайта проектов Sphinx.
Надеюсь, что кто-то здесь может дать мне какой-то способ продолжить работу над этим, я в основном разработчик Java, но я проделал некоторую работу на C ++, поэтому, если потребуется, я тоже покопаюсь в коде C, но я надеюсь, что это так. не зайду так далеко.
Вот выдержка из журнала:
03-20 11:37:22.676: D/edu.cmu.pocketsphinx.demo.RecognizerTask(385): signalling START
03-20 11:37:22.676: D/edu.cmu.pocketsphinx.demo.RecognizerTask(385): signalled START
03-20 11:37:22.676: D/edu.cmu.pocketsphinx.demo.RecognizerTask(385): gotSTART
03-20 11:37:22.676: D/edu.cmu.pocketsphinx.demo.RecognizerTask(385): START
03-20 11:37:22.806: D/edu.cmu.pocketsphinx.demo.PocketSphinxDemo(385): Showing Dialog
03-20 11:37:22.826: I/AudioHardwareQSD(1066): AudioHardware PCM record is going to standby.
03-20 11:37:22.836: I/AudioHardwareQSD(1066): AudioHardware PCM record is going to standby.
03-20 11:37:22.836: D/dalvikvm(385): +++ not scanning '/system/lib/libwebcore.so' for 'Decoder_startUtt__SWIG_0' (wrong CL)
03-20 11:37:22.836: D/dalvikvm(385): +++ not scanning '/system/lib/libexif.so' for 'Decoder_startUtt__SWIG_0' (wrong CL)
03-20 11:37:22.846: I/DEBUG(1063): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-20 11:37:22.846: I/DEBUG(1063): Build fingerprint: 'SEMC/X10i_1234-9753/X10i/es209ra:2.1-update1/2.1.A.0.435/TP7d:user/release-keys'
03-20 11:37:22.846: I/DEBUG(1063): pid: 385, tid: 395 >>> edu.cmu.pocketsphinx.demo <<<
03-20 11:37:22.846: I/DEBUG(1063): signal 11 (SIGSEGV), fault addr 0000001c
03-20 11:37:22.846: I/DEBUG(1063): r0 00000000 r1 00000000 r2 00000154 r3 8c6d703c
03-20 11:37:22.846: I/DEBUG(1063): r4 00000000 r5 81356e14 r6 475c8d6c r7 00000000
03-20 11:37:22.846: I/DEBUG(1063): r8 475c8d6c r9 00000154 10 43117f40 fp 00123e08
03-20 11:37:22.846: I/DEBUG(1063): ip 8130c191 sp 475c8d18 lr 8130c1a1 pc 8130d568 cpsr 40000030
03-20 11:37:22.866: I/DEBUG(1063): #00 pc 0000d568 /data/data/edu.cmu.pocketsphinx.demo/lib/libpocketsphinx_jni.so
03-20 11:37:22.866: I/DEBUG(1063): #01 pc 0000c19c /data/data/edu.cmu.pocketsphinx.demo/lib/libpocketsphinx_jni.so
03-20 11:37:22.876: I/DEBUG(1063): #02 pc 0000edb4 /system/lib/libdvm.so
03-20 11:37:22.876: I/DEBUG(1063): code around pc:
03-20 11:37:22.876: I/DEBUG(1063): 8130d558 447db089 1c0458ab 681b1c0f 93074691
03-20 11:37:22.876: I/DEBUG(1063): 8130d568 2b0069c3 e0d3d100 36301c06 f0331c30
03-20 11:37:22.876: I/DEBUG(1063): code around lr:
03-20 11:37:22.876: I/DEBUG(1063): 8130c190 b083b500 21001c10 93019200 f9d6f001
03-20 11:37:22.876: I/DEBUG(1063): 8130c1a0 bd00b003 b084b510 93019200 23001c10
03-20 11:37:22.876: I/DEBUG(1063): 8130c1b0 93022400 f0009403 f030fe3b 9903fc47
03-20 11:37:22.876: I/DEBUG(1063): stack:
03-20 11:37:22.876: I/DEBUG(1063): 475c8cd8 7fffffff
03-20 11:37:22.876: I/DEBUG(1063): 475c8cdc ab227f0f /system/lib/libmedia.so
03-20 11:37:22.876: I/DEBUG(1063): 475c8ce0 afe3db7c
03-20 11:37:22.876: I/DEBUG(1063): 475c8ce4 afe0f130 /system/lib/libc.so
03-20 11:37:22.876: I/DEBUG(1063): 475c8ce8 afe3db7c
03-20 11:37:22.876: I/DEBUG(1063): 475c8cec afe0f130 /system/lib/libc.so
03-20 11:37:22.876: I/DEBUG(1063): 475c8cf0 00000000
03-20 11:37:22.876: I/DEBUG(1063): 475c8cf4 afe0f048 /system/lib/libc.so
03-20 11:37:22.876: I/DEBUG(1063): 475c8cf8 afe3d9c4
03-20 11:37:22.876: I/DEBUG(1063): 475c8cfc 00002004
03-20 11:37:22.876: I/DEBUG(1063): 475c8d00 00000001
03-20 11:37:22.876: I/DEBUG(1063): 475c8d04 078bcd20
03-20 11:37:22.876: I/DEBUG(1063): 475c8d08 00000209
03-20 11:37:22.886: I/DEBUG(1063): 475c8d0c b0000463 /system/bin/linker
03-20 11:37:22.886: I/DEBUG(1063): 475c8d10 df002777
03-20 11:37:22.886: I/DEBUG(1063): 475c8d14 e3a070ad
03-20 11:37:22.886: I/DEBUG(1063): #00 475c8d18 00000000
03-20 11:37:22.886: I/DEBUG(1063): 475c8d1c afe0f048 /system/lib/libc.so
03-20 11:37:22.886: I/DEBUG(1063): 475c8d20 afe3d9c4
03-20 11:37:22.886: I/DEBUG(1063): 475c8d24 0014bac0 [heap]
03-20 11:37:22.886: I/DEBUG(1063): 475c8d28 003952b8 [heap]
03-20 11:37:22.886: I/DEBUG(1063): 475c8d2c 0000a000 [heap]
03-20 11:37:22.886: I/DEBUG(1063): 475c8d30 ad00ef40 /system/lib/libdvm.so
03-20 11:37:22.886: I/DEBUG(1063): 475c8d34 8c6d703c
03-20 11:37:22.886: I/DEBUG(1063): 475c8d38 0014ba78 [heap]
03-20 11:37:22.886: I/DEBUG(1063): 475c8d3c 475c8d6c
03-20 11:37:22.886: I/DEBUG(1063): 475c8d40 43117f54
03-20 11:37:22.886: I/DEBUG(1063): 475c8d44 475c8d90
03-20 11:37:22.886: I/DEBUG(1063): 475c8d48 00000004
03-20 11:37:22.886: I/DEBUG(1063): 475c8d4c 458ad8c8 /mspace/dalvik-heap/2 (deleted)
03-20 11:37:22.886: I/DEBUG(1063): 475c8d50 43117f60
03-20 11:37:22.886: I/DEBUG(1063): 475c8d54 8130c1a1 /data/data/edu.cmu.pocketsphinx.demo/lib/libpocketsphinx_jni.so
03-20 11:37:22.886: I/DEBUG(1063): #01 475c8d58 00000000
03-20 11:37:22.886: I/DEBUG(1063): 475c8d5c 00000000
03-20 11:37:22.886: I/DEBUG(1063): 475c8d60 430fdfae /data/dalvik-cache/data@app@edu.cmu.pocketsphinx.demo.apk@classes.dex
03-20 11:37:22.886: I/DEBUG(1063): 475c8d64 ad00edb8 /system/lib/libdvm.so
03-20 11:37:23.026: D/Zygote(1065): Process 385 terminated by signal (11)
03-20 11:37:23.056: I/ActivityManager(1140): Process edu.cmu.pocketsphinx.demo (pid 385) has died.
03-20 11:37:23.056: I/UsageStats(1140): Unexpected resume of com.android.launcher while already resumed in edu.cmu.pocketsphinx.demo
03-20 11:37:23.056: I/WindowManager(1140): WIN DEATH: Window{45f50c48 edu.cmu.pocketsphinx.demo/edu.cmu.pocketsphinx.demo.PocketSphinxDemo paused=false}
03-20 11:37:23.086: I/AudioHardwareQSD(1066): AudioHardware PCM record is going to standby.
03-20 11:37:23.116: W/InputManagerService(1140): Got RemoteException sending setActive(false) notification to pid 385 uid 10106
Я пытался найти ответ, и большинство найденных тем попросили посмотреть в файле журнала из приложения, и это, как правило, конец потока, мой проект не дает мне файл журнала (даже если код для его создания есть). Я не знаю, где искать дальше, и я надеюсь, что кто-то здесь может мне помочь.