跳到主要内容

公共类型与错误处理

TopStepAIKit 的语音、翻译、同传、录音和图片生成模块共享语言、音频格式、任务标识、回调和错误模型。

TSAIAudioFormat​

枚举值数值说明
TSAIAudioFormatUnknown-1未知格式
TSAIAudioFormatNone0结果中表示无音频;配置中表示自动嗅探文件格式
TSAIAudioFormatPcm1PCM
TSAIAudioFormatOpus2Opus
TSAIAudioFormatMp33MP3
TSAIAudioFormatWav4WAV

裸 PCM 无文件头,必须明确指定格式、采样率、声道和位深等参数。

TSAILanguage​

TSAILanguage 是 ASR、翻译、同传、录音和图片生成共用的 AI 服务语言枚举,与设备 UI 使用的 TSLanguageType 不同。

枚举值值枚举值值
Unknown-1Auto0
ChineseSimplified1ChineseTraditional2
EnglishUS3EnglishUK4
Japanese5Korean6
French7German8
Spanish9Russian10
Portuguese11Indonesian12
Malay13Filipino14
Thai15Arabic16
Vietnamese17Danish18
Greek19Finnish20
Hindi21Italian22
Dutch23Norwegian24
Polish25Swedish26
Swahili27Turkish28
Bengali29Romanian30
Nepali31Ukrainian32
Czech33Welsh34
Hungarian35Icelandic36
Georgian37Kazakh38
Luxembourgish39Latvian40
Malayalam41Slovak42
Slovenian43Serbian44
Telugu45Catalan46
Tamil47Urdu48
Croatian49Bulgarian50
Lithuanian51Latin52
Maori53Persian54
Azerbaijani55Kannada56
Estonian57Macedonian58
Breton59Basque60
Armenian61Mongolian62
Bosnian63Albanian64
Galician65Marathi66
Punjabi67Sinhala68
Khmer69Shona70
Yoruba71Somali72
Afrikaans73Occitan74
Belarusian75Tajik76
Sindhi77Gujarati78
Amharic79Yiddish80
Lao81Uzbek82
Faroese83HaitianCreole84
Pashto85Turkmen86
NorwegianNynorsk87Maltese88
Sanskrit89Burmese90
Tibetan91Malagasy92
Assamese93Tatar94
Hawaiian95Lingala96
Hausa97Bashkir98
Javanese99Sundanese100

表中名称应加上 TSAILanguage 前缀,例如 ChineseSimplified 的完整枚举值是 TSAILanguageChineseSimplified。

Auto 与 Unknown​

  • Auto 仅用于翻译或同传的源语言自动检测。
  • ASR、录音和图片生成不接受 Auto。
  • 翻译和同传的目标语言必须是具体语言。
  • Unknown 通常表示未设置或使用 App 当前本地化,具体语义以模型属性说明为准。

BCP-47 转换​

+ (nullable NSString *)bcp47CodeForLanguage:(TSAILanguage)language;
+ (nullable NSString *)targetBcp47CodeForLanguage:(TSAILanguage)language;
+ (TSAILanguage)languageForBcp47Code:(nullable NSString *)code;

TSAIASRScene​

枚举值数值说明
TSAIASRSceneUnknown-1未指定场景
TSAIASRSceneOnSite1会议、采访、面对面等现场录音
TSAIASRSceneCall2电话或 VoIP 通话录音

TSAIChatIntentType​

枚举值数值说明
Unknown-1未知协议意图;原始值见 intentId
None0纯对话,无可执行意图
PhotoCapture / PhotoUnderstand1 / 2拍照 / 理解照片
VideoStart / VideoStop3 / 4开始 / 停止录像
AudioRecord5开始录音
VolumeUp / VolumeDown / VolumeSet10 / 11 / 12音量控制
MusicPlay / MusicStop20 / 21播放 / 停止音乐
MusicNext / MusicPrev22 / 23下一首 / 上一首
CallAnswer / CallDecline / CallRecord30 / 31 / 32通话控制
DeviceBatteryQuery / DevicePowerOff40 / 41查询电量 / 设备关机
DialogExit / AgentSwitch / VoiceClone50 / 51 / 52退出对话 / 切换角色 / 声音克隆

表格中的短名称应加上 TSAIChatIntentType 前缀,例如 TSAIChatIntentTypePhotoCapture。

任务与回调约定​

  1. 单次任务通常同步返回客户端生成的 taskId,与 Provider 或服务端任务 ID 无关。
  2. 流式 partial 回调可能调用零次或多次;completion 在成功、失败或取消时调用一次。
  3. completion 是任务终态的权威信号。
  4. 调用取消接口后,Provider 可能无法物理停止服务端任务,但 SDK 会屏蔽迟到结果。
  5. 回调线程以具体接口说明为准;问答、生图和部分 Context 回调明确位于主线程。

TSAIErrorDomain​

错误码数值说明
TSAIErrorCodeInvalidParameter1001参数无效
TSAIErrorCodeNotSupported1002当前能力不支持
TSAIErrorCodeContextInactive1003Context 未激活或已失效
TSAIErrorCodeProviderUnavailable1004Provider 不可用
TSAIErrorCodeBridgeUnavailable1005平台 DeviceBridge 不可用
TSAIErrorCodeActivationSuperseded1006激活请求已被后续请求取代
TSAIErrorCodeBusy1007存在互斥任务
TSAIErrorCodeCancelled1008任务已取消
TSAIErrorCodeAuthorizationRequired1009Provider 需要鉴权
TSAIErrorCodeTaskFailed1010AI 任务执行失败
TSAIErrorCodeContentRejected1011内容被服务拒绝
TSAIErrorCodeTimeout1012请求超时
TSAIErrorCodeNetworkUnavailable1013网络不可用
TSAIErrorCodeInvalidResponse1014Provider 响应无效
TSAIErrorCodeAudioRouteUnavailable1015没有满足请求或回退策略的完整音频路由
TSAIErrorCodeAudioRouteMismatch1016业务用例、设备场景或已占用路由与请求不匹配

错误处理示例​

if ([error.domain isEqualToString:TSAIErrorDomain]) {
switch (error.code) {
case TSAIErrorCodeAuthorizationRequired:
TSLog(@"AI 服务需要重新鉴权");
break;
case TSAIErrorCodeNetworkUnavailable:
TSLog(@"当前网络不可用");
break;
case TSAIErrorCodeContextInactive:
TSLog(@"请重新获取 activeContext");
break;
default:
TSLog(@"AI 操作失败: %@", error.localizedDescription);
break;
}
}

禁止在错误日志中输出 App Key、Token、设备鉴权数据或用户原始音频。