离(在)线语音识别,android 非intent+SpeechRecognizer方式
158*****288 发布于2016-04 浏览:2750 回复:1
0
收藏

我想做语音识别是这样的:

       (以Android平台为例)在native C/C++层通过JNI调用Baidu的Java SDK,希望是给BaiduSDK传PCM数据,然后得出识别结果,最好是能够离线。


针对Baidu语言识别SDK,提供的android demo,我做了这些了解:

1. 首先review了Baidu_Voice_Combine_SDK_Android(VoiceRecognition-2.0.1.jar)的demo逻辑。

发现这个SDK通过intent的方式,并实现了一个Android框架下的RecognitionService,最终提供开发者一个"Baidu版的"SpeechRecognizer。

据Android reference http://developer.android.com/reference/android/speech/SpeechRecognizer.html文档显示,SpeechRecognizer所有调用都只能在UI线程。这样底层就C/C++就无法做线程异步逻辑。

    总体上,Combine包虽然提供了部分离线ASR的feature,但是对调用线程有要求。


2. 转而,我分析了一下Baidu-Voice-SDK-Android-1.6.2(VoiceRecognition-1.6.2.jar)的demo

从该demo来看,Baidu的SDK提供了接受PCM数据的接口,并且没有明显的线程要求。但是该SDK貌似无法实现离线识别功能


请教的问题:

1. 目前在Android/iOS native C/C++ 下Baidu语音识别是否还无法同时满足以下需求

  1. * 无线程调用限制
  2. * 能接收PCM数据(已按Baidu要求resample成8kHz或16kHz)
  3. * 离线(或"离在线融合")

2. 如果Baidu开放语音识别SDK无法同时满足这样的需求,是否有商务合作的可能?


Thx!~~




收藏
点赞
0
个赞
共1条回复 最后由用户已被禁言回复于2022-04
#2c5812回复于2016-04

关于问题1:

-  natvie代码可以访问主线程,并且跨线程是android开发的基本的技能,可以从网上找到大量资料

- 2.x版本的Android SDK可以通过infile参数直接传入pcm的路径(并且该参数也支持实时音频流,如果对java熟悉的话应该不会太难),可以参考http://yuyin.baidu.com/docs/asr/169的infile或demo。

- 离线也支持infile参数,参考上一段


关于问题2:

- 可以发送邮件至voice_feedback@baidu.com 

0
TOP
切换版块