android - 运行 Pocketsphinx 演示项目时出现问题,段错误?

标签 android segmentation-fault cmusphinx

我是新来的,我希望我能在使用 Pocketsphinx(带有 NDK)的 Android 应用程序方面得到一些帮助。

我正在为一个学校项目做这项工作,我们正在制作一个 GPS,我们想添加一些离线语音识别,Pocketsphinx 似乎是可行的方法所以我下载了 libraris sphinxbase 和 pocketsphinx 以及它们的演示项目有。

经过安静的大量修复和尝试(首先是安装和习惯 Ubuntu,修复我在尝试编译库时遇到的错误,尝试使用 NDK 构建库以获取 .so 文件的错误,问题该项目没有适用于 Android 的正确库并将其转换为 2.1 项目以在我的手机上进行测试)我能够让程序运行(尽管出于某种原因我必须在它出现之前将其启动 2 ro 3 次我的手机)。

当我尝试使用演示项目时出现了我的问题,对于那些不知道它看起来如何的人来说它只是一个简单的文本区域和一个按钮,你按下按钮它开始录音然后你说话并输入语音应该在该区域显示为文本,一旦我单击此按钮它就会关闭。它不会崩溃,进程会终止,但我没有得到堆栈跟踪。从我从调试信息中看到的情况来看,它开始了记录过程,但随后崩溃了,我猜它是在它即将开始使用 native 代码进行工作时崩溃的。

从我得到的不清楚的调试信息中,我可以了解到 native 环境正在关闭,我从调试中得到一 strip 有标记 Zygote 的消息,消息是“Process X terminated by signal(11)”。通过搜索,我了解到这很可能意味着段错误 (SIGSEGV)。

据我所知,我对段错误的含义或如何解决此问题没有真正的了解。下面我将添加日志的一部分,这是我在程序终止之前看到的内容,如果您需要日志中的更多信息,请告诉我什么以及如何获取它,因为我不确定哪些信息会有帮助。

我正在使用 Eclipse 和 Android 插件开发 Ubuntu 11.10,我的手机是 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

我一直在努力寻找答案,我发现的大多数线程都要求查看应用程序的日志文件,而那些通常是线程的末尾,我的项目没有给我日志文件(即使创建一个的代码在那里)。我不知道下一步该去哪里,我希望这里有人能帮我一把。

最佳答案

This is as far as I have gotten, I have no real understanding of what segmentation fault means or how to resolve this problem

如果你想成为一名软件开发人员,你最好详细学习它。你可以从维基百科找到一些起点

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

通常段错误意味着您的应用程序或配置中存在错误

and most threads I found asked to look in the log file from the app and those were usually the end of the thread, my project doens't give me a log file (even if the code to create on is there)

这对您来说也是一个完全有效的建议。您需要找出没有创建文件 pocketsphinx.log 的原因。它的路径在源中配置。它很可能是在 SD 卡上创建的,但您可以配置其他位置。此日志的内容将告诉您您的应用程序存在什么问题。

关于android - 运行 Pocketsphinx 演示项目时出现问题,段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9785463/

相关文章:

android - fade_out,插值器使应用程序崩溃

c - GNU C 库中的 opendir( ) sigsegv

c++ - union 中的字符串、段错误

android - 安卓语音识别

android - 在 Android 中将音乐或声音从手机流式传输到手机

android - 如何替换 xml 项目的可绘制源

c++ - 在 std::list 上 push_back 或删除时出现段错误

speech-recognition - 有人有使用 Sphinx 语音识别的经验吗?

node.js - 当 NodeJS 执行时,PocketSphinx 无法从 stdin 读取

Android 应用程序在尝试从库项目加载布局时崩溃