Android SDK
初始化接口
SDK初始化
1 /** 初始化Engine */
2 public static AIAgentEnginImpl init(Context context, AIAgentEngineParams params)
3
4 public static class AIAgentEngineParams {
5 /** appid */
6 public String appId = "";
7 /** 调试开关 */
8 public boolean verbose = false;
9 /** 开启终端侧TTS */
10 public boolean enableTerminalTTS = false;
11 /** 说话音频打断 */
12 public boolean enableVoiceInterrupt = true;
13 /** 实例id 服务器端下发,当前调试默认即可 */
14 public long aiAgentInstanceId = 0;
15 /**容许外部输入音频, 通过接口 pushAudioFrame 输入音频PCM数据 */
16 public boolean enableExternalAudioInput = false;
17 /**容许外部输出音频,通过接口回调 onPlaybackAudioFrame 返回音频PCM数据 */
18 public boolean enableExternalAudioOutput = false;
19 /** dump 采集音频 */
20 public boolean dumpAudioInput = false;
21 /** 音频source */
22 public int inputAudioSource = -1;
23 /** 工作流类型,默认用VoiceChat */
24 public String workflow = "VoiceChat";
25 /** 音频编码器 默认opus */
26 public String audioCodec = RtcParameterSettings.AudioCodecId.OPUS;
27 /** 服务器端接口下发 cid, token, 调试模式传入空即可 */
28 public String context = "{ "cid": 1, "token": "xxx-aa-bb" }";
29 }
SDK初始化。
参数
参数 | 类型 | 描述 |
---|---|---|
context | Context | Android上下文环境 |
params | AIAgentEngineParams | Engine初始化参数 |
返回
AIAgentEnginImpl 实例对象:成功; null:失败;
设置回调
1 public abstract void setCallback(AIAgentEngineCallback callback);
参数
参数 | 类型 | 描述 |
---|---|---|
callback | AIAgentEngineCallback | 事件回调接口 |
返回
无
Agent相关接口
开启通话
1 public abstract void call(String token, long instanceId);
开启通话,开始音频采集和音频播放;
参数
参数 | 类型 | 描述 |
---|---|---|
token | String | 鉴权token |
instanceId | long | 实例id |
返回
无
结束通话
1 public abstract void hangup();
结束通话,停止音频采集和音频播放;
参数
参数 | 类型 | 描述 |
---|
返回
无
发送文本
1 public abstract void setTextToAIAgent(String text);
发送文本消息给智能体,作为query向大模型进行提问;
参数
参数 | 类型 | 描述 |
---|---|---|
text | String | 文本query |
返回
无
发送文本并且打断
1 public abstract void sendTextToAIAgentAndInterrupt(String text);
发送文本消息给智能体,作为query向大模型进行提问,并且立即打断当前播报;
参数
参数 | 类型 | 描述 |
---|---|---|
text | String | 文本query |
返回
无
发送文本直接播报
1 public abstract void sendTextToTTS(String text);
发送文本消息给TTS模块直接进行播报;
参数
参数 | 类型 | 描述 |
---|---|---|
text | String | TTS播报文本 |
返回
无
主动打断
1 public abstract void interrupt();
打断当前播报内容,停止播放;
参数
参数 | 类型 | 描述 |
---|
返回
无
销毁Engine
1 public abstract void destroy();
销毁Engine,释放资源;
返回
无
发送FunctionCall结果
1 public abstract void sendFunctionCallResult(String id, String result);
发送FunctionCall结果;
参数
参数 | 类型 | 描述 |
---|---|---|
id | String | 唯一表示 |
result | String | 结果 例如: {"result":"ok"} |
返回
无
设置数字人View
1 public abstract void setDigitalDisplay(ViewGroup viewGroup, ViewGroup.LayoutParams params, RTCVideoView.ScalingType type);
设置数字人视图;
参数
参数 | 类型 | 描述 |
---|---|---|
viewGroup | ViewGroup | 父容器 |
params | ViewGroup.LayoutParams | 布局参数 |
type | RTCVideoView.ScalingType | 缩放模式, 支持模式:RTCVideoView.ScalingType.SCALE_ASPECT_FIT RTCVideoView.ScalingType.SCALE_ASPECT_FILL |
返回
无
上传文件
1 public abstract boolean uploadFile(String path, int expire);
上传文件会收到 onUploadFileStatus
事件回调
注意 暂时仅仅支持 JPEG/PNG/JPG 三种数据格式,并且大小不超过7MB;
参数
参数 | 类型 | 描述 |
---|---|---|
path | String | 文件路径,必须具有可读权限 |
expire | int | 过期时间 单位秒, 最大值默认180秒 (图片支持多轮次会话引用时间),最小值0 (图片仅仅支持一轮会话引用) |
返回
无
音频相关接口
静音播放
1 public abstract void mutePlayback(boolean isMute);
音频播放声音控制;
参数
参数 | 类型 | 描述 |
---|---|---|
isMute | boolean | 是否静音 |
返回
无
静音麦克风
1 public abstract void muteMic(boolean isMute);
音频采集声音控制;
参数
参数 | 类型 | 描述 |
---|---|---|
isMute | boolean | 是否静音 |
返回
无
扬声器播放
1 public abstract void switchToSpeaker(boolean speaker);
声音使用扬声器播放控制;
参数
参数 | 类型 | 描述 |
---|---|---|
speaker | boolean | 是否使用扬声器播放 |
返回
无
注册外部TTS
1 public abstract void registerExternalTTS(Constants.TTSService service);
2
3 /** TTS 服务 */
4 public static interface TTSService {
5 /** 停止播放TTS,打断语音TTS播报时候调用,建议mute speaks 1000ms */
6 public void onStop();
7
8 /** 开始TTS */
9 public void onStart(String msg);
10 }
11
注册外部TTS服务
参数
参数 | 类型 | 描述 |
---|---|---|
service | Constants.TTSService | 外部tts服务 |
返回
无
外部音频采集(1)
1 public abstract void pushAudioFrame(byte[] data, long timestamp, int sampleRate, int channels);
外部音频采集
注意 接入方负责将音频输入PCM 输入进入 (当前要求16K音频采样,单声道, AudioFormat.ENCODING_PCM_16BIT),每次输入10ms音频数据长度;
参数
参数 | 类型 | 描述 |
---|---|---|
data | byte数组 | PCM音频数据, 单声道, AudioFormat.ENCODING_PCM_16BIT, 10ms 音频数据长度 320字节 |
timestamp | long | 时间戳 |
sampleRate | int | 音频采样率 使用16K音频采样率 |
channels | int | 音频声道数 |
返回
无
外部音频采集(2)
1 public abstract void pushAudioFrame(ByteBuffer data, long timestamp, int sampleRate, int channels);
外部音频采集
注意 接入方负责将音频输入PCM 输入进入 (当前要求16K音频采样,单声道, AudioFormat.ENCODING_PCM_16BIT),每次输入10ms音频数据长度;
参数
参数 | 类型 | 描述 |
---|---|---|
data | ByteBuffer | PCM音频数据, 单声道, AudioFormat.ENCODING_PCM_16BIT, 10ms 音频数据长度 320字节 |
timestamp | long | 时间戳 |
sampleRate | int | 音频采样率 使用16K音频采样率 |
channels | int | 音频声道数 |
返回
无
事件回调
AIAgent 回调
错误回调
1 public void onError(int error, String msg, Bundle bundle)
出错回调,出错后需要结束通话;
参数
参数 | 类型 | 描述 |
---|---|---|
error | int | 错误码 |
msg | String | 错误信息 |
bundle | Bundle | 错误描述详细信息 |
通话状态变化
1public void onCallStateChange(int state);
通话状态变化;
参数
参数 | 类型 | 描述 |
---|---|---|
state | int | 开始通话 {@link Constants.CallState#ON_CALL_BEGIN } 结束通话 {@link Constants.CallState#ON_CALL_END } |
链接状态变化
1 public void onConnectionStateChange(int state);
通话状态变化;
参数
参数 | 类型 | 描述 |
---|---|---|
state | int | 链接断开 {@link Constants.ConnectionState#CONNECTION_STATE_DISCONNECTED } 重连接 {@link Constants.ConnectionState#CONNECTION_STATE_RECONNECTING } 链接成功 {@link Constants.ConnectionState#CONNECTION_STATE_CONNECTED } |
用户端ASR结果
1 public void onUserAsrSubtitle(String text, boolean isFinal);
用户端ASR结果;
参数
参数 | 类型 | 描述 |
---|---|---|
text | String | ASR识别结果 |
isFinal | boolean | 标记是否最终结果 |
AI智能体结果
1 public void onAIAgentSubtitle(String text, boolean isFinal);
AI智能体结果;
参数
参数 | 类型 | 描述 |
---|---|---|
text | String | 智能体结果 |
isFinal | boolean | 标记是否最终结果 |
AI智能体音频状态变化
1 public void onAIAgentAudioStateChange(@Constants.AIAgentAudioStateType int newState);
2
3 /** 智能体音频状态 */
4 @Retention(RetentionPolicy.SOURCE)
5 public @interface AIAgentAudioStateType {
6 /** 大模型停止说话 */
7 int STOPPED = 1;
8 /** 大模型说话 */
9 int SPEAKING = 2;
10 }
AI智能体音频状态变化;
参数
参数 | 类型 | 描述 |
---|---|---|
newState | @Constants.AIAgentAudioStateType int | 音频状态 |
用户音频状态变化
1 public void onUserAudioStateChange(@Constants.UserAudioStateType int newState);
2
3 /** 用户音频状态 */
4 @Retention(RetentionPolicy.SOURCE)
5 public @interface UserAudioStateType {
6 /** 用户停止说话*/
7 int STOPPED = 1;
8 /** 用户说话*/
9 int SPEAKING = 2;
10 }
用户声音状态变化;
参数
参数 | 类型 | 描述 |
---|---|---|
newState | @Constants.UserAudioStateType int | 音频状态 |
智能体音频能量回调
1 public void onAIAgentAudioLevel(int level);
智能体音频能量回调, 间隔100ms回调一次;
参数
参数 | 类型 | 描述 |
---|---|---|
level | int | 音频能量 |
用户音频能量回调
1 public void onUserAudioLevel(int level);
用户音频能量回调, 间隔100ms回调一次;
参数
参数 | 类型 | 描述 |
---|---|---|
level | int | 音频能量 |
functionCall回调
1 public void onFunctionCall(String id, String params);
用户收到function call, 处理完成后需要调用 sendFunctionCallResult
参数
参数 | 类型 | 描述 |
---|---|---|
id | String | 单次function call唯一标识 |
params | String | 参数 一般是json string 例如: {"function_name":"phone_call","parameter_list":[{"called_number":"1891017000"},{"called_name":"我的父亲"} |
文件上传状态
1 public void onUploadFileStatus(int code, String msg)
文件上传后状态回调
参数
参数 | 类型 | 描述 |
---|---|---|
code | int | 成功 {@link Constants#NO_ERROR } 失败 其他错误码 |
msg | String | 成功时候返回文件名,失败时候返回错误消息 |
外部音频播放回调
1 public void onPlaybackAudioFrame(byte[] data, int sampleRate, int channelCount)
当打开外音频播放 AIAgentEngine.AIAgentEngineParams#enableExternalAudioOutput
,有该回调事件;
注意 预期这里直接将音频输入给AudioTrack,如果不输入到AudioTrack,这里需要 TimeUnit.MILLISECONDS.sleep(10);
参数
参数 | 类型 | 描述 |
---|---|---|
data | byte数组 | PCM音频数据 |
sampleRate | int | 采样率 |
channelCount | int | 声道数 |
agent意图
1 public void onAgentIntent(String type, Bundle bundle)
意图回调
当前仅仅支持 Constants.AgentIntentType#IMAGE_UPLOAD
和Constants.AgentIntentType#AGENT_EVENT_PLAY_AUDIO
;
参数
参数 | 类型 | 描述 |
---|---|---|
type | String | 图片上传: {@link Constants.AgentIntentType#IMAGE_UPLOAD } 播放音频: {@link Constants.AgentIntentType#AGENT_EVENT_PLAY_AUDIO } |
bundle | Bundle | 其他附加信息 |