1. 兼容性
支持Android 2.1 及以上系统。
支持arm、arm-v7a、x86架构处理器。
2. 开发环境搭建
开发者可以自行选择Android开发环境,下面主要是针对Eclipse开发环境下进行编写的。
1) 安装JDK
编者采用的版本是jdk1.6.0_20,开发者可以从以下Oracle 官网下载所需的版本:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2) 安装Eclipse Java IDE
编者采用的版本是Eclipse3.4,开发者可以从以下官网下载所需的版本:http://www.eclipse.org/
3) 安装Android SDK
编者采用的版本是Android 2.2,开发者可以去从以下Android 官方网站下载所需的版本:http://developer.android.com/sdk/
4) 安装ADT插件
启动Eclipse后,点击Eclipse的 Help->soft update->find and install->search for new features to install->new remote site->name: https://dl-ssl.google.com/android/eclipse/,完成安装后重启Eclipse;
5) 安装Android DDMS和Android Development Tools
至此,您已经完成了Android开发环境的搭建,更多Android了解请参考SDK的开发指导文档。
3. 引入SDK文件
在开发应用前,需要将灵云SDK中的Jar包文件(.jar)和相应的动态运行库(.so)引入到工程中。
1) 在工程中创建libs文件夹,将相应的jar文件拷贝到libs根目录下,将相应的so文件拷贝到libs\armeabi(或libs\armeabi-v7a)目录下。
2) 通过菜单 Project->Properties->Java Build Path->Libraries->Add JARS或ADD External JARS引入相应的Jar包。
具体需要引入的文件和开发者所需要使用的能力有关。
3.1 ASR能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_asr.so
libhci_asr_jni.so
云端识别
libhci_asr_cloud_recog.so
libjtspeex.so 或者 libjtopus.so (根据所使用的编解码格式进行选择)
本地语法识别
libhci_asr_local_recog.so
本地资源文件:
使用本地语音识别能力,需要相应的资源文件。具体可参照 ASR能力描述 进行选择。
使用ASR录音机,需要增加 jar包文件
hcicloud_recorder-5.0.0.jar
3.2 TTS能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_tts.so
libhci_tts_jni.so
云端合成
libhci_tts_cloud_synth.so
libjtspeex.so 或者 libjtopus.so (根据所使用的编解码格式进行选择)
本地合成
libhci_tts_local_synth.so
libhci_tts_local-v5_synth.so(不支持VFP选项适配版本)
本地资源文件:
使用本地语音合成能力,需要相应的资源文件。具体可参照 TTS能力描述 进行选择。
使用TTS播放器,需要增加 jar包文件
hcicloud_player-5.0.0.jar
3.3 HWR能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_hwr.so
libhci_hwr_jni.so
云端识别
libhci_hwr_cloud_recog.so
本地识别
libhci_hwr_local_recog.so
联想功能
libhci_hwr_associate.so
拼音功能
libhci_hwr_pinyin.so
笔形功能
libhci_hwr_penscript.so
本地资源文件:
使用本地手写识别能力,需要相应的资源文件。具体可参照 HWR能力描述 进行选择。
3.4 OCR能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libjtz.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_ocr.so
libhci_ocr_jni.so
云端识别
libhci_ocr_cloud_recog.so
本地识别
libhci_ocr_local_recog.so
本地模板识别
libhci_ocr_local_recog_template.so
本地名片识别
libhci_ocr_local_recog_bizcard.so
本地资源文件:
使用本地光学字符识别能力,需要相应的资源文件。具体可参照 OCR能力描述 进行选择。
如果使用拍图器,需要增加 jar包文件
hcicloud_capture-5.0.0.jar
3.5 MT能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_mt.so
libhci_mt_jni.so
云端识别
libhci_mt_cloud_trans.so
本地识别(暂不支持)
libhci_mt_local_trans.so
3.6 NLU能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_nlu.so
libhci_nlu_jni.so
云端识别
libhci_nlu_cloud_recog.so
本地识别(暂不支持)
libhci_nlu_local_recog.so
3.7 KB能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_kb.so
libhci_kb_jni.so
云端识别(暂不支持)
libhci_kb_cloud_recog.so
本地识别
libhci_kb_local_recog.so
3.8 VPR能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_vpr.so
libhci_vpr_jni.so
云端识别
libhci_vpr_cloud_recog.so
libjtspeex.so 或者 libjtopus.so (根据所使用的编解码格式进行选择)
3.9 VPR能力
jar包文件
hcicloud-5.0.0.jar
so文件
必选模块
libstlport_shared.so
libhci_curl.so
libhci_sys.so
libhci_sys_jni.so
libhci_fpr.so
libhci_fpr_jni.so
云端识别
libhci_fpr_cloud_recog.so
本地识别
libhci_fpr_local_recog.so
3.10 注意
如果能确认终端支持硬浮点 (armv7a以上CPU)版本sdk,可以使用armeabi-v7a目录替代armeabi目录, 并拷贝SDK中armeabi-v7a目录下的.so文件,这样速度会更快。SDK的armeabi-v7a目录中不存在的so文件需从armeabi目录拷贝。
armeabi和armeabi-v7a两个目录也可以都存在,在apk包安装时会自动根据终端的CPU架构进行安装最合适的库, 但是这样会造成apk包较大。
libjtopus.so是opus编码库,libjtspeex.so是speex编码库,仅在使用云端ASR或者TTS时候用于音频压缩。 应用可以根据需要的编码方式(请参 音频编解码库 ),选择其中合适的编码库,这样可以减少应用包的大小.
4. 配置Manifest
在工程AndroidManifest.xml文件中添加如下权限:
5. 本地资源文件
当使用本地能力时,需要在本地存放资源文件。并在能力初始化时通过指定dataPath告知资源所在路径。
每种本地能力,所需要的资源文件并不相同,在实际使用时,可以只拷贝所使用能力对应的资源文件, 这样可以减少所占用的外部存储空间。具体每种本地能力所需要的本地资源文件,请参见 能力列表 。
本地资源文件的存放有如下两种方法。
5.1 存放在外部存储上
此种方式是将资源文件存放在外部存储上,在能力初始化时指定dataPath参数为资源文件的存放目录。 以/mnt/sdcard/HciCloudTtsPlayerExample/tts/data目录为例,其下存放了本地能力(tts.local.xiaokun)所需要的TTS资源文件:
XiaoKun.voclib
Letter_XiaoKun.voclib
开发者可以将这些库文件作为assets中的资源,并在程序启动时拷贝到外部存储上;也可以在发布时不带这些资源文件, 而是在运行时让用户下载到外部存储上。
如果外部存储发生故障(例如sd卡被拔出),则可能会影响对应本地能力的正常使用。
5.2 存放在内部存储上
为了便于应用的发布与管理,灵云SDK也支持将本地资源文件随应用安装在内部存储上, 但此种存放方法需要开发者满足以下要求,灵云SDK才能正常访问这些资源文件:
1) 对资源文件进行特殊命名。以本地能力(tts.local.xiaokun)所需要的TTS资源文件为例,以下示例了这种命名规则:
libXiaoKun.voclib.so(在原文件名前加lib前缀与.so后缀)
libLetter_XiaoKun.voclib.so(在原文件名前加lib前缀与.so后缀)
2) 将重新命名过的本地资源文件拷贝到libs根目录下。
3) 在能力初始化时,指定dataPath参数为 /data/data/appname/lib (appname为应用包的名称)
4) 在能力初始化时,指定fileFlag参数为android_so(默认为none)
所有需要的本地资源文件都需要按以上规则进行名字的改动,并拷贝到libs目录下。 通过这种方式,这些资源文件会被打包在APK中,并在安装时,被放在 /data/data/appname/lib 下。 通过指定fileFlag为android_so,灵云SDK就会按照特殊的命名方式来读取这些文件。