0

我一直在尝试在 android 驱动的智能眼镜 Vuzix M300 上实现语音识别(已经有一个内置的解决方案,但它不支持我需要的语言)。我正在尝试仅运行一个 pocketsphinx-android 演示应用程序(在该配置中,它在我的智能手机上运行良好。顺便说一句,我已经禁用了磨损模块)。问题是永远不会调用 onPartialResult() 方法,也不会处理音频流。我立即得到的错误是:

E/sound_trigger_hw: int sound_trigger_open_for_streaming(): DSP 当前没有流式传输 E/AudioStreamIn: intel_audio::StreamIn::StreamIn(intel_audio::Device*, audio_io_handle_t, uint32_t, audio_source_t, audio_devices_t): 无法打开 DSP 进行流式传输

设置 rcognizer 的异步任务完成后,应用程序崩溃并出现错误:

09-26 15:26:27.779 9059-9059/edu.cmu.sphinx.pocketsphinx A/libc:致命信号 11 (SIGSEGV),代码 1,tid 9059 (nx.pocketsphinx) 中的故障地址 0xc

09-26 15:26:27.881 293-293/? 一个/调试:* *

09-26 15:26:27.882 293-293/? A/DEBUG:构建指纹:'intel/m300/vm300:6.0.1/MMB29M/201709151537:user/1.2.2'

09-26 15:26:27.882 293-293/? A/DEBUG:修订:'0'

09-26 15:26:27.882 293-293/? A/调试:ABI:'x86'

09-26 15:26:27.882 293-293/? A/DEBUG:pid:9059,tid:9059,名称:nx.pocketsphinx >>> edu.cmu.sphinx.pocketsphinx <<<

09-26 15:26:27.882 293-293/? A/DEBUG:信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),故障地址 0xc

09-26 15:26:27.914 293-293/? A/DEBUG: eax f7ba6650 ebx f3d15964 ecx 00000000 edx ffd1bc78

09-26 15:26:27.914 293-293/? A/调试:esi ffd1bc78 edi f7ba66dc

09-26 15:26:27.914 293-293/? A/调试:xcs 00000023 xds 0000002b xes 0000002b xfs 00000007 xss 0000002b

09-26 15:26:27.915 293-293/? A/DEBUG:eip f3aed3bf ebp ffd1bcb8 esp ffd1bc20 标志 00210292

09-26 15:26:27.920 293-293/? A/DEBUG:回溯:

09-26 15:26:27.921 293-293/? A/DEBUG: #00 pc 005603bf /system/lib/libart.so (_ZN3art6Thread28PopDeoptimizationReturnValueEv+31)

09-26 15:26:27.921 293-293/? A/DEBUG: #01 pc 0014536b /system/lib/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+667)

09-26 15:26:27.921 293-293/? A/DEBUG: #02 pc 0052feb8 /system/lib/libart.so (_ZN3art12InvokeMethodERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectS4_S4_j+1752)

09-26 15:26:27.921 293-293/? A/DEBUG: #03 pc 004a7e41 /system/lib/libart.so (_ZN3artL13Method_invokeEP7_JNIEnvP8_jobjectS3_S3_+81)

09-26 15:26:27.921 293-293/? A/DEBUG: #04 pc 72a83ca4 /data/dalvik-cache/x86/system@framework@boot.oat (offset 0x1f10000)

09-26 15:26:28.052 293-293/? A/DEBUG:Tombstone 写入:/data/tombstones/tombstone_03

09-26 15:26:28.052 293-293/? E/DEBUG:AM 写入失败:管道损坏

09-26 15:26:28.379 205-205/? E/lowmemorykiller:打开 /proc/9059/oom_score_adj 时出错;错误号=2

当我进入public boolean startListening(String searchName){}SpeechRecognizer.class 类中的方法时,我开始收到这个错误:

E/AudioStreamIn: setDevice: 无效输入设备 4
E/AudioIntelHal: 读取: 找不到输入源 6 的声音触发句柄

E/AudioFlinger:读取失败:frameRead=-22

当我点击这段代码时:this.recognizerThread.start();

关键是标准的 android AudioRecord 在眼镜上运行良好,不会出现 micro 问题,但 pocketsphinx 并不简单地查看或处理音频流。授予所有权限,解码器已设置并准备就绪,但没有成功。

最低 SDK 版本:API 23:Android 6.0 (Marshmallow)

编译 SDK 版本:Vuzix M300 SDK (API 23)

构建工具版本:26.0.1

(还尝试过 min API 19,Compile SDK API 25,Build tool 25.0.0 在 smatphone 上成功,在眼镜上没有成功)

非常感谢任何帮助!

UPD: 好吧,如果在我点击时一切都冻结audioRecord.read(buffer, 0, buffer.length);后调用audioRecord.startRecording();

native_read_in_short_array(audioData, offsetInShorts, sizeInShorts,
                readMode == READ_BLOCKING);

在 AudioRecord 类中。那里我没有线索..

4

1 回答 1

1

正如 Nicolay 所说,问题是由于音频源而出现的。我们设计的内置语音识别系统一直在以某种方式阻止 VOICE_RECOGNITION 源,甚至被关闭。在 Pocketsphinxe 的 android 源中的 AudioRecord 初始化中用 MIC 源替换 VOICE_RECOGNITION 后,一切正常。

于 2017-10-18T07:14:56.563 回答