# FUStaSDK接口文档 本 SDK 集成了 FaceUnity 的语音驱动形象引擎(Speeach to Animation) ,能够快速构建并驱动虚拟形象说话,营造更加真实自然的人机交互场景。 ## 版本信息 版本号:2.1 更新日期:2022-01-21 更新内容: - 优化CPU性能以及查询效率 - 新增动画播放速度控制接口 - 更新BS系数57-47 - 修复静音帧问题 - ⽀新增设置旋转角度 - 优化阴影锯齿算法 - 增加详细日志接口 ## APIs SDK接口根据作用逻辑归为五类 - 配置初始化数据 - 初始化 - Avatar切换 - 渲染控制 - 口型查询和驱动 - Avatar动画和表情切换 - 销毁 - 其他 ------ > ### 配置初始化数据 ###### FUSta SDK配置初始化数据(在线鉴权数据) FUStaKit.Builder builder = new FUStaKit .Builder(mContext) .setAuth(authpack.A()) .setAlignData(bytesAlign) //.setAsrData(bytesAsr) .setFUTtsType(FUTtsType.ALIGNMENT) .setCharacterDecoder(bytesDecoder); mFUStaKit = builder.build(); ###### 接口说明 初始化FUSta,传入上下文(必要), 加载网络鉴权数据(必要), 设置语音自动校准工具包(Align模式需要设置), 设置语音识别工具包(ASR方式需要设置,此处是Align模式故注释该方法), 设置tts查询方式,必要(ASR方式需要设置:FUTtsType.ASR;Align方式需要设置:FUTtsType.ALIGNMENT,此处是Align模式故设置为FUTtsType.ALIGNMENT) 设置文字编码功能数据文件(ALIGN方式和文本时间戳需要设置)。 ###### 参数说明 ``` context ```:上下文 ``` setAuth(byte[]) ```:网络鉴权数据 ``` setAlignData(byte[]) ```:语音自动校准工具包数据 ``` setAsrData(byte[]) ```:语音识别工具包数据 ``` setFUTtsType(TtsTypeEnum type) ```:tts查询方式 ``` setCharacterDecoder(byte[]) ```:文字编码功能数据 ###### 备注: App 启动后只需要 SDK配置初始化数据 一次即可,其中 authpack.A() 鉴权数据声明在 authpack.java 中。必须配置好有效的证书,SDK 才能正常工作。 在线鉴权只需要设置authpack.A() 鉴权数据即可。FUSta SDK 配置初始化数据详见"Android FUStaKit 集成文档"。 ###### FUSta SDK配置初始化数据(离线鉴权数据) FUStaKit.Builder builder = new FUStaKit .Builder(mContext) .setAuth(authpack.A()) .setAlignData(bytesAlign) //.setAsrData(bytesAsr) .setFUTtsType(FUTtsType.ALIGNMENT) .setCharacterDecoder(bytesDecoder); .setOffLineData(offLineAuth); mFUStaKit = builder.build(); ###### 接口说明 初始化FUSta,传入上下文(必要), 加载网络鉴权数据(必要), 设置语音自动校准工具包(Align模式需要设置), 设置语音识别工具包(ASR方式需要设置,此处是Align模式故注释该方法), 设置tts查询方式,必要(ASR方式需要设置:FUTtsType.ASR;Align方式需要设置:FUTtsType.ALIGNMENT,此处是Align模式故设置为FUTtsType.ALIGNMENT) 设置文字编码功能数据文件(ALIGN方式和文本时间戳需要设置)。 ###### 参数说明 ``` context ```:上下文 ``` setAuth(byte[]) ```:网络鉴权数据 ``` setAlignData(byte[]) ```:语音自动校准工具包数据 ``` setAsrData(byte[]) ```:语音识别工具包数据 ``` setFUTtsType(TtsTypeEnum type) ```:tts查询方式 ``` setCharacterDecoder(byte[]) ```:文字编码功能数据 ``` setOffLineData(byte[]) ```:离线鉴权数据 ###### 备注: App 启动后只需要 SDK配置初始化数据 一次即可,其中 authpack.A() 鉴权数据声明在 authpack.java 中。必须配置好有效的证书,SDK 才能正常工作。 离线鉴权除了设置authpack.A() 鉴权数据,还需要设置离线鉴权数据包路径:setOffLineAuth(byte[])。 注意,有key.bundle就使用key.bundle,这样会走离线;使用未鉴权的bundle,会联网鉴权。 根据应用需求,鉴权数据也可以运行时提供(如网络下载),不过要注意证书泄露风险,防止证书被滥用。FUSta SDK 配置初始化数据详见"Android FUStaKit 集成文档"。 --- > ### 初始化 ###### FUSta SDK初始化(在线鉴权) ``` void init(FUAuthType.ONLINE, StaKitInitCallback listener); ``` ###### 接口说明 调用FUSta SDK初始化方法,必须放在 FUStaKit SDK配置初始化数据之后 ###### 参数说明 ``` FUAuthType.ONLINE ```:在线鉴权 ``` FUStaKit.StaKitInitCallback ```:SDK初始化状态的回调,参数位空即没有初始化完成回调的方式,如果调用该方法之后紧接着调用口型驱动方法,口型驱动任务会等待初始化任务完成才开始。开发者可根据初始化回调进行相关逻辑处理。 ###### 备注: init 初始化方法,务必在后续操作前调用,否则无法驱动口型。 FUSta SDK 初始化详见"Android FUStaKit 集成文档“。 ###### FUSta SDK初始化(离线鉴权) ``` void init(FUAuthType.OFFLINE_BUNDLE, StaKitInitCallback listener); ``` ###### 接口说明 调用FUSta SDK初始化方法,必须放在 FUStaKit SDK配置初始化数据之后 ###### 参数说明 ``` FUAuthType.OFFLINE_BUNDLE ```:离线鉴权 ``` FUStaKit.StaKitInitCallback ```:SDK初始化状态的回调,参数位空即没有初始化完成回调的方式,如果调用该方法之后紧接着调用口型驱动方法,口型驱动任务会等待初始化任务完成才开始。开发者可根据初始化回调进行相关逻辑处理。 ###### 备注: init 初始化方法,务必在后续操作前调用,否则无法驱动口型。 FUSta SDK 初始化详见"Android FUStaKit 集成文档“。 --- > ### Avatar切换 ###### FUSta SDK设置Avatar ``` void setAvatar(FUAvatar avatar, FUAvatarType avatarType); 或 void setAvatar(FUAvatar avatar, FUAvatarType avatarType, OnAvatarStateListener listener); ``` ###### 接口说明 切换Avatar方法,设置后在渲染时会切换对应Avatar。 ###### 参数说明 ``` avatar ```:FUAvatar实例 ``` avatarType ```:Avatar类型的枚举,用来表示Avatar类型,用来区别内置表情数据源,默认:`FUAvatarType.CARTOON` ``` listener ```:Avatar执行状态接口,实现接口,Avatar加载完成回调onAvatarComplete() ###### 备注: ###### FUSta SDK设置Avatar位置 ``` void setPosition(double positionX, double positionY, double positionZ); ``` ###### 接口说明 设置Avatar在坐标系的位置。 ###### 参数说明 ``` positionX ```:X轴坐标 范围`-200, 200` ``` positionY ```:Y轴坐标 范围`-600, 800` ``` positionZ ```:Z轴坐标 范围`-3000, 600` ###### 备注: ###### FUSta SDK设置Avatar背景 ``` void setBackground(String background); ``` ###### 接口说明 设置Avatar背景。 ###### 参数说明 ``` background ```:背景道具路径,background为空则背景透明 ###### 备注: ###### FUSta SDK设置Avatar光照 ``` void setLight(String light); ``` ###### 接口说明 设置Avatar光照。 ###### 参数说明 ``` light ```:灯光道具路径 ###### 备注: ###### FUSta SDK设置Avatar相机位 ``` void setCamera(String camera); ``` ###### 接口说明 设置Avatar相机位。 ###### 参数说明 ``` camera ```:相机道具路径 ###### 备注: ###### FUSta SDK开启阴影 ``` void enableShadow(Boolean enableShadow); ``` ###### 接口说明 设置是否开启阴影。 ###### 参数说明 ``` enableShadow ```:是否开启阴影 ###### 备注: --- > ### 渲染控制 ###### FUSta SDK开始渲染 ``` void requestRender(GLTextureView glTextureView); ``` ###### 接口说明 开始渲染。 ###### 参数说明 ``` glTextureView ```:GLTextureView,SDK提供的渲染View ###### 备注: ###### FUSta SDK渲染状态同步 ``` void onResume(); void onPause(); void onDestroy(); ``` ###### 接口说明 onResume() 对应Activity onResume(), onPause() 对应Activity onPause(), onDestroy() 对应Activity onDestroy()。 ###### 参数说明 ###### 备注: onResume()与onPause()成对出现,在Activity的onPause()调用时停止后台渲染减少消耗,并且在Activity的onResume()调用时重新加载。 onResume()与onPause()可不用调用,在Activity的onPause()调用时后台会继续渲染; onDestroy()必须调用。 ###### FUSta SDK设置渲染分辨率 ``` void setCustomRenderResolution(int renderWidth, int renderHeight); ``` ###### 接口说明 设置渲染分辨率尺寸。 ###### 参数说明 ``` renderWidth ```:纹理宽度 ``` renderHeight ```:纹理宽度 ###### 备注: ###### FUSta SDK设置渲染帧率 ``` void setRenderFPS(int renderFPS); ``` ###### 接口说明 设置渲染帧率,默认30帧/s。 ###### 参数说明 ``` renderFPS ```:渲染帧率 ###### 备注: 如果低端设备最大帧率小于设置的帧率,实际帧率为该设备的最大帧率。 ###### FUSta SDK设置抗锯齿 ``` void setMultiSamples(int samples); ``` ###### 接口说明 3D抗锯齿配置 ###### 参数说明 ``` samples ```:抗锯齿级别,默认4。 ###### 备注: ###### FUSta SDK设置阴影抗锯齿 ``` void setShadowPCFLevel(int level); ``` ###### 接口说明 设置阴影抗锯齿级别 ###### 参数说明 ``` level ```:抗锯齿级别,默认2。 ###### 备注: ###### FUSta SDK设置渲染信息回调接口 ``` void setEnableDebug(boolean enableDebug) void setStaRenderDebugListener(OnRenderDebugListener renderDebugListener); ``` ###### 接口说明 设置渲染debug数据的回调 ###### 参数说明 ``` enableDebug ```:调试开关为true,相关debug数据才会进行统计。 ``` renderDebugListener ```:渲染debug数据接口,onBenchmarkFPSChanged(int width, int height, double fps, double renderTime)。 ###### 备注: ###### FUSta SDK日志保存到本地 ``` void setLogOutputDir(String dir); void enableLogOutput(boolean enableDebug) ``` ###### 接口说明 SDK日志保存到本地 ###### 参数说明 ``` dir ```:设置保存到本地的指定目录。 ``` enableDebug ```:是否保存日志信息到指定的目录。 ###### 备注: --- > ### 口型查询和驱动 ###### FUSta SDK初始化播放器 ``` void initStaPlayer(FUPlayerConfig playerConfig); ``` ###### 接口说明 初始化播放器 ###### 参数说明 ``` playerConfig ```:播放器相关配置,主要是采样率、声道和位深,SDK根据播放器的配置内部会初始化对应播放器。 ###### 备注: 该播放器用于内部播放,如采用外部播放器播放可不设置。 ###### FUSta SDK口型驱动并且播放音频 ``` void staProcess(FUStaParams staParams); ``` ###### 接口说明 FUSta SDK查询口型系数,播放音频并驱动对应口型。 使用场景: 1、流式音频,有时间戳,只支持pcm 2、流式音频,无时间戳,只支持pcm 3、流式音频,无时间戳,有Align文本,只支持pcm 4、非流式音频,有时间戳,支持pcm与wav 5、非流式音频,无时间戳,支持pcm与wav 6、非流式音频,无时间戳,有Align文本,支持pcm与wav ###### 参数说明 ``` params ```:FUStaParams为配置类,参数基本设置: 设置STA操作为非流式、设置音频数据、设置音频数据类型、设置音频数据对应时间戳等,目前支持 pcm 与 wav ###### 备注: 有时间戳,查询口型系数根据时间戳查询,速度会更快。 无时间戳,查询口型系数根据音频数据查询,根据机型配置不同耗时也有差别,查询速度稍耗时。一般无时间戳查询口型系数方式有ASR方式和ALIGN方式,ALIGN方式较快,ASR方式较慢。 FUStaParams参数详情与该口型驱动模式调用见```Android FUStaKit 集成文档``` ###### FUSta SDK流式查询状态同步 ``` void notifyStaProcessStart(); void notifyStaProcessFinish(); ``` ###### 接口说明 流式口型驱动模式下,需要给SDK同步查询状态。 notifyStaProcessStart()对应于流式查询开始调用;notifyStaProcessFinish()对应于流式查询结束调用。 ###### 参数说明 ###### 备注: 流式查询必须要给SDK设置同步状态。详情见```Android FUStaKit 集成文档``` ###### FUSta SDK设置内部播放器状态接口 ``` void setStaPlayerListener(OnStaPlayerListener staPlayerListener); ``` ###### 接口说明 SDK采用内部播放器播放,播放器状态接口。 ###### 参数说明 ```OnStaPlayerListener```:实现该接口,相关方法定义: ```onPrepared()```:播放开始 ```onCompleted()```:播放结束 ```onCancel()```:播放取消 ```onError(String message)```:播放出错 ###### 备注: ###### FUSta SDK口型驱动(外部播放场景) ``` void staProcessNoPlayer(FUStaParams staParams); ``` ###### 接口说明 FUSta SDK查询口型系数,外部播放器播放音频,需要两者配合驱动对应口型。 使用场景: 1、流式音频,有时间戳,只支持pcm 2、流式音频,无时间戳,只支持pcm 3、流式音频,无时间戳,有Align文本,只支持pcm 4、非流式音频,有时间戳,支持pcm与wav 5、非流式音频,无时间戳,支持pcm与wav 6、非流式音频,无时间戳,有Align文本,支持pcm与wav ###### 参数说明 ``` params ```:FUStaParams为配置类,参数基本设置: 设置STA操作为非流式、设置音频数据、设置音频数据类型、设置音频数据对应时间戳等,目前支持 pcm 与 wav ###### 备注: 有时间戳,查询口型系数根据时间戳查询,速度会更快。 无时间戳,查询口型系数根据音频数据查询,根据机型配置不同耗时也有差别,查询速度稍耗时。一般无时间戳查询口型系数方式有ASR方式和ALIGN方式,ALIGN方式较快,ASR方式较慢。 FUStaParams参数详情与该口型驱动模式调用见```Android FUStaKit 集成文档``` ###### FUSta SDK外部播放场景状态同步 ``` void onExternalPlayerStart(); void onExternalPlayerStop(); ``` ###### 接口说明 SDK内部口型系数查询,外部播放器播放,两者配合驱动口型,需要给SDK同步播放器状态,设置口型驱动的开关。 onExternalPlayerStart()对应于外部播放器播放开始;onExternalPlayerStop()对应于外部播放器播放暂停或结束。 ###### 参数说明 ###### 备注: 外部播放场景必须要给SDK设置同步状态。详情见```Android FUStaKit 集成文档``` ###### FUSta SDK设置外部播放器接口 ``` void setExternalPlayerListener(OnExternalPlayerListener externalPlayerListener); ``` ###### 接口说明 SDK内部口型系数查询,外部播放器播放,两者配合驱动口型,需要给SDK同步播放器进度,sdk拿到播放进度驱动对应的口型。 ###### 参数说明 ```OnExternalPlayerListener```:实现该接口,相关方法定义: ```updateCurrentPosition()```:获取外部播放器音频播放进度 ###### 备注: ###### FUSta SDK设置音频数据查询状态的接口 ``` void setStaProcessListener(OnStaProcessListener onStaProcessListener); ``` ###### 接口说明 SDK内部口型系数查询,该接口会回调每一段查询音频数据的数据:`FUAudioProgressType`和内部处理过后的音频,该状态接口主要用于外部播放器场景下,为了规避口型系数查询耗时的影响,通知开发者SDK已经有口型查询完成,可以执行外部播放器播放逻辑。 ###### 参数说明 ```OnStaProcessListener```:实现该接口,相关方法定义: ```onStaProcess(FUAudioProgressType audioProgressType, byte[] data)```:回调每一段查询音频数据的数据 ###### 备注: ```FUAudioProgressType```是`开始`、`中间`、`结束`、`整段`的枚举。`date`是每一段的音频,注意该音频不一定等于用户传入的音频格式和大小。 ###### FUSta SDK停止口型查询和驱动 ``` void stopStaProcess(); ``` ###### 接口说明 打断SDK内部口型系数查询任务,该接口会清掉已经查询的口型数据的缓存,停止内部播放器的播放。 ###### 参数说明 ###### 备注: 外部播放场景需要配合外部播放器停止方法和调用SDK外部播放器播放暂停或结束通知方法:`onExternalPlayerStop()`。 ###### FUSta SDK设置英语口型张开幅度 ``` void setENIntensity(float intensity); ``` ###### 接口说明 设置英语口型张开幅度。 ###### 参数说明 ```intensity```:英语口型张开幅度,取值范围`1.0, 1.5`: ###### 备注: --- > ### Avatar动画和表情切换 ###### 动画循环播放 ``` void playAnimation(String anim); 或 void playAnimation(String anim, String[] prop, String[] propAnimation); ``` ###### 接口说明 循环播放Avatar动画。 ###### 参数说明 ```anim```:String,Avatar动画道具路径 ```prop```:String[], 道具路径数组 ```propAnimation```:String[], 道具动画路径数组 ###### 备注: ###### 动画单次播放 ``` void playAnimationOnce(String anim); 或 void playAnimationOnce(String anim, String[] prop, String[] propAnimation); ``` ###### 接口说明 单次播放Avatar动画。 ###### 参数说明 ```anim```:String,Avatar动画道具路径 ```prop```:String[], 道具路径数组 ```propAnimation```:String[], 道具动画路径数组 ###### 备注: ###### 继续播放当前动画 ``` void startCurrentAnimation(); ``` ###### 接口说明 继续播放当前动画。 ###### 参数说明 ###### 备注: ###### 暂停播放当前动画 ``` void pauseCurrentAnimation(); ``` ###### 接口说明 继续播放当前动画。 ###### 参数说明 ###### 备注: ###### 移除动画 ``` void removeAnimation(String anim); ``` ###### 接口说明 移除动画。 ###### 参数说明 ```anim```:String,要移除的Avatar动画道具路径 ###### 备注: ###### 设置动画的过渡时间 ``` void setAnimationTransitionTime(float time); ``` ###### 接口说明 设置动画的过渡时间,单位为秒,默认0.5秒。 ###### 参数说明 ```time```:float,动画的过渡时间 ###### 备注: ###### 设置动画的播放速度 ``` void setAnimationSpeed(float speed); ``` ###### 接口说明 设置动画的播放速度系数,默认为1,范围`0.2, 5.2`。 ###### 参数说明 ```speed```:float,播放速度系数 ###### 备注: ###### 内置表情切换 ``` void updateEmotion(FUEmotionType emotionType); 或 void updateEmotion(FUEmotionType emotionType, int fpsNum); ``` ###### 接口说明 SDK内置表情切换,在`fpsNum`帧内过渡到目标表情。 ###### 参数说明 ```emotionType```:FUEmotionType,内置表情的枚举,目前只支持特定的Avatar类型(`FUAvatarType.CARTOON`和`FUAvatarType.REAL`)。 ```fpsNum```:int,在`fpsNum`帧内过渡到目标表情,默认为0。 ###### 备注: ###### 自定义表情切换 ``` void updateCustomEmotion(String path); 或 void updateCustomEmotion(String path, int fpsNum); ``` ###### 接口说明 自定义表情切换,通过传入自定义bs文件,内部解析并且驱动表情,在`fpsNum`帧内过渡到目标表情。 ###### 参数说明 ```path```:String,自定义表情的文件。 ```fpsNum```:int,在`fpsNum`帧内过渡到目标表情,默认为0。 ###### 备注: ###### 设置标签配置表 ``` void setAlignTagConfig(String tagConfig, String defaultAnimation); ``` ###### 接口说明 设置标签配置表,配合Align模式使用可定制动作表情切换的实际。 ###### 参数说明 ```tagConfig```:String,标签配置表 ```defaultAnimation```:String,标签配置表动作执行完成后执行的默认动作道具路径 ###### 备注: 标签配置表调用见```Android FUStaKit 集成文档``` --- > ### 销毁 ###### 销毁 FUSta SDK ``` void release(); ``` ###### 接口说明 销毁SDK,释放内存资源。 ###### 参数说明 ###### 备注: --- > ### 其他 ###### 旋转Avatar ``` setRotDelta(float delta) ``` ###### 接口说明 旋转角色。 ###### 参数说明 ```delta```:表示旋转增量,取值范围`-1.0, 1.0` ###### 备注: ###### 缩放Avatar ``` setScaleDelta(float delta) ``` ###### 接口说明 缩放角色。 ###### 参数说明 ```delta```:表示缩放增量,取值范围`-1.0, 1.0` ###### 备注: ###### 上下移动Avatar ``` setTranslateDelta(float delta) ``` ###### 接口说明 上下移动角色。 ###### 参数说明 ```delta```:表示上下增量,取值范围`-1.0, 1.0` ###### 备注: ###### 设置Avatar旋转角度 ``` setRotate(float rotate) ``` ###### 接口说明 设置Avatar旋转角度。 ###### 参数说明 ```rotate```:表示旋转角度 ###### 备注: ###### 设置bs表情系数数据 ``` setBSConfigData(String configPath) ``` ###### 接口说明 设置当前Avatarbs表情系数数据包路径,可不设置,不设置则使用默认数据包 ###### 参数说明 ```configPath```:String,bs表情系数数据包路径 ###### 备注: ---