Проблемы с запуском демонстрационного проекта Pocketsphinx, ошибка сегментации? - PullRequest
3 голосов
/ 20 марта 2012

Я новичок здесь, и я надеюсь, что смогу помочь с приложением 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

Я пытался найти ответ, и большинство найденных тем попросили посмотреть в файле журнала из приложения, и это, как правило, конец потока, мой проект не дает мне файл журнала (даже если код для его создания есть). Я не знаю, где искать дальше, и я надеюсь, что кто-то здесь может мне помочь.

1 Ответ

0 голосов
/ 21 марта 2012

Насколько я понял, я не понимаю, что Ошибка сегментации означает или как решить эту проблему

Если вы хотите стать разработчиком программного обеспечения, вам следует лучше изучить его подробно. Вы можете найти отправную точку из Википедии

http://en.wikipedia.org/wiki/Segmentation_fault

Обычно ошибка сегментации означает, что в вашем приложении или конфигурации есть ошибка

и большинство найденных тем попросили посмотреть в лог-файле из приложения и это были обычно конец потока, мой проект не дает мне файл журнала (даже если там есть код для создания)

Это также очень полезный совет для вас. Вам необходимо выяснить, почему файл pocketsphinx.log не создается. Это путь настроен в источниках. Скорее всего, он создан на SD-карте, но вы можете настроить другое местоположение. Содержимое этого журнала расскажет вам, в чем проблема с вашим приложением.

...