跳到主要内容

AI 设备管理(TSAIManagerInterface)

本页介绍 TSAIManagerInterface 提供的设备控制和 AI 会话桥接能力,包括设备状态、音频设置、查找设备、会话事件与音频数据交互。业务侧的 AI 助手、问答、翻译等能力请参阅 TopStepAIKit。

前提条件​

  1. 设备必须支持 AI 聊天功能,可通过 isAIDeviceAPISupported 方法检查
  2. 设备需要正常连接并可通信
  3. 对于 AI 聊天功能,需要正确处理会话事件和音频数据回调
  4. 对于语音唤醒功能,设备需要支持 allowVoiceWakeUpOnDevice 功能

数据模型​

TSAIDeviceBatteryInfoModel​

属性名类型说明
batteryLevelNSInteger电池电量(0-100)
isChargingBOOL设备是否正在充电

TSAIDeviceStatusInfoModel​

属性名类型说明
leftConnectionStatusTSAIDeviceConnectionStatus左设备连接状态
rightConnectionStatusTSAIDeviceConnectionStatus右设备连接状态
leftInCaseStatusTSAIDeviceInCaseStatus左设备在仓状态
rightInCaseStatusTSAIDeviceInCaseStatus右设备在仓状态
leftBatteryInfoTSAIDeviceBatteryInfoModel *左设备电池信息
rightBatteryInfoTSAIDeviceBatteryInfoModel *右设备电池信息

TSAIDeviceFindStatusInfoModel​

属性名类型说明
leftFindStatusTSAIDeviceFindStatus左设备查找状态
rightFindStatusTSAIDeviceFindStatus右设备查找状态

枚举与常量​

TSAIVendor - AI 方案商​

枚举值数值说明
TSAIVendorUnknown0未指定方案商
TSAIVendorStarBurst1StarBurst AI 方案
TSAIVendorMltCloud2MltCloud AI 方案

TSAIChatStatusType - AI 聊天状态类型​

枚举值原始值说明
TSAIChatStatusTypeEnterChatGPT0x01进入 AI 聊天
TSAIChatStatusTypeStartRecording0x02开始录音
TSAIChatStatusTypeEndRecording0x03结束录音
TSAIChatStatusTypeExitChatGPT0x04退出 AI 聊天
TSAIChatStatusTypeReminderOpenApp0x05提醒打开 APP
TSAIChatStatusTypeIdentificationFailed0x06识别失败
TSAIChatStatusTypeIdentificationSuccessful0x07识别成功
TSAIChatStatusTypeConfirmContent0x08确认内容
TSAIChatStatusTypeStartAnswer0x09开始回答
TSAIChatStatusTypeAnswerCompleted0x0a回答完成
TSAIChatStatusTypeAnswering0x0b回答中
TSAIChatStatusTypeAbnormalNoNetWork0x0c异常 - 无网络
TSAIChatStatusTypeAbnormalSensitiveWord0x0d异常 - 敏感词
TSAIChatStatusTypeAbnormalCustom0x0e异常 - 自定义

TSAIDevicePresetEQ - 设备预设均衡器类型​

枚举值原始值说明
TSAIDevicePresetEQUnknown-1未知
TSAIDevicePresetEQSoundEffect10音效 1
TSAIDevicePresetEQSoundEffect21音效 2
TSAIDevicePresetEQSoundEffect32音效 3
TSAIDevicePresetEQSoundEffect43音效 4
TSAIDevicePresetEQSoundEffect54音效 5
TSAIDevicePresetEQSoundEffect65音效 6

TSAIDeviceNoiseReductionMode - 设备降噪模式类型​

枚举值原始值说明
TSAIDeviceNoiseReductionModeUnknown-1未知
TSAIDeviceNoiseReductionModeOff0关闭
TSAIDeviceNoiseReductionModeOn1打开
TSAIDeviceNoiseReductionModeTransparency2通透模式

TSAIDeviceLowLatencyMode - 设备低延迟模式类型​

枚举值原始值说明
TSAIDeviceLowLatencyModeUnknown-1未知
TSAIDeviceLowLatencyModeOff0关闭
TSAIDeviceLowLatencyModeOn1开启

TSAIDeviceConnectionStatus - 设备连接状态​

枚举值原始值说明
TSAIDeviceConnectionStatusUnknown-1未知
TSAIDeviceConnectionStatusDisconnected0未连接
TSAIDeviceConnectionStatusConnected1已连接

TSAIDeviceInCaseStatus - 设备在仓状态​

枚举值原始值说明
TSAIDeviceInCaseStatusUnknown-1未知
TSAIDeviceInCaseStatusOut0不在仓
TSAIDeviceInCaseStatusIn1在仓

TSAIDeviceFindStatus - 设备查找状态​

枚举值原始值说明
TSAIDeviceFindStatusUnknown-1未知
TSAIDeviceFindStatusNotFinding0不在查找状态
TSAIDeviceFindStatusFinding1处于查找状态

TSAIDeviceFindEvent - 设备查找事件​

枚举值原始值说明
TSAIDeviceFindEventUnknown-1未知
TSAIDeviceFindEventFindLeft0查找左耳
TSAIDeviceFindEventFindRight1查找右耳
TSAIDeviceFindEventStopFindLeft2停止查找左耳
TSAIDeviceFindEventStopFindRight3停止查找右耳

TSAIDeviceSide - 设备左右侧​

枚举值原始值说明
TSAIDeviceSideLeft0左耳
TSAIDeviceSideRight1右耳

TSAIDeviceChatSessionEvent - AI 设备聊天会话事件​

枚举值原始值说明
TSAIDeviceChatSessionEventUnknown-1未知
TSAIDeviceChatSessionEventTerminate0结束当前 AI 聊天会话
TSAIDeviceChatSessionEventInitiateWithSCO1通过 SCO 发起新 AI 聊天会话
TSAIDeviceChatSessionEventInitiateWithOpus2通过 Opus 发起新 AI 聊天会话

TSAIChatAudioChannel - AI 聊天音频通道类型​

枚举值原始值说明
TSAIChatAudioChannelUnknown-1未知
TSAIChatAudioChannelSco0SCO(同步面向连接)通道
TSAIChatAudioChannelOpusInA2dpOut1Opus 编码输入,A2DP 输出通道
TSAIChatAudioChannelOpusInOpusOut2Opus 编码输入,Opus 编码输出通道

TSAIEnableState - 开关状态​

枚举值原始值说明
TSAIEnableStateUnknown-1未知
TSAIEnableStateOff0关闭
TSAIEnableStateeOn1开启

回调类型​

回调类型说明
void (^TSAIDeviceStatusBlock)(TSAIDeviceStatusInfoModel *latestStatusInfo)设备状态变化回调,返回最新状态信息
void (^TSAIDeviceEqualizerBlock)(BOOL success, TSAIDevicePresetEQ currentEQ, NSError *_Nullable error)均衡器查询回调,返回查询成功状态、当前预设和错误信息
void (^TSAIDeviceNoiseReductionModeBlock)(BOOL success, TSAIDeviceNoiseReductionMode mode, NSError *_Nullable error)降噪模式查询回调,返回查询成功状态、当前模式和错误信息
void (^TSAIDeviceLowLatencyModeBlock)(BOOL success, TSAIDeviceLowLatencyMode mode, NSError *_Nullable error)低延迟模式查询回调,返回查询成功状态、当前模式和错误信息
void (^TSAIDeviceStatusInfoBlock)(BOOL success, TSAIDeviceStatusInfoModel *_Nullable statusInfo, NSError *_Nullable error)设备状态信息查询回调,返回查询成功状态、状态信息和错误信息
void (^TSAIDeviceFirmwareVersionBlock)(BOOL success, NSString *_Nullable version, NSError *_Nullable error)固件版本查询回调,返回查询成功状态、版本字符串和错误信息
void (^TSAIDeviceFindStatusInfoBlock)(BOOL success, TSAIDeviceFindStatusInfoModel *_Nullable statusInfo, NSError *_Nullable error)查找状态信息查询回调,返回查询成功状态、状态信息和错误信息
void (^TSAIDeviceFindEventBlock)(TSAIDeviceFindEvent findEvent)设备查找事件回调,返回查找事件类型

接口方法​

检查设备 AI 功能支持​

检查设备是否支持 AI 聊天​

- (BOOL)isAIDeviceAPISupported;

参数

无

返回值

返回值说明
BOOL如果设备支持 AI 聊天则返回 YES,否则返回 NO

代码示例

id<TSAIManagerInterface> aiManager = ...;

if ([aiManager isAIDeviceAPISupported]) {
TSLog(@"设备支持 AI 聊天功能");
} else {
TSLog(@"设备不支持 AI 聊天功能");
}

设备均衡器管理​

查询当前均衡器预设​

- (void)queryAIDeviceEqualizerWithCompletion:(_Nullable TSAIDeviceEqualizerBlock)completion;

参数

参数名类型说明
completionTSAIDeviceEqualizerBlock查询结果完成回调,返回成功状态和当前预设和错误信息

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager queryAIDeviceEqualizerWithCompletion:^(BOOL success, TSAIDevicePresetEQ currentEQ, NSError *error) {
if (success) {
TSLog(@"当前均衡器预设: %ld", (long)currentEQ);
} else {
TSLog(@"查询失败: %@", error.localizedDescription);
}
}];

设置均衡器预设​

- (void)setAIDeviceEqualizer:(TSAIDevicePresetEQ)eq
completion:(_Nullable TSCompletionBlock)completion;

参数

参数名类型说明
eqTSAIDevicePresetEQ要应用的均衡器预设
completionTSCompletionBlock操作完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager setAIDeviceEqualizer:TSAIDevicePresetEQSoundEffect3 completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"均衡器设置成功");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

监听均衡器变化​

- (void)registerAIDeviceEqualizerDidChanged:(void(^ _Nullable )(TSAIDevicePresetEQ latestEQ))equalizerBlock;

参数

参数名类型说明
equalizerBlockvoid (^)(TSAIDevicePresetEQ latestEQ)设备均衡器预设变化时触发的回调块

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager registerAIDeviceEqualizerDidChanged:^(TSAIDevicePresetEQ latestEQ) {
TSLog(@"均衡器已变化为: %ld", (long)latestEQ);
}];

设备降噪模式管理​

查询当前降噪模式​

- (void)queryAIDeviceNoiseReductionModeWithCompletion:(_Nullable TSAIDeviceNoiseReductionModeBlock)completion;

参数

参数名类型说明
completionTSAIDeviceNoiseReductionModeBlock查询结果完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager queryAIDeviceNoiseReductionModeWithCompletion:^(BOOL success, TSAIDeviceNoiseReductionMode mode, NSError *error) {
if (success) {
NSString *modeStr;
switch (mode) {
case TSAIDeviceNoiseReductionModeOff:
modeStr = @"关闭";
break;
case TSAIDeviceNoiseReductionModeOn:
modeStr = @"打开";
break;
case TSAIDeviceNoiseReductionModeTransparency:
modeStr = @"通透模式";
break;
default:
modeStr = @"未知";
}
TSLog(@"当前降噪模式: %@", modeStr);
} else {
TSLog(@"查询失败: %@", error.localizedDescription);
}
}];

设置降噪模式​

- (void)setAIDeviceNoiseReductionMode:(TSAIDeviceNoiseReductionMode)mode
completion:(_Nullable TSCompletionBlock)completion;

参数

参数名类型说明
modeTSAIDeviceNoiseReductionMode要应用的降噪模式
completionTSCompletionBlock操作完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager setAIDeviceNoiseReductionMode:TSAIDeviceNoiseReductionModeOn completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"降噪模式设置成功");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

监听降噪模式变化​

- (void)registerAIDeviceNoiseReductionModeDidChanged:(void(^ _Nullable )(TSAIDeviceNoiseReductionMode latestMode))noiseReductionModeBlock;

参数

参数名类型说明
noiseReductionModeBlockvoid (^)(TSAIDeviceNoiseReductionMode latestMode)设备降噪模式变化时触发的回调块

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager registerAIDeviceNoiseReductionModeDidChanged:^(TSAIDeviceNoiseReductionMode latestMode) {
TSLog(@"降噪模式已变化为: %ld", (long)latestMode);
}];

设备低延迟模式管理​

查询当前低延迟模式​

- (void)queryAIDeviceLowLatencyModeWithCompletion:(_Nullable TSAIDeviceLowLatencyModeBlock)completion;

参数

参数名类型说明
completionTSAIDeviceLowLatencyModeBlock查询结果完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager queryAIDeviceLowLatencyModeWithCompletion:^(BOOL success, TSAIDeviceLowLatencyMode mode, NSError *error) {
if (success) {
NSString *modeStr = (mode == TSAIDeviceLowLatencyModeOn) ? @"开启" : @"关闭";
TSLog(@"当前低延迟模式: %@", modeStr);
} else {
TSLog(@"查询失败: %@", error.localizedDescription);
}
}];

设置低延迟模式​

- (void)setAIDeviceLowLatencyMode:(TSAIDeviceLowLatencyMode)mode
completion:(_Nullable TSCompletionBlock)completion;

参数

参数名类型说明
modeTSAIDeviceLowLatencyMode要应用的低延迟模式
completionTSCompletionBlock操作完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager setAIDeviceLowLatencyMode:TSAIDeviceLowLatencyModeOn completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"低延迟模式设置成功");
} else {
TSLog(@"设置失败: %@", error.localizedDescription);
}
}];

监听低延迟模式变化​

- (void)registerAIDeviceLowLatencyModeDidChanged:(void(^ _Nullable)(TSAIDeviceLowLatencyMode latestMode))lowLatencyModeBlock;

参数

参数名类型说明
lowLatencyModeBlockvoid (^)(TSAIDeviceLowLatencyMode latestMode)设备低延迟模式变化时触发的回调块

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager registerAIDeviceLowLatencyModeDidChanged:^(TSAIDeviceLowLatencyMode latestMode) {
TSLog(@"低延迟模式已变化为: %ld", (long)latestMode);
}];

设备状态查询​

查询设备状态信息​

- (void)queryAIDeviceStatusWithCompletion:(_Nullable TSAIDeviceStatusInfoBlock)completion;

参数

参数名类型说明
completionTSAIDeviceStatusInfoBlock查询结果完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager queryAIDeviceStatusWithCompletion:^(BOOL success, TSAIDeviceStatusInfoModel *statusInfo, NSError *error) {
if (success && statusInfo) {
TSLog(@"左设备连接状态: %ld", (long)statusInfo.leftConnectionStatus);
TSLog(@"右设备连接状态: %ld", (long)statusInfo.rightConnectionStatus);
if (statusInfo.leftBatteryInfo) {
TSLog(@"左设备电量: %ld%%", (long)statusInfo.leftBatteryInfo.batteryLevel);
}
if (statusInfo.rightBatteryInfo) {
TSLog(@"右设备电量: %ld%%", (long)statusInfo.rightBatteryInfo.batteryLevel);
}
} else {
TSLog(@"查询失败: %@", error.localizedDescription);
}
}];

监听设备状态变化​

- (void)registerAIDeviceStatusDidChanged:(void(^ _Nullable)(TSAIDeviceStatusInfoModel *latestStatusInfo))statusBlock;

参数

参数名类型说明
statusBlockvoid (^)(TSAIDeviceStatusInfoModel *latestStatusInfo)设备状态变化时触发的回调块

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager registerAIDeviceStatusDidChanged:^(TSAIDeviceStatusInfoModel *latestStatusInfo) {
if (latestStatusInfo.leftBatteryInfo) {
TSLog(@"左设备电量更新: %ld%%", (long)latestStatusInfo.leftBatteryInfo.batteryLevel);
}
}];

固件版本查询​

查询固件版本​

- (void)queryAIDeviceFirmwareVersionWithCompletion:(_Nullable TSAIDeviceFirmwareVersionBlock)completion;

参数

参数名类型说明
completionTSAIDeviceFirmwareVersionBlock查询结果完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager queryAIDeviceFirmwareVersionWithCompletion:^(BOOL success, NSString *version, NSError *error) {
if (success) {
TSLog(@"固件版本: %@", version);
} else {
TSLog(@"查询失败: %@", error.localizedDescription);
}
}];

设备查找功能​

查询查找状态信息​

- (void)queryAIDeviceFindStatusInfoWithCompletion:(_Nullable TSAIDeviceFindStatusInfoBlock)completion;

参数

参数名类型说明
completionTSAIDeviceFindStatusInfoBlock查询结果完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager queryAIDeviceFindStatusInfoWithCompletion:^(BOOL success, TSAIDeviceFindStatusInfoModel *statusInfo, NSError *error) {
if (success && statusInfo) {
TSLog(@"左设备查找状态: %ld", (long)statusInfo.leftFindStatus);
TSLog(@"右设备查找状态: %ld", (long)statusInfo.rightFindStatus);
} else {
TSLog(@"查询失败: %@", error.localizedDescription);
}
}];

触发设备查找功能​

- (void)findAIDeviceWithSide:(TSAIDeviceSide)side
completion:(_Nullable TSCompletionBlock)completion;

参数

参数名类型说明
sideTSAIDeviceSide要查找的设备侧(左或右)
completionTSCompletionBlock操作完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager findAIDeviceWithSide:TSAIDeviceSideLeft completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"左耳设备查找功能已启动");
} else {
TSLog(@"启动失败: %@", error.localizedDescription);
}
}];

停止设备查找功能​

- (void)stopFindAIDeviceWithSide:(TSAIDeviceSide)side
completion:(_Nullable TSCompletionBlock)completion;

参数

参数名类型说明
sideTSAIDeviceSide要停止查找的设备侧(左或右)
completionTSCompletionBlock操作完成回调

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager stopFindAIDeviceWithSide:TSAIDeviceSideLeft completion:^(BOOL success, NSError *error) {
if (success) {
TSLog(@"左耳设备查找功能已停止");
} else {
TSLog(@"停止失败: %@", error.localizedDescription);
}
}];

监听查找事件​

- (void)registerAIDeviceFindStatusDidChanged:(_Nullable TSAIDeviceFindEventBlock)findEventBlock;

参数

参数名类型说明
findEventBlockvoid (^)(TSAIDeviceFindEvent findEvent)设备查找状态变化时触发的回调块

代码示例

id<TSAIManagerInterface> aiManager = ...;

[aiManager registerAIDeviceFindStatusDidChanged:^(TSAIDeviceFindEvent findEvent) {
switch (findEvent) {
case TSAIDeviceFindEventFindLeft:
TSLog(@"开始查找左耳");
break;
case TSAIDeviceFindEventFindRight:
TSLog(@"开始查找右耳");
break;
case TSAIDeviceFindEventStopFindLeft:
TSLog(@"停止查找左耳");
break;
case TSAIDeviceFindEventStopFindRight:
TSLog(@"停止查找右耳");
break;
default:
break;
}
}];

AI 聊天会话管理​

注册 AI 聊天会话事件​

[aiManager registerOnAIChatSessionEvent:^(TSAIDeviceChatSessionEvent event) {
if (event == TSAIDeviceChatSessionEventInitiateWithSCO) {
TSLog(@"设备请求通过 SCO 发起 AI 会话");
} else if (event == TSAIDeviceChatSessionEventTerminate) {
TSLog(@"设备请求结束 AI 会话");
}
}];

监听增量语音数据​

[aiManager registerOnAIChatDeltaOpusVoiceData:^(NSData *opusData, NSData *pcmData) {
// 根据 aiChatAudioChannel 和业务需要消费 Opus 或 PCM 数据
TSLog(@"收到语音数据:Opus=%lu,PCM=%lu",
(unsigned long)opusData.length,
(unsigned long)pcmData.length);
}];

回调传入的两个参数允许为空。注册新的回调会覆盖之前的回调;传入 nil 可取消监听。

上报会话发起结果​

[aiManager reportAIChatSessionInitiateSuccess:^(BOOL success,
BOOL deviceEncounteredException,
NSError *error) {
if (!success) {
TSLog(@"上报会话成功状态失败:%@", error.localizedDescription);
}
}];

[aiManager reportAIChatSessionInitiateFailedOrTerminated:^(BOOL success, NSError *error) {
if (!success) {
TSLog(@"上报会话失败或结束状态失败:%@", error.localizedDescription);
}
}];

透传数据​

- (void)sendAIBridgeData:(NSData *)data;
- (void)registerOnAIBridgeDataReceived:(void (^)(NSData *data))block;
- (void)sendWPAuthBridgeData:(NSData *)data;
- (void)registerOnWPAuthBridgeDataReceived:(void (^)(NSData *data))block;
[aiManager registerOnAIBridgeDataReceived:^(NSData *data) {
TSLog(@"收到 AI 透传数据:%lu 字节", (unsigned long)data.length);
}];
[aiManager sendAIBridgeData:payload];

[aiManager registerOnWPAuthBridgeDataReceived:^(NSData *data) {
TSLog(@"收到 WP 鉴权透传数据:%lu 字节", (unsigned long)data.length);
}];
[aiManager sendWPAuthBridgeData:authPayload];

透传协议内容由业务与设备端约定,SDK 不解析载荷。不要在日志中输出 Token、密钥或完整鉴权数据。

设备发起与结束请求​

[aiManager registerOnRequestInitiateAIChat:^{
// App 准备录音、网络与 AI 会话资源
}];

[aiManager registerOnRequestTerminateAIChat:^{
// App 停止会话并释放相关资源
}];

音频通道与设备端语音唤醒​

TSAIChatAudioChannel channel = [aiManager aiChatAudioChannel];
BOOL supportsVoiceWakeUp = [aiManager allowVoiceWakeUpOnDevice];

if (supportsVoiceWakeUp) {
[aiManager setOnDeviceVoiceWakeUpEnabled:YES
completion:^(BOOL success, NSError *error) {
if (!success) {
TSLog(@"开启设备端语音唤醒失败:%@", error.localizedDescription);
}
}];
}

[aiManager queryOnDeviceVoiceWakeUpEnableStateWithCompletion:^(BOOL success,
TSAIEnableState enableState,
NSError *error) {
if (success) {
TSLog(@"设备端语音唤醒状态:%ld", (long)enableState);
}
}];

调用设置接口前必须先检查 allowVoiceWakeUpOnDevice。aiChatAudioChannel 用于判断当前设备采用的 AI 会话音频通道。

其他设备能力​

BOOL supportsXimalaya = [aiManager isSupportedXimalaya];

[aiManager queryAIDeviceBluetoothNameAndMacAddressWithCompletion:^(BOOL success,
NSString *name,
NSString *macAddress,
NSError *error) {
if (success) {
TSLog(@"AI 设备蓝牙名称:%@", name);
}
}];

MAC 地址属于设备标识信息,请避免在日志或分析系统中明文记录。

注意事项​

  • 先通过 isAIDeviceAPISupported 判断当前设备是否提供这组接口。
  • 页面中的设备管理接口属于 TopStepComKit;AI 业务能力由独立的 TopStepAIKit 提供。
  • 会话、语音和透传回调应在不再使用时传入 nil 解除注册,避免持有无效业务对象。
  • 回调线程由具体设备实现决定;更新 UI 前请切换到主线程。