public class ResourceUtil
extends java.lang.Object
资源辅助类,将资源目录,转换为SDK要求的目录形式。
SDK要求的文件目录格式如下(由此类的函数生成,不关心的用户可忽略),两个文件间,
以英文分号";"分隔:
fd|file_info|offset|length;
fo|file_info|offset|length;
其中fd表示文件标识符,通过assets、res读取时传递,fo表示文件路径方式。
注意:每次通过generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String)
生成assets、res的文件路径后,都会生
成一个文件句柄,为了使句柄释放,需要通过对应的设置资源路径函数传给SDK,用于使用或释放,
以免造成内存泄露。关于资源路径设置,请参考具体的业务类说明。
SDK加载离线资源有三种方式:
1,通过SpeechUtility.createUtility(Context, java.lang.String)
初始化SDK时加载,通过
设置ENGINE_START
参数,并根据业务不同,指定以下一个或多个的资源路径参数:
TTS_RES_PATH
,
ASR_RES_PATH
,
SpeechConstant.IVW_RES_PATH
,
SpeechConstant.IVW_ENROLL_RES_PATH
。
2,通过SpeechUtility.setParameter(String, String)
加载,通过
设置ENGINE_START
参数,并根据业务不同,指定以下一个或多个的资源路径参数:
TTS_RES_PATH
,
ASR_RES_PATH
,
SpeechConstant.IVW_RES_PATH
,
SpeechConstant.IVW_ENROLL_RES_PATH
。
3,通过各业务开始会话的函数加载,通过各业务的setParameter函数,如
SpeechRecognizer.setParameter(String, String)
,根据业务不同,
设置以下资源路径参数中的一个:
TTS_RES_PATH
,
ASR_RES_PATH
,
SpeechConstant.IVW_RES_PATH
,
SpeechConstant.IVW_ENROLL_RES_PATH
。
在同一业务,新的资源加载后,上一个资源将自动被释放。如合成中,如果各发音人资源文件是 分开的,则在加载当前发音人资源后,上一发音人资源将自动被释放。如果要释放当前的资源, 而不加载新的资源,需要同时销毁离线引擎,有以下三种方式:
1,通过SpeechUtility.setParameter(String, String)
,设置参数
ENGINE_DESTROY
即可。
2,通过各业务的destory函数销毁:
SpeechRecognizer.destroy()
,
SpeechSynthesizer.destroy()
,
VoiceWakeuper.destroy()
。
3,通过SpeechUtility.destroy()
销毁。
另外,在应用退出后,所有应用相关的资源会被销毁。因为销毁引擎后,重新启动引擎的时间要比 直接更换资源长(会使首次会话的时间变长),所以如果仅是短暂的停止使用,建议不需要销毁资源。
SpeechConstant.ENGINE_TYPE
,
SpeechConstant.IVW_RES_PATH
,
SpeechConstant.IVW_ENROLL_RES_PATH
,
SpeechUtility.createUtility(Context, java.lang.String)
,
SpeechUtility.setParameter(java.lang.String, java.lang.String)
,
SpeechRecognizer.setParameter(String, String)
,
SpeechSynthesizer.setParameter(String, String)
,
VoiceWakeuper.setParameter(String, String)
限定符和类型 | 类和说明 |
---|---|
static class |
ResourceUtil.RESOURCE_TYPE
资源路径类型
资源路径类型,即资源在移动设备(手机或平板)中存放位置的类型,在安卓平台上,
包括:
APK包的assets目录:assets; APK包的res目录:res; SD卡的目录:path; 通过 generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String) 生成路径时,根据类型不同,
在路径参数中,传入对应的值:
assets类型时,若资源存放位置为/assets/resource.jet,则在路径参数传入值为 "resource.jet"; res类型时,通过R类获取ID,并转换为 String 类型,如存放位
置为/res/raw/resource.jet,则在路径参数传入值为String.valueOf(R.raw.resource);
path类型时,直接传入对应的路径值,如存放位置为/sdcard/resource.jet,则 在路径参数传入值为"/sdcard/resource.jet"; |
限定符和类型 | 字段和说明 |
---|---|
static java.lang.String |
ASR_RES_PATH
识别资源路径
在离线识别时,首次会话,或切换识别资源时,需要设置识别资源路径。
|
static java.lang.String |
ENGINE_DESTROY
销毁引擎
通过调用
SpeechUtility.setParameter(String, String) 设置此参数
以销毁引擎,并释放资源内存。 |
static java.lang.String |
ENGINE_START
启动引擎
通过设置此参数,启动离线引擎。
|
static java.lang.String |
GRM_BUILD_PATH
语法构建目录
在使用离线语法时,需要构建语法并保存到本地,在构建和使用语法时,都需要设置语法的构
建目录。
|
static java.lang.String |
IVW_RES_PATH
唤醒资源路径
唤醒需要使用本地资源,通过此参数设置本地资源所在的路径。
|
static java.lang.String |
TTS_RES_PATH
合成资源路径
在离线合成时,首次会话,或切换合成资源时,需要设置资源路径。
|
构造器和说明 |
---|
ResourceUtil() |
限定符和类型 | 方法和说明 |
---|---|
static java.lang.String |
generateResourcePath(Context context,
ResourceUtil.RESOURCE_TYPE type,
java.lang.String path)
生成资源路径
生成传入不同类型的路径值,生成SDK要求的路径值,用于各业务离线功能时,传入
资源路径。
|
public static final java.lang.String ENGINE_START
通过设置此参数,启动离线引擎。在离线功能使用时,首次设置资源路径时,需要设置此参 数启动引擎。关于设置的方式,参考类说明。
启动引擎参数值因业务类型而异:
合成:SpeechConstant.ENG_TTS
识别:SpeechConstant.ENG_ASR
唤醒:SpeechConstant.ENG_IVW
是否必须设置:是(在首次使用离线功能时)
默认值:null
值范围:见上文
ENGINE_DESTROY
,
常量字段值public static final java.lang.String ENGINE_DESTROY
通过调用SpeechUtility.setParameter(String, String)
设置此参数
以销毁引擎,并释放资源内存。(通过destory函数销毁引擎时,则不需要设置此参数,参考类说明)
是否必须设置:否
默认值:null
值范围:参考ENGINE_START
说明
ENGINE_START
,
常量字段值public static final java.lang.String ASR_RES_PATH
在离线识别时,首次会话,或切换识别资源时,需要设置识别资源路径。
资源路径值需要通过generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String)
生成SDK要求的格式。
是否必须设置:是(离线识别时)
默认值:null
值范围:见上文说明
TTS_RES_PATH
,
常量字段值public static final java.lang.String GRM_BUILD_PATH
在使用离线语法时,需要构建语法并保存到本地,在构建和使用语法时,都需要设置语法的构
建目录。与识别资源路径值不一样的是,语法的路径值,不需要通过generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String)
生成SDK要求的格式。
是否必须设置:是(离线语法识别时)
默认值:null
值范围:有效的文件夹径值(含文件名)
public static final java.lang.String TTS_RES_PATH
在离线合成时,首次会话,或切换合成资源时,需要设置资源路径。
资源路径值需要通过generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String)
生成SDK要求的格式。
同时,合成设置资源路径时,必须同时设置发音人参数
SpeechConstant.VOICE_NAME
,值为资源中包含的
其中一个发音人名参数。
是否必须设置:是(离线合成时)
默认值:null
值范围:见上文说明
ASR_RES_PATH
,
常量字段值public static final java.lang.String IVW_RES_PATH
唤醒需要使用本地资源,通过此参数设置本地资源所在的路径。多个资源间,以英文分号";"分隔。
与SpeechConstant.IVW_ENROLL_RES_PATH
一样,用于使用的资源,需要通过
generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String)
生成标准的资源路径值。
请参考 generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String)
。
是否必须设置:是(在非注册时)
默认值:null
值范围:有效的资源文件路径
public static java.lang.String generateResourcePath(Context context, ResourceUtil.RESOURCE_TYPE type, java.lang.String path)
生成传入不同类型的路径值,生成SDK要求的路径值,用于各业务离线功能时,传入 资源路径。
context
- 应用上下文type
- 资源路径类型path
- 原资源路径