我一直试图在android驱动的智能眼镜Vuzix M300上实现语音识别(已经有了内置的解决方案,但它不支持我需要的语言)。我只想运行一个袖珍狮身人面像-android演示-应用程序(在这个配置中,我的智能手机运行得很好。)顺便说一句,我已经禁用了磨损模块)。问题是从未调用过onPartialResult()方法,也没有处理任何音频流。我立即得到的错误是:
E/声_sound_trigger_open_for_streaming_hw: int sound_trigger_open_for_streaming():DSP当前没有流E/AudioStreamIn: audio_io_handle_t、uint32_t、audio_source_t、audio_devices_t):未能打开DSP进行流式处理
异步任务完成后,应用程序就会出现错误:
09-26 15:26:27.779 9059 -9059/edu.cmu.sphinx.ocketsphinx A/libc:致命信号11 (SIGSEGV),代码1,tid 9059 (nx.pocketsphinx)中的故障地址0xc 09-26 15:26:27.881 293-293/?A/DEBUG:* * 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/DEBUG: 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/DEBUG: 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:#00PC 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 (偏移量0x1f10000) 09-26 15:26:28.052 293-293/?A/DEBUG:写到:/data/ Tombstone /tombstone_03的墓碑 09-26 15:26:28.052 293-293/?E/DEBUG: AM写失败:管道破裂 09-26 15:26:28.379 205-205/?E/低内存杀手:错误打开/proc/9059/oom_adj;errno=2
当我在类public boolean startListening(String searchName){}中进入SpeechRecognizer.class方法时,我开始有限地得到这个错误:
E/AudioStreamIn: setDevice:无效输入设备4 E/AudioIntelHal: read:未找到输入源6的声音触发手柄 E/AudioFlinger:读失败: framesRead=-22
当我点击这段代码时:this.recognizerThread.start();
重点是,标准的安卓AudioRecord在眼镜上工作得很好,没有微问题发生,但是pocketsphinx并不是简单地看到或处理音频流。所有权限都被授予,解码器已设置就绪,但没有成功。
Min版本: API 23: Android6.0 (Marshmallow)
编译SDK版本: Vuzix M300 SDK (API 23)
构建工具版本: 26.0.1
(还试用了min API 19、编译SDK 25、在smatphone上成功构建工具25.0.0,但在眼镜上没有成功)
任何帮助都是非常感谢的!
UPD:,好吧,如果audioRecord.read(buffer, 0, buffer.length);是在audioRecord.startRecording();之后调用的,那么当我命中时,一切都会冻结。
native_read_in_short_array(audioData, offsetInShorts, sizeInShorts,
readMode == READ_BLOCKING);在AudioRecord课堂上。我没有线索..。
发布于 2017-10-18 07:14:56
正如Nicolay所说,这个问题的出现是由于音频来源。我们设计的内置语音识别系统已经以某种方式阻断了VOICE_RECOGNITION源,甚至被关闭。在Pocketsphinxe的安卓源代码中的VOICE_RECOGNITION初始化中,用AudioRecord源代码替换了AudioRecord后,一切正常工作。
https://stackoverflow.com/questions/46427510
复制相似问题