SDK的离线功能需要离线模型资源,我们提供了相关接口完成动态下载、更新模型数据以及检测模型是否可用。
模型下发能力依赖语音SDK的网络功能, 在初始化模型下发之前必须先完成环境依赖的相关配置。
/** * 语音资源管理器初始化 * @param context 管理器配置依赖的上下文,传递ApplicationContext * @param deviceId 设备Id,用于定位具体设备的Issue,必需 * @param appId AppId,语音服务为业务分配的id,必需 * @param appVersion App版本,用于过滤低版本不支持的资源,必需 * @param useOnlineModel 是否使用线上资源,无特殊需求设置为true,必需 * @param speechModelDir 语音资源保存路径,必需;这个目录下最好不要存放其他文件,因为在模型升级时,有时会将这个目录清空。 */ public boolean initResourceManager(Context context, String deviceId, String appId, String appVersion, boolean useOnlineModel, String speechModelDir);
检查模型名对应的语音资源是否已经下载。
/** * 检查模型名对应的语音资源是否已经下载 * @param modelName 模型名,用来区分不同的资源类型 * @return 是否已经下载可用 */ public boolean checkResourceDownload(String modelName);
云端更新模型需要冷启动才能生效。
interface CheckResouceUpdateListener { /** * 检查语音资源是否需要更新. */ void onCheckResult(boolean needUpdate); } /** * 检查模型名对应的语音资源是否有更新,冷启动生效 * @param modelName 模型名,用来区分不同的资源类型 * @param listener 更新检查监听回调 */ public void checkResourceUpdate(String modelName, CheckResouceUpdateListener listener);
interface FetchResourceListener { /** * 语音资源下载成功回调. */ void onSuccess(); /** * 语音资源下载失败回调. * @param errorMsg 异常信息. */ void onFailed(String errorMsg); } /** * 用模型名拉取对应的语音资源 * @param modelName 模型名,用来区分不同的资源类型 * @param listener 资源下载监听回调 */ public void fetchResourceByName(String modelName, FetchResourceListener listener);
配置离线资源路径时,可以使用该接口的返回值。
/** * 获取模型名对应的资源路径 * @param modelName 模型名 * @return 资源路径 */ public String getResourcePath(String modelName);