From: liangzhenying <867174124@qq.com> Date: Thu, 19 Mar 2026 06:48:03 +0000 (+0800) Subject: playboy/deepchords重构 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=13e18b240813aa54a215a9f57e27a157bf31db77;p=mirrors%2FShenYin.git playboy/deepchords重构 --- diff --git a/ShenYin/DeepChordsSdk/DCBleManager.swift b/ShenYin/DeepChordsSdk/DCBleManager.swift index fe33588..0bac9ed 100644 --- a/ShenYin/DeepChordsSdk/DCBleManager.swift +++ b/ShenYin/DeepChordsSdk/DCBleManager.swift @@ -7,7 +7,7 @@ import Foundation import CoreBluetooth -import StarburstSdk +import StarburstSdkDirect /// 蓝牙管理 diff --git a/ShenYin/DeepChordsSdk/DCBleRecord.swift b/ShenYin/DeepChordsSdk/DCBleRecord.swift index b629e91..73fe130 100644 --- a/ShenYin/DeepChordsSdk/DCBleRecord.swift +++ b/ShenYin/DeepChordsSdk/DCBleRecord.swift @@ -5,7 +5,7 @@ // Created by liangshi on 2025/12/9. // -import StarburstSdk +import StarburstSdkDirect //20001,///开始录音 //20002,///停止录音 diff --git a/ShenYin/DeepChordsSdk/DCCallRecord.swift b/ShenYin/DeepChordsSdk/DCCallRecord.swift index ab64fec..deadbd6 100644 --- a/ShenYin/DeepChordsSdk/DCCallRecord.swift +++ b/ShenYin/DeepChordsSdk/DCCallRecord.swift @@ -5,7 +5,7 @@ // Created by liangshi on 2025/12/30. // -import StarburstSdk +import StarburstSdkDirect /// 通话录音 public class DCCallRecord { diff --git a/ShenYin/DeepChordsSdk/DCChat.swift b/ShenYin/DeepChordsSdk/DCChat.swift index 3bdd384..b849b79 100644 --- a/ShenYin/DeepChordsSdk/DCChat.swift +++ b/ShenYin/DeepChordsSdk/DCChat.swift @@ -5,7 +5,7 @@ // Created by liangshi on 2025/12/15. // -import StarburstSdk +import StarburstSdkDirect /// 角色模型 public class DCRole{ diff --git a/ShenYin/DeepChordsSdk/DCLogger.swift b/ShenYin/DeepChordsSdk/DCLogger.swift index b609102..918ba28 100644 --- a/ShenYin/DeepChordsSdk/DCLogger.swift +++ b/ShenYin/DeepChordsSdk/DCLogger.swift @@ -6,7 +6,7 @@ // import Foundation -import StarburstSdk +import StarburstSdkDirect /// 日记管理 public class DCLogger { diff --git a/ShenYin/DeepChordsSdk/DCPhoneRecord.swift b/ShenYin/DeepChordsSdk/DCPhoneRecord.swift index 172c4c3..f297f72 100644 --- a/ShenYin/DeepChordsSdk/DCPhoneRecord.swift +++ b/ShenYin/DeepChordsSdk/DCPhoneRecord.swift @@ -4,7 +4,7 @@ // // Created by liangshi on 2025/12/9. // -import StarburstSdk +import StarburstSdkDirect public class DCPhoneRecord { /// 单利 diff --git a/ShenYin/DeepChordsSdk/DCSdk.swift b/ShenYin/DeepChordsSdk/DCSdk.swift index 8238e97..c1293dd 100644 --- a/ShenYin/DeepChordsSdk/DCSdk.swift +++ b/ShenYin/DeepChordsSdk/DCSdk.swift @@ -5,7 +5,7 @@ // Created by liangshi on 2025/11/25. // import Foundation -import StarburstSdk +import StarburstSdkDirect public class DCSdk{ public static let shared = DCSdk() diff --git a/ShenYin/DeepChordsSdk/DCText.swift b/ShenYin/DeepChordsSdk/DCText.swift index e0078b6..59b34f0 100644 --- a/ShenYin/DeepChordsSdk/DCText.swift +++ b/ShenYin/DeepChordsSdk/DCText.swift @@ -4,7 +4,7 @@ // // Created by liangshi on 2026/1/15. // -import StarburstSdk +import StarburstSdkDirect /// 文本操作类 public class DCText{ diff --git a/ShenYin/DeepChordsSdk/DCTts.swift b/ShenYin/DeepChordsSdk/DCTts.swift index 7236dc0..fa9ab5d 100644 --- a/ShenYin/DeepChordsSdk/DCTts.swift +++ b/ShenYin/DeepChordsSdk/DCTts.swift @@ -4,7 +4,7 @@ // // Created by liangshi on 2026/2/26. // -//import StarburstSdk +//import StarburstSdkDirect //public class DCTts:NSObject{ // public static let shared = DCTts() // diff --git a/ShenYin/DeepChordsSdk/DCZh2En.swift b/ShenYin/DeepChordsSdk/DCZh2En.swift index ab7d462..e5fe601 100644 --- a/ShenYin/DeepChordsSdk/DCZh2En.swift +++ b/ShenYin/DeepChordsSdk/DCZh2En.swift @@ -5,7 +5,7 @@ // Created by liangshi on 2025/12/29. // -import StarburstSdk +import StarburstSdkDirect /// 响应模型 diff --git a/ShenYin/DeepChordsSdk/DirectCompatibility.swift b/ShenYin/DeepChordsSdk/DirectCompatibility.swift new file mode 100644 index 0000000..641aa3a --- /dev/null +++ b/ShenYin/DeepChordsSdk/DirectCompatibility.swift @@ -0,0 +1,35 @@ +import Foundation +@_exported import StarburstSdkDirect + +// Compatibility aliases so the Demo can compile against Direct framework +// without rewriting all sample code symbols. + +typealias StarburstAsrConfig = SBD_StarburstAsrConfig +typealias StarburstBleAsrConfig = SBD_StarburstBleAsrConfig +typealias StarburstAsrFileConfig = SBD_StarburstAsrFileConfig +typealias StarburstTslConfig = SBD_StarburstTslConfig +typealias StarburstVoiceChatConfig = SBD_StarburstVoiceChatConfig + +typealias StarburstPhoneSdk = SBD_StarburstPhoneSdk +// Direct framework exposes `SBD_StarburstSdk` (not `SBD_StarburstSdkManager`) +typealias StarburstSdk = SBD_StarburstSdk +typealias StarburstSdkManager = SBD_StarburstSdk +typealias StarburstConfig = SBD_StarburstConfig + +typealias StartburstMixSdk = SBD_StartburstMixSdk +typealias StartburstGlassesSdk = SBD_StartburstGlassesSdk +typealias StartburstGlassChat = SBD_StartburstGlassChat +typealias StartburstDecoderConfig = SBD_StartburstDecoderConfig +typealias StarbusrtSpeaker = SBD_StarbusrtSpeaker + +typealias StarburstAsrModel = SBD_StarburstAsrModel +typealias StarburstStreamModel = SBD_StarburstStreamModel +typealias StarburstFileAsrModel = SBD_StarburstFileAsrModel +typealias StarburstTranslateResult = SBD_StarburstTranslateResult +typealias StarburstAsrTtsResult = SBD_StarburstAsrTtsResult + +// Note: the original model name in headers is `StarbaustVoiceChatModel` (typo kept for compatibility) +typealias StarbaustVoiceChatModel = SBD_StarbaustVoiceChatModel +typealias StarbustVoiceChatModel = SBD_StarbaustVoiceChatModel +typealias StarburstVoiceChatModel = SBD_StarbaustVoiceChatModel + diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdk.h b/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdk.h deleted file mode 100644 index fb26542..0000000 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdk.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// Starburst.h -// Starburst -// -// Created by cookies on 2023/6/12. -// - -#import - -//! Project version number for Starburst. -//FOUNDATION_EXPORT double StarburstSdkVersionNumber; - -//! Project version string for Starburst. -//FOUNDATION_EXPORT const unsigned char StarburstSdkVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdkManager.h b/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdkManager.h deleted file mode 100644 index 1aa3a71..0000000 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstSdkManager.h +++ /dev/null @@ -1,195 +0,0 @@ -// -// StarburstSdk.h -// VoiceDemo -// -// Created by incar on 2024/9/12. -// - -#import -#import -#import -#import -#import -#import -#import -#import -#import - -typedef NS_OPTIONS(NSInteger,StarburstCode) { - StarburstCode_Start_Record = 20001,///开始录音 - StarburstCode_Stop_Record = 20002,///停止录音 - StarburstCode_Record_Error = 20003,///录音出错 - StarburstCode_Ble_Disconected = 20004,///蓝牙断开 - StarburstCode_Websocket_Connected = 30001,///socket连上 - StarburstCode_Websocket_Disconnected = 30002,///socket断开连接 - StarburstCode_Websocket_Connecting = 30003,///socket连接中... - StarburstCode_Websocket_pingTimeOut = 30004,///ping超时 - StarburstCode_Net_Error = 50000,///网络错误 - StarburstCode_UnAuth = 60000,///未鉴权 -}; - -typedef void (^AudioIntensityInputCallback)(NSArray *left, - NSArray *right, - NSTimeInterval timestampMs); - -@interface StarburstSdk : NSObject -//@property (nonatomic, strong)void (^authSuccessCallback)(void);/// 鉴权成功回调 -@property (nonatomic, strong)void (^authCallback)(int code,NSString *msg);/// 鉴权结果回调,code200代表成功,其他为失败 -@property (nonatomic, readonly)BOOL didAuth;// 是否已经鉴权 -@property (nonatomic, strong)void (^websocketStateCallback)(BOOL connected);/// websocket状态回调,true为已连接,false未链接 -@property (nonatomic, strong)void (^bleRecordStateCallback)(int state);/// 耳机录音状态回调,1录音,2结束录音 -@property (nonatomic, strong)void (^sendToBleCallback)(NSData *data);/// 发送给蓝牙设备 - -/// 单利 -+ (instancetype)shared; - -/// 收到蓝牙设备传过来的数据,交给sdk处理 -/// - Parameter data:数据 -- (void)receiveBleData:(NSData *)data; - -/// 蓝牙设备已经连上(蓝牙连接和断开都需要通知sdk) -- (void)bleConnected; - -/// 蓝牙断开连接(在监听到蓝牙断开的时候,调用该方法通知sdk结束当前任务) -- (void)bleDisConnected; - -///// 【文本摘要】 -///// - Parameters: -///// - text: 识别的文本 -///// - recognize: 识别结果回调 -///// - error: 错误回调 -- (void)summaryByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; - -/// 【文本摘要】--流式 -/// - Parameters: -/// - text: 摘要的文字 -/// - recognize: 结果回调 -/// - error: 错误回调 -- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; - -/// 取消 【文本摘要】--流式 --(void)cancelSummaryByTextWithSplit; - -/// 【文本翻译】 -/// - Parameters: -/// - text: 翻译的文字 -/// - config: 翻译配置 -/// - recognize: 识别结果回调 -/// - error: 错误回调 -- (void)translateByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; - -/// 【文本翻译】--流式 -/// - Parameters: -/// - text: 翻译的文字 -/// - config: 翻译配置 -/// - recognize: 结果回调 -/// - error: 错误回调 -- (void)translateByTextWithSplit:(NSString *)text config:(StarburstTslConfig*)config recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; - - -/// 取消 【文本翻译】--流式 --(void)cancelTranslateByTextWithSplit; - -/// 【同声传译】开始手机拾音 -/// - Parameters: -/// - config: 识别配置 -/// - voiceRecordData: 录音音频流回调 -/// - recognizeText: 识别回调 -/// - stateChange: 状态回调 -/// - interrupt:打断回调(接听电话等打断) -- (void)startRecordAsr:(StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; - -/// 【同声传译】结束手机拾音 -/// - Parameter fileCallback: 录音文件回调 -- (void)stopRecordAsr:(void(^)(NSString *filePath))callback; - -/// 【自定义音频流识别】开始 -/// - Parameters: -/// - config: ASR识别配置(和手机拾音配置一致) -/// - recognize: 文本识别结果回调 -/// - stateChange: 状态变化回调 -- (void)startCustomAsr:(StarburstAsrConfig*)config - recognizeText:(void (^)(StarburstAsrModel *model))recognize - stateChange:(void(^)(StarburstCode code))stateChange; - -/// 【自定义音频流识别】发送音频数据 -/// - Parameter data: 外部采集的音频 PCM 或其他格式(根据 config 设定) -- (void)sendCustomAudioData:(NSData *)data; - -/// 【自定义音频流识别】结束 -- (void)stopCustomAsr; - -/// 开始耳机拾音 -/// - Parameters: -/// - config: 识别配置 -- (void)startDeviceRecord:(StarburstBleAsrConfig*)config; - -/// 结束耳机拾音 -- (void)stopDeviceRecord; - -/// 设置耳机拾音回调 -/// - Parameters: -/// - recordPath: 录音文件保存的路径。如果文件已经存在,则音频数据会追加到尾部;如果不存在,则创建新文件;传nil则会按之前时间格式创建新文件 -/// - asrConfig: 识别配置 -/// - bleConfig: 耳机录音类型回调 -/// - recognize: 识别回调 -/// - stateChange: 状态回调 -/// - path: 录音结束,录音文件地址回调 -- (void)setupDeviceRecordWith:(NSString *)recordPath asrConfig:(StarburstAsrConfig*)asrConfig bleConfig:(void (^)(StarburstBleAsrConfig*))bleConfig recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; - - -/// opus输出给app,app解码后将数据通过inputPcmData传回给sdk -- (void)outputOpusData:(void (^)(StartburstDecoderConfig *copusConfig,NSData*opusData))recordCallBack; - -/// opus解码后传给sdk -- (void)inputPcmData:(NSData *)pcmData; - - - - - -/// 获取音色列表 -/// - Parameter callBack: 结果回调 -- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; - -/// 设置voice chat回调,目前只支持蓝牙设备发起对话 -/// - Parameters: -/// - config: 对话配置 -/// - startCallBack: 开始回调 -/// - textCallBack: 文本识别回调 -/// - voiceCallBack: AI语音回复回调 -/// - stateChange: 状态回调 -/// - finished:录音地址回调 -- (void)setupVoiceChatWith:(StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish, NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; - -/// 终止voice chat对话 -- (void)stopVoiceChat:(NSInteger)dialogId; - -/// 开始播放tts -- (void)startPlayTtsAudio:(NSInteger)dialogId; - -/// 结束播放tts -- (void)stopPlayTtsAudio:(NSInteger)dialogId; - -/// 发送文字对话 -/// - Parameters: -/// - text: 对话的文字 -/// - isTts: 是否tts -- (void)sendVoiceChat:(NSString *)text tts:(BOOL)isTts; - - -//不可用 -- (void)setupPhoneChatWith:(StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish,NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; -//不可用 -- (void)startPhoneChat:(int)vadType; -//不可用 -- (void)stopPhoneChat; -//不可用 -- (void)registerWithProductKey:(NSString *)productKey productSecret:(NSString *)productSecret deviceName:(NSString *)deviceName random:(NSString *)random finished:(void (^)(NSString *deviceSecret,NSError *error))finished; -//不可用 -- (void)connectWithProductKey:(NSString *)productKey deviceName:(NSString *)deviceName deviceSecret:(NSString *)deviceSecret finished:(void (^)(BOOL isSuccess,NSError *error))finished; -- (void)setInputAudioIntensityCallback:(AudioIntensityInputCallback)callback; - --(NSString *)getDeviceName; -@end - diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/StarburstSdk b/ShenYin/DeepChordsSdk/StarburstSdk.framework/StarburstSdk deleted file mode 100644 index fed75fa..0000000 Binary files a/ShenYin/DeepChordsSdk/StarburstSdk.framework/StarburstSdk and /dev/null differ diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeDirectory b/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeDirectory deleted file mode 100644 index 0cc28a0..0000000 Binary files a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeDirectory and /dev/null differ diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements b/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements deleted file mode 100644 index 4b131e2..0000000 Binary files a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements and /dev/null differ diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements-1 b/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements-1 deleted file mode 100644 index b5e14ee..0000000 Binary files a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeRequirements-1 and /dev/null differ diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeResources b/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeResources deleted file mode 100644 index 17c777d..0000000 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeResources +++ /dev/null @@ -1,432 +0,0 @@ - - - - - files - - Headers/AIGCErrorCode.h - - 6X+BFAl1GUlE673wijlbbmSDK7o= - - Headers/StarbaustVoiceChatModel.h - - O8K7t0c5zyFzqsMRLB06Q9rMy98= - - Headers/StarburstAsrConfig.h - - tSk0X4yTu1hQB88SVtxWkHcfTRY= - - Headers/StarburstAsrModel.h - - YMyp9i53bEO3diakJf+v5x2v2a0= - - Headers/StarburstConfig.h - - s3KYCCc8Cq0RWmlyfW7qe20T0c8= - - Headers/StarburstFileAsrModel.h - - KCay85nepjWFLxW32vUBaknoYTk= - - Headers/StarburstOffLineFile.h - - 28IGQ1ND/MHAAnUNKNBxuvS5ROc= - - Headers/StarburstPhoneSdk.h - - rwT9UO4f4YJAdgYM9SUrQo6cW0M= - - Headers/StarburstSdk.h - - aWY4JErrzMt9gCv0UqKyp5t+qGM= - - Headers/StarburstSdkManager.h - - qhZrrBq0fWMMexpfZdAUj4ZVVNg= - - Headers/StarburstStreamModel.h - - cdW3VKYRIjOHM5xn0Zzt3fioFro= - - Headers/StarbusrtSpeaker.h - - SBlLEersGuEueZNxVNc2uyepfts= - - Headers/StartburstDecoderConfig.h - - CEyiYJhRwvumcRqNLLoJARHeU24= - - Headers/StartburstGlassChat.h - - EKmAva0NghWkD5BgB3v2JyOqcQo= - - Headers/StartburstGlassesSdk.h - - zjj7I7WFlFcTzkseAMNaUZyEIyI= - - Headers/StartburstMixSdk.h - - CLg1FGxHPySPI5qCJH4N1zAZIw4= - - Headers/TextToImageCallback.h - - djrQqQ5J0JGsXn7fyLOzs0g705Q= - - Headers/TextToImageManager.h - - f7vVMHfHHqbi4Bi4seJMqHn4wnU= - - Headers/TextToSpeechCallback.h - - Q6/osX2ZUFgH9dbRA17GNlOraXI= - - Headers/TextToSpeechManager.h - - /j5GzHn6HDrV0eCdlQiwGi65QEQ= - - Info.plist - - LYDkUlG3+K2ItUesIisY3Luuk1c= - - Modules/module.modulemap - - 0SW07sgC8aptSEw6560m065YdrY= - - PrivacyInfo.xcprivacy - - SRctDO3cqibONLEG7CPcNZVBnXw= - - - files2 - - Headers/AIGCErrorCode.h - - hash - - 6X+BFAl1GUlE673wijlbbmSDK7o= - - hash2 - - kB/hT+CxZkfSQW7qym0IydflbAkE3AYBvdij+bCDmlw= - - - Headers/StarbaustVoiceChatModel.h - - hash - - O8K7t0c5zyFzqsMRLB06Q9rMy98= - - hash2 - - Te3DhLKFm7g9Cqh68BOLUikve5gURqN9RWUPumoYzZY= - - - Headers/StarburstAsrConfig.h - - hash - - tSk0X4yTu1hQB88SVtxWkHcfTRY= - - hash2 - - EY1t77d6qelm3wi1yYEcG5Kw1HNnR8mziKSGBadmqOg= - - - Headers/StarburstAsrModel.h - - hash - - YMyp9i53bEO3diakJf+v5x2v2a0= - - hash2 - - r5bjhqHYbfX3MyhkjDOmAbqeXjuBI9fSoQRq/L0POEU= - - - Headers/StarburstConfig.h - - hash - - s3KYCCc8Cq0RWmlyfW7qe20T0c8= - - hash2 - - q5+7n+PJt+RNcfGHp6EMO49CqhiFTaqcIZQbeDtZcTk= - - - Headers/StarburstFileAsrModel.h - - hash - - KCay85nepjWFLxW32vUBaknoYTk= - - hash2 - - Y1+wOB3+K0CSFktnWVRMaxl9SsvQMDAZcFup9gudCFg= - - - Headers/StarburstOffLineFile.h - - hash - - 28IGQ1ND/MHAAnUNKNBxuvS5ROc= - - hash2 - - JqjH7qjguq8OEs3MklD/pyfD9ULJzpCwIyS37AvPIe8= - - - Headers/StarburstPhoneSdk.h - - hash - - rwT9UO4f4YJAdgYM9SUrQo6cW0M= - - hash2 - - kAdf5gAAX2xUk1XeiyxZjeGRvGhNe10TZexUz4PhxWU= - - - Headers/StarburstSdk.h - - hash - - aWY4JErrzMt9gCv0UqKyp5t+qGM= - - hash2 - - rnnCMlslMnwvphEZDLtWFp+XfQ1GqRFbhT7jnUVbBV4= - - - Headers/StarburstSdkManager.h - - hash - - qhZrrBq0fWMMexpfZdAUj4ZVVNg= - - hash2 - - J/65oVgQZfwUd8TWmGj/cvoeb7k9t79kPFQCeVGYRIQ= - - - Headers/StarburstStreamModel.h - - hash - - cdW3VKYRIjOHM5xn0Zzt3fioFro= - - hash2 - - XC3yJkUL3sL1YkFBUADx+q+Q47YB040DrB7QEhOJa7w= - - - Headers/StarbusrtSpeaker.h - - hash - - SBlLEersGuEueZNxVNc2uyepfts= - - hash2 - - yCNcI1umW3Pgn7rtgMv5kZTDZXr/QxvPNRoNjcIrTJU= - - - Headers/StartburstDecoderConfig.h - - hash - - CEyiYJhRwvumcRqNLLoJARHeU24= - - hash2 - - PlYBO1RRT96qRTFSidHUui8kpiVj0/pQW85jqIjCtzY= - - - Headers/StartburstGlassChat.h - - hash - - EKmAva0NghWkD5BgB3v2JyOqcQo= - - hash2 - - YIfvJ+AmQws0QANocYZxmOahypPKgbsEZXeR6wEInTA= - - - Headers/StartburstGlassesSdk.h - - hash - - zjj7I7WFlFcTzkseAMNaUZyEIyI= - - hash2 - - h+sX2xVUY3pWvU9949WQN6IoZau4WG4Ad1qRwJeC6Yk= - - - Headers/StartburstMixSdk.h - - hash - - CLg1FGxHPySPI5qCJH4N1zAZIw4= - - hash2 - - Z6H7+vUoMzMfpR9r7joECzicS9kOX4b/rqZb0fOMoaU= - - - Headers/TextToImageCallback.h - - hash - - djrQqQ5J0JGsXn7fyLOzs0g705Q= - - hash2 - - q/BtJzWpEpHfy9C5Bf07jUccilYQqgy94yGf3KLWwKM= - - - Headers/TextToImageManager.h - - hash - - f7vVMHfHHqbi4Bi4seJMqHn4wnU= - - hash2 - - N96kZDSkodLOSzvpZTi6amQVAYq0AzsFO6tvFFlQEoE= - - - Headers/TextToSpeechCallback.h - - hash - - Q6/osX2ZUFgH9dbRA17GNlOraXI= - - hash2 - - EXuN8dBBPFNJNuxSb0kaSfMs+i0WbS/9uA9tJ95RhlY= - - - Headers/TextToSpeechManager.h - - hash - - /j5GzHn6HDrV0eCdlQiwGi65QEQ= - - hash2 - - ikdltWnYn+xcIZztjJovnuoIDocq2Zwz81BLGh2HmZM= - - - Modules/module.modulemap - - hash - - 0SW07sgC8aptSEw6560m065YdrY= - - hash2 - - js/u3ymUzjIe0pCJDIjb2G3IBfLvIq7aILJo9tH8J8k= - - - PrivacyInfo.xcprivacy - - hash - - SRctDO3cqibONLEG7CPcNZVBnXw= - - hash2 - - cuaVRkQIQRl8fLAPRH2XlUdsPxO0W90uL0WcSHvmSnY= - - - - rules - - ^.* - - ^.*\.lproj/ - - optional - - weight - 1000 - - ^.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^.* - - ^.*\.lproj/ - - optional - - weight - 1000 - - ^.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Base\.lproj/ - - weight - 1010 - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeSignature b/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeSignature deleted file mode 100644 index cf66e23..0000000 Binary files a/ShenYin/DeepChordsSdk/StarburstSdk.framework/_CodeSignature/CodeSignature and /dev/null differ diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/Info.plist b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/Info.plist new file mode 100644 index 0000000..29a256e --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/Info.plist @@ -0,0 +1,27 @@ + + + + + AvailableLibraries + + + BinaryPath + StarburstSdkDirect.framework/StarburstSdkDirect + LibraryIdentifier + ios-arm64 + LibraryPath + StarburstSdkDirect.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/AIGCErrorCode.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/AIGCErrorCode.h similarity index 100% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/AIGCErrorCode.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/AIGCErrorCode.h diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/CustomChatWebSocketClient.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/CustomChatWebSocketClient.h new file mode 100644 index 0000000..33d66e0 --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/CustomChatWebSocketClient.h @@ -0,0 +1,75 @@ +// +// CustomChatWebSocketClient.h +// IOT +// +// Created by ByteDance on 2026/1/26. +// +#import + +@class CustomVoiceChatConfig; + +NS_ASSUME_NONNULL_BEGIN + +@protocol CustomChatWebSocketClientDelegate +@optional +- (void)chatClientDidOpen; +- (void)chatClientDidCloseWithCode:(NSInteger)code reason:(NSString *_Nullable)reason wasClean:(BOOL)wasClean; +- (void)chatClientDidFailWithError:(NSError *)error; + +- (void)chatClientDidReceiveText:(NSString *)text; + +/// 收到 TTS 二进制(如果服务端有 16字节头:dialogId/index/timestamp) +- (void)chatClientDidReceiveTtsData:(NSData *)data + dialogId:(uint32_t)dialogId + index:(uint32_t)index + timestamp:(uint64_t)timestamp + isFinish:(BOOL)isFinish; + +- (void)chatClientDidStartStreaming:(NSInteger)dialogId; +- (void)chatClientDidStopStreaming:(NSInteger)dialogId; +- (void)chatClientDidInterrupt:(NSInteger)dialogId; +@end + +@interface CustomChatWebSocketClient : NSObject + +@property (class, nonatomic, readonly) CustomChatWebSocketClient *shared; + +@property (nonatomic, weak) id delegate; +@property (nonatomic, assign) BOOL enableLog; + +/// 外部只控 VAD:YES => start,NO => stop +@property (atomic, assign, readonly) BOOL vadActive; +@property (atomic, assign, readonly) BOOL streaming; + +/// role 变更 => contextId 变更(保持旧类行为) +@property (nonatomic, copy, readonly) NSString *contextId; + +/// 缓存策略:VAD=true 但尚未open/start时缓存少量音频,防起声丢帧 +@property (nonatomic, assign) BOOL enablePendingAudioBuffer; // default YES +@property (nonatomic, assign) NSUInteger maxPendingAudioFrames; // default 50 + +/// 统一配置(可更新) +- (void)updateConfig:(void (^)(CustomVoiceChatConfig *config))block; + +/// 建连/断连(url内部写死) +- (void)connect; +- (void)disconnect; + +/// 音频源持续 push;只有 vadActive=true 才会真正发送 +- (void)pushAudioFrame:(NSData *)data; + +/// VAD控制 +- (void)updateVadActive:(BOOL)active; + +/// 主动 stop(等同 VAD=false 的 stop) +- (void)stop; + +/// 打断(保留) +- (void)interrupt; + +/// (可选)如果你们鉴权header需要外部注入token等:只给一个“注入request”的钩子,不接收URL +- (void)setRequestDecorator:(void (^ _Nullable)(NSMutableURLRequest *request))decorator; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/CustomVoiceChatConfig.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/CustomVoiceChatConfig.h new file mode 100644 index 0000000..1305b59 --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/CustomVoiceChatConfig.h @@ -0,0 +1,41 @@ +// +// CustomVoiceChatConfig.h +// IOT +// +// Created by ByteDance on 2026/1/26. +// +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface CustomVoiceChatConfig : NSObject + +@property (nonatomic, copy, nullable) NSString *role; /// 对话角色 +@property (nonatomic, copy, nullable) NSString *language; /// 如 zh-CN + +/// 输入音频(multi_start 字段:format + codec) +@property (nonatomic, copy) NSString *format; /// default "raw" +@property (nonatomic, copy) NSString *codec; /// default "raw" / "opus" +@property (nonatomic, assign) NSInteger sampleRate; /// default 16000 +@property (nonatomic, assign) NSInteger channel; /// default 1 + +/// 透传:multi_start.extraInfo +@property (nonatomic, strong, nullable) NSDictionary *extraInfo; + +/// TTS +@property (nonatomic, assign) BOOL tts; +@property (nonatomic, copy, nullable) NSString *ttsAudioFormat; /// default "pcm" +@property (nonatomic, copy, nullable) NSString *ttsSpeakerType; /// "clone" etc +@property (nonatomic, copy, nullable) NSString *ttsSpeakerId; + +/// 其它(如你旧类有) +@property (nonatomic, assign) BOOL debugEnable; /// default YES +@property (nonatomic, assign) NSInteger ttsBinaryBurstSize; /// default 0 +@property (nonatomic, assign) NSInteger ttsBinaryBurstDelay; /// default 0 + +@property (nonatomic, copy, nullable) NSString *customPrompt; +@property (nonatomic, copy, nullable) NSString *pictureFormat; /// default "jpg" + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileProcessingManager.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileProcessingManager.h new file mode 100644 index 0000000..a03f2b8 --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileProcessingManager.h @@ -0,0 +1,43 @@ +// +// FileProcessingManager.h +// IOT +// +// Created by ByteDance on 2025/12/24. +// + +#import +#import "ITaskProcessStatusListener.h" + +NS_ASSUME_NONNULL_BEGIN + + +@protocol IFileTaskCreatedCallback +- (void)onTaskCreated:(NSString *)taskId; +- (void)onError:(NSInteger)code message:(NSString *)message; +@end + +@interface FileProcessingManager : NSObject + ++ (instancetype)shared; + +- (void)createFileAsrTask:(NSURL *)fileURL + language:(NSString *)language + summary:(BOOL)summary + speakerSplit:(BOOL)speakerSplit + sampleRate:(int)sampleRate + format:(NSString *)format + codec:(NSString *)codec + callback:(id)callback; + +- (void)createTextSummaryTask:(NSString *)text + language:(NSString *)language + callback:(id)callback; + +- (void)addQueryTaskId:(NSString *)taskId; +- (void)cancelQueryTaskId:(NSString *)taskId; +- (void)setTaskProcessStatusListener:(id)listener; +- (void)removeAllQueryTask; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileResultTaskPoller.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileResultTaskPoller.h new file mode 100644 index 0000000..da3019e --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileResultTaskPoller.h @@ -0,0 +1,23 @@ +// +// FileResultTaskPoller.h +// IOT +// +// Created by ByteDance on 2026/1/5. +// + +#import +#import "ITaskProcessStatusListener.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FileResultTaskPoller : NSObject + +- (void)addTask:(NSString *)taskId; +- (void)cancelTask:(NSString *)taskId; +- (void)setListener:(id)listener; +- (void)shutdown; +- (void)removeAll; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileTaskResult.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileTaskResult.h new file mode 100644 index 0000000..c4a2eee --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/FileTaskResult.h @@ -0,0 +1,31 @@ +// +// SBFileTaskResult.h +// IOT +// +// Created by ByteDance on 2026/1/5. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SBAudioPiece : NSObject +@property(nonatomic, copy) NSString *text; +@property(nonatomic, assign) long long startTime; // start_time +@property(nonatomic, assign) long long endTime; // end_time +@property(nonatomic, assign) NSInteger speaker; // additions.speaker,解析不到则 -1 +@end + +@interface FileTaskResult : NSObject +@property(nonatomic, assign) NSInteger code; +@property(nonatomic, copy) NSString *msg; +@property(nonatomic, copy) NSString *taskId; +@property(nonatomic, copy) NSString *requestId; +@property(nonatomic, copy) NSString *text; +@property(nonatomic, copy) NSString *summary; +@property(nonatomic, strong) NSArray *pieces; + ++ (nullable instancetype)fromJSONData:(NSData *)data error:(NSError * _Nullable * _Nullable)error; +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/ITaskProcessStatusListener.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/ITaskProcessStatusListener.h new file mode 100644 index 0000000..5077fc2 --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/ITaskProcessStatusListener.h @@ -0,0 +1,19 @@ +// +// ITaskProcessStatusListener.h +// IOT +// +// Created by ByteDance on 2026/1/5. +// + +#import +@class FileTaskResult; + +NS_ASSUME_NONNULL_BEGIN + +@protocol ITaskProcessStatusListener +- (void)onProcessing:(NSString *)taskId code:(NSInteger)code; +- (void)onSuccess:(NSString *)taskId result:(FileTaskResult *)result; +- (void)onFailure:(NSString *)taskId message:(NSString *)message; +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarbaustVoiceChatModel.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarbaustVoiceChatModel.h similarity index 81% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarbaustVoiceChatModel.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarbaustVoiceChatModel.h index e2b25cf..cf4b03b 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarbaustVoiceChatModel.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarbaustVoiceChatModel.h @@ -1,14 +1,14 @@ // // StarbaustVoiceChatModel.h -// StarburstSdk +// SBD_StarburstSdk // // Created by incar on 2024/11/22. // #import -#import +#import "StarburstAsrModel.h" -@interface StarbaustVoiceChatModel : NSObject +@interface SBD_StarbaustVoiceChatModel : NSObject @property (nonatomic, assign) NSInteger code;/// 状态码,200成功 @property (nonatomic, strong) NSString *msg;/// 提示语 @property (nonatomic, strong) NSString *requestId;/// 请求id @@ -22,8 +22,8 @@ @property (nonatomic, assign) NSInteger definiteIndex;/// 已确定的识别结果序列号 //@property (nonatomic, assign) NSInteger conversationIndex;/// 已确定的响应结果序列号 @property (nonatomic, assign) BOOL conversationFinish;/// 对话是否结束 -@property (nonatomic, strong) StarburstTranslateResult *translateResult;///翻译结果 -@property (nonatomic, strong) StarburstAsrTtsResult *ttsResult;///tts音频流 +@property (nonatomic, strong) SBD_StarburstTranslateResult *translateResult;///翻译结果 +@property (nonatomic, strong) SBD_StarburstAsrTtsResult *ttsResult;///tts音频流 @property (nonatomic, assign) NSInteger playAudioSampleRate; @end diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrConfig.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAsrConfig.h similarity index 79% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrConfig.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAsrConfig.h index c373b69..6b0f7ab 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrConfig.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAsrConfig.h @@ -1,6 +1,6 @@ // // StarburstAsrConfig.h -// StarburstSdk +// SBD_StarburstSdk // // Created by incar on 2024/9/14. // @@ -23,7 +23,7 @@ //马来语 ms-MY /// voice chat配置 -@interface StarburstVoiceChatConfig : NSObject +@interface SBD_StarburstVoiceChatConfig : NSObject @property (nonatomic, strong) NSString *role;/// 对话⻆⾊设定;默认为⽆特⾊的智能助⼿ //@property (nonatomic, assign) int channel;/// 默认为1,只⽀持1:单声道、2:双声道 @property (nonatomic, strong) NSString *language;/// 语⾔编码,默认为普通话(zh-CN) @@ -34,7 +34,7 @@ @end /// 手机录音asr配置 -@interface StarburstAsrConfig : NSObject +@interface SBD_StarburstAsrConfig : NSObject /// 是否翻译,默认 false。如果为 true 翻译源语言和目标语言不能是同一种语言 @property (nonatomic, assign) BOOL isTranslate; /// 源语言编码,默认为普通话(zh-CN),auto_lang 自动识别 @@ -59,6 +59,12 @@ @property (nonatomic, strong) NSString *ttsType; /// TTS 声色设置 @property (nonatomic, strong) NSString *ttsSpeaker; +/// TTS 声色类型 +@property (nonatomic, strong, nullable) NSString *ttsSpeakerType; +/// TTS 声色 ID +@property (nonatomic, strong, nullable) NSString *ttsSpeakerId; +/// 是否使用 LLM 翻译,默认 NO +@property (nonatomic, assign) BOOL llmTranslate; /// 音频封装格式(opus 原始流 raw,封装 ogg) @property (nonatomic, strong) NSString *format; /// 音频编码格式(opus、raw) @@ -76,12 +82,12 @@ @end /// 蓝牙耳机录音asr配置 -@interface StarburstBleAsrConfig : NSObject +@interface SBD_StarburstBleAsrConfig : NSObject @property (nonatomic, assign) NSInteger type;/// 0x00实时录音,0x0c通话录音,其他待定 @end /// 文件/文本asr配置 -@interface StarburstAsrFileConfig : NSObject +@interface SBD_StarburstAsrFileConfig : NSObject @property (nonatomic, assign) BOOL isTranslate;/// 是否翻译,默认false @property (nonatomic, strong) NSString *fromLanguage;/// 语⾔编码 @property (nonatomic, strong) NSString *toLanguage;/// ⽬标语⾔编码 @@ -95,11 +101,23 @@ /// 翻译增强,默认 NO @property (nonatomic, assign) BOOL enableTranslateImprove; // enableTranslateImprove @property (nonatomic, assign) BOOL speakerSplit;/// 是否区分说话人,默认false +/// TTS 声色类型(如 "clone" 时配合 ttsSpeakerId 使用) +@property (nonatomic, strong, nullable) NSString *ttsSpeakerType; +/// TTS 声色 ID +@property (nonatomic, strong, nullable) NSString *ttsSpeakerId; +/// 是否使用 LLM 翻译,默认 NO +@property (nonatomic, assign) BOOL llmTranslate; @end /// 翻译配置 -@interface StarburstTslConfig : NSObject +@interface SBD_StarburstTslConfig : NSObject @property (nonatomic, strong) NSString *fromLanguage;/// 语⾔编码 @property (nonatomic, strong) NSString *toLanguage;/// ⽬标语⾔编码 +/// TTS 声色类型(如 "clone" 时配合 ttsSpeakerId 使用) +@property (nonatomic, strong, nullable) NSString *ttsSpeakerType; +/// TTS 声色 ID +@property (nonatomic, strong, nullable) NSString *ttsSpeakerId; +/// 是否使用 LLM 翻译,默认 NO +@property (nonatomic, assign) BOOL llmTranslate; @end diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrModel.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAsrModel.h similarity index 80% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrModel.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAsrModel.h index 6946bcd..9da9a91 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstAsrModel.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAsrModel.h @@ -1,6 +1,6 @@ // // StarburstAsrModel.h -// StarburstSdk +// SBD_StarburstSdk // // Created by incar on 2024/9/13. // @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN /// 说话人分离结果(单段) -@interface StarburstSpeakerSegment : NSObject +@interface SBD_StarburstSpeakerSegment : NSObject @property (nonatomic, copy, nullable) NSString *speakerId; /// 说话人ID(字符串,如 "1") @property (nonatomic, assign) NSInteger startTime; /// 起始时间(ms) @property (nonatomic, assign) NSInteger endTime; /// 结束时间(ms) @@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN @end /// 翻译结果 -@interface StarburstTranslateResult : NSObject +@interface SBD_StarburstTranslateResult : NSObject @property (nonatomic, copy, nullable) NSString *text; /// 语音识别后翻译的结果片段 @property (nonatomic, assign) BOOL definite; /// 当前翻译片段是否确定 @property (nonatomic, assign) int definiteIndex; /// 已翻译片段序号 @@ -30,7 +30,7 @@ NS_ASSUME_NONNULL_BEGIN @end /// tts音频流 -@interface StarburstAsrTtsResult : NSObject +@interface SBD_StarburstAsrTtsResult : NSObject @property (nonatomic, assign) NSInteger index; /// 音频数据片段的序号 @property (nonatomic, assign) NSInteger translateIndex; /// 翻译的序号 @property (nonatomic, copy, nullable) NSString *streamPiece; /// 音频流(Base64/文本) @@ -38,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN @end /// 识别结果 -@interface StarburstAsrModel : NSObject +@interface SBD_StarburstAsrModel : NSObject @property (nonatomic, assign) NSInteger channel; /// 0非立体声,1左声道,2右声道 @property (nonatomic, assign) NSInteger code; /// 状态码 @property (nonatomic, copy, nullable) NSString *msg; /// 提示语 @@ -49,10 +49,10 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, assign) NSInteger definiteIndex; /// 已确定的识别结果序列号 @property (nonatomic, assign) BOOL isLastPackage; /// 是否为最后一包,后续没有数据(包括asr、tts、翻译结果) -@property (nonatomic, strong, nullable) StarburstTranslateResult *translateResult; /// 翻译结果 -@property (nonatomic, strong, nullable) StarburstAsrTtsResult *ttsResult; /// tts音频流 +@property (nonatomic, strong, nullable) SBD_StarburstTranslateResult *translateResult; /// 翻译结果 +@property (nonatomic, strong, nullable) SBD_StarburstAsrTtsResult *ttsResult; /// tts音频流 -@property (nonatomic, copy, nullable) NSArray *speakerResult; /// 说话人分离结果数组 +@property (nonatomic, copy, nullable) NSArray *speakerResult; /// 说话人分离结果数组 + (instancetype)modelWith:(NSDictionary *)dict; @end diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAudioStreamConfig.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAudioStreamConfig.h new file mode 100644 index 0000000..c00512f --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstAudioStreamConfig.h @@ -0,0 +1,32 @@ +// +// StarburstAudioStreamConfig.h +// IOT +// +// Created by ByteDance on 2026/1/29. +// + + +// StarburstAudioStreamConfig.h +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SBD_StarburstAudioStreamConfig : NSObject + +/// "pcm" / "opus" / "aac" ...(由你们协议约定) +/// 建议统一小写 +@property (nonatomic, copy) NSString *codec; + +/// 通用音频参数(对 pcm 必填;对 opus 视你们服务端要求) +@property (nonatomic, assign) NSInteger sampleRate; // e.g. 16000 +@property (nonatomic, assign) NSInteger channels; // e.g. 1 + +/// PCM 专用(codec == "pcm" 时使用) +@property (nonatomic, assign) NSInteger bitsPerSample; // e.g. 16 + +@property (nonatomic, assign) NSInteger opusInputPackageSize; +@property (nonatomic, assign) NSInteger opusOutputPackageSize; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstConfig.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstConfig.h similarity index 97% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstConfig.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstConfig.h index 6d5cf98..1ac0a1b 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstConfig.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstConfig.h @@ -1,6 +1,6 @@ // // StarburstConfig.h -// StarburstSdk +// SBD_StarburstSdk // // Created by liangshi on 2025/6/18. // @@ -16,7 +16,7 @@ typedef NS_OPTIONS(NSInteger,StarburstSdkType) { }; -@interface StarburstConfig : NSObject +@interface SBD_StarburstConfig : NSObject @property (nonatomic, readonly)NSString *logs;/// 获取日志 @property (nonatomic, strong)void (^logCallback)(NSString *log);/// 日志输出回调 @property (nonatomic, assign)BOOL isDebug;/// 是否打印日志,默认false diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstFileAsrModel.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstFileAsrModel.h similarity index 70% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstFileAsrModel.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstFileAsrModel.h index b409f7b..7758297 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstFileAsrModel.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstFileAsrModel.h @@ -1,6 +1,6 @@ // // StarburstFileAsrModel.h -// StarburstSdk +// SBD_StarburstSdk // // Created by incar on 2024/9/27. // @@ -8,20 +8,20 @@ #import /// 该段说话人 -@interface StarburstFileAsrAdditions : NSObject +@interface SBD_StarburstFileAsrAdditions : NSObject @property (nonatomic, strong) NSString *speaker;/// 该段说话人编号 @end /// 识别片段 -@interface StarburstFileAsrPieces : NSObject +@interface SBD_StarburstFileAsrPieces : NSObject @property (nonatomic, strong) NSString *text;/// 片段识别的内筒 @property (nonatomic, assign) NSInteger start_time;///片段对应文件进度,单位毫秒 @property (nonatomic, assign) NSInteger end_time;/// 片段对应文件进度,单位毫秒 -@property (nonatomic, strong) StarburstFileAsrAdditions *additions;///该段说话人 +@property (nonatomic, strong) SBD_StarburstFileAsrAdditions *additions;///该段说话人 @end /// 文件识别结果模型 -@interface StarburstFileAsrModel : NSObject +@interface SBD_StarburstFileAsrModel : NSObject @property (nonatomic, assign) NSInteger code;/// 状态码 @property (nonatomic, strong) NSString *msg;/// 提示语 @property (nonatomic, strong) NSString *requestId;/// 请求id @@ -29,8 +29,8 @@ @property (nonatomic, strong) NSString *text;/// 语⾳识别内容 @property (nonatomic, strong) NSString *summary;/// 识别摘要内容 @property (nonatomic, strong) NSString *transText;///识别后翻译结果 -@property (nonatomic, strong) NSArray *pieces;///识别片段 +@property (nonatomic, strong) NSArray *pieces;///识别片段 -+ (StarburstFileAsrModel *)modelWith:(NSDictionary *)dict; ++ (SBD_StarburstFileAsrModel *)modelWith:(NSDictionary *)dict; @end diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstOffLineFile.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstOffLineFile.h similarity index 85% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstOffLineFile.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstOffLineFile.h index 9e7a192..c24b4b3 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstOffLineFile.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstOffLineFile.h @@ -1,6 +1,6 @@ // // StarburstOffLineFile.h -// StarburstSdk +// SBD_StarburstSdk // // Created by incar on 2024/10/8. // @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN /// 离线文件 -@interface StarburstOffLineFile : NSObject +@interface SBD_StarburstOffLineFile : NSObject @property (nonatomic, assign) uint8_t fileType;/// 0x00所有文件、0x01左耳列表、0x02右耳列表 @property (nonatomic, assign) NSInteger fileId;/// 文件id diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstPhoneSdk.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstPhoneSdk.h similarity index 61% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstPhoneSdk.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstPhoneSdk.h index f98d250..0571fb5 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstPhoneSdk.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstPhoneSdk.h @@ -1,22 +1,22 @@ // // StarburstPhoneSdk.h -// StarburstSdk +// SBD_StarburstSdk // // Created by liangshi on 2025/3/11. // #import -#import -#import -#import -#import -#import -#import -#import -#import +#import "StarburstSdkManager.h" +#import "StarburstAsrConfig.h" +#import "StarburstAsrModel.h" +#import "StarbaustVoiceChatModel.h" +#import "StarburstFileAsrModel.h" +#import "StarburstOffLineFile.h" +#import "StarburstStreamModel.h" +#import "StarbusrtSpeaker.h" -@interface StarburstPhoneSdk : NSObject +@interface SBD_StarburstPhoneSdk : NSObject @property (nonatomic, readonly)BOOL didAuth;/// 是否已经鉴权 @property (nonatomic, strong)void (^websocketStateCallback)(BOOL connected);/// websocket状态回调,true为已连接,false未链接 @@ -46,21 +46,21 @@ ///// - path: 文件路径 ///// - recognize: 识别结果回调 ///// - error: 错误回调 -//- (void)asrByFile:(NSURL *)filePath config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; +//- (void)asrByFile:(NSURL *)filePath config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; /// 【文本摘要】 /// - Parameters: /// - text: 识别的文本 /// - recognize: 识别结果回调 /// - error: 错误回调 -- (void)summaryByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; +- (void)summaryByText:(NSString *)text config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; /// 【文本摘要】--流式 /// - Parameters: /// - text: 摘要的文字 /// - recognize: 结果回调 /// - error: 错误回调 -- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; +- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(SBD_StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; /// 取消 【文本摘要】--流式 -(void)cancelSummaryByTextWithSplit; @@ -71,7 +71,7 @@ /// - config: 翻译配置 /// - recognize: 识别结果回调 /// - error: 错误回调 -- (void)translateByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; +- (void)translateByText:(NSString *)text config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; /// 【文本翻译】--流式 /// - Parameters: @@ -79,7 +79,7 @@ /// - config: 翻译配置 /// - recognize: 结果回调 /// - error: 错误回调 -- (void)translateByTextWithSplit:(NSString *)text config:(StarburstTslConfig*)config recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; +- (void)translateByTextWithSplit:(NSString *)text config:(SBD_StarburstTslConfig*)config recognizeText:(void (^)(SBD_StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; /// 取消 【文本翻译】--流式 -(void)cancelTranslateByTextWithSplit; @@ -90,7 +90,7 @@ /// - voiceRecordData: 录音音频流回调 /// - recognizeText: 识别回调 /// - stateChange: 状态回调 -- (void)startRecordAsr:(StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; +- (void)startRecordAsr:(SBD_StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(SBD_StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; /// 【同声传译】结束手机拾音 /// - Parameter fileCallback: 录音文件回调 @@ -104,7 +104,7 @@ /// - voiceCallBack: AI语音回复回调 /// - stateChange: 状态回调 /// - finished:录音地址回调 -- (void)setupPhoneChatWith:(StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish,NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; +- (void)setupPhoneChatWith:(SBD_StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(SBD_StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish,NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; /// 手机拾音,开始对话 /// - Parameter vadType: 0 vad检测,1不启用vad(手动控制开始/结束讲话) @@ -115,7 +115,7 @@ /// 获取音色列表 /// - Parameter callBack: 结果回调 -- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; +- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; @end diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstSdk.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstSdk.h new file mode 100644 index 0000000..adbc04d --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstSdk.h @@ -0,0 +1,43 @@ +// +// Starburst.h +// Starburst +// +// Created by cookies on 2023/6/12. +// + +#import + +//! Project version number for Starburst. +//FOUNDATION_EXPORT double StarburstSdkVersionNumber; + +//! Project version string for Starburst. +//FOUNDATION_EXPORT const unsigned char StarburstSdkVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import "StarburstSdkManager.h" +#import "StarburstConfig.h" +#import "StarburstPhoneSdk.h" +#import "StartburstMixSdk.h" +#import "StartburstGlassesSdk.h" +#import "StartburstGlassChat.h" +#import "StarburstAsrConfig.h" +#import "StarburstAsrModel.h" +#import "StarburstFileAsrModel.h" +#import "StarbaustVoiceChatModel.h" +#import "StarbusrtSpeaker.h" +#import "StarburstStreamModel.h" +#import "StarburstOffLineFile.h" +#import "StartburstDecoderConfig.h" +#import "TextToImageManager.h" +#import "TextToImageCallback.h" +#import "AIGCErrorCode.h" +#import "TextToSpeechManager.h" +#import "TextToSpeechCallback.h" +#import "FileProcessingManager.h" +#import "FileResultTaskPoller.h" +#import "FileTaskResult.h" +#import "StarburstVoiceChatRecorder.h" +#import "StarburstAudioStreamConfig.h" +//#import "CustomChatWebSocketClient.h" +//#import "CustomVoiceChatConfig.h" diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstSdkManager.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstSdkManager.h new file mode 100644 index 0000000..d3616f5 --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstSdkManager.h @@ -0,0 +1,259 @@ +// +// StarburstSdk.h +// VoiceDemo +// +// Created by incar on 2024/9/12. +// + +#import +#import "StarburstAsrConfig.h" +#import "StarburstAsrModel.h" +#import "StarbaustVoiceChatModel.h" +#import "StarburstFileAsrModel.h" +#import "StarburstOffLineFile.h" +#import "StarburstStreamModel.h" +#import "StarbusrtSpeaker.h" +#import "StartburstDecoderConfig.h" +#import "StarburstVoiceChatRecorder.h" + +typedef NS_OPTIONS(NSInteger,StarburstCode) { + StarburstCode_Start_Record = 20001,///开始录音 + StarburstCode_Stop_Record = 20002,///停止录音 + StarburstCode_Record_Error = 20003,///录音出错 + StarburstCode_Ble_Disconected = 20004,///蓝牙断开 + StarburstCode_Websocket_Connected = 30001,///socket连上 + StarburstCode_Websocket_Disconnected = 30002,///socket断开连接 + StarburstCode_Websocket_Connecting = 30003,///socket连接中... + StarburstCode_Websocket_pingTimeOut = 30004,///ping超时 + StarburstCode_Net_Error = 50000,///网络错误 + StarburstCode_UnAuth = 60000,///未鉴权 +}; + +typedef void (^AudioIntensityInputCallback)(NSArray *left, + NSArray *right, + NSTimeInterval timestampMs); + +@interface SBD_StarburstSdk : NSObject +//@property (nonatomic, strong)void (^authSuccessCallback)(void);/// 鉴权成功回调 +@property (nonatomic, strong)void (^authCallback)(int code,NSString *msg);/// 鉴权结果回调,code200代表成功,其他为失败 +@property (nonatomic, readonly)BOOL didAuth;// 是否已经鉴权 +@property (nonatomic, strong)void (^websocketStateCallback)(BOOL connected);/// websocket状态回调,true为已连接,false未链接 +@property (nonatomic, strong)void (^bleRecordStateCallback)(int state);/// 耳机录音状态回调,1录音,2结束录音 +@property (nonatomic, strong)void (^sendToBleCallback)(NSData *data);/// 发送给蓝牙设备 + +/// 单例 ++ (instancetype)shared; + +/// 鉴权用时间戳(毫秒),与服务器对齐的 NTP 时间,供 BLE 设备鉴权等使用 ++ (long)authTimestampMs; + +/// 收到蓝牙设备传过来的数据,交给sdk处理 +/// - Parameter data:数据 +- (void)receiveBleData:(NSData *)data; + +/// 蓝牙设备已经连上(蓝牙连接和断开都需要通知sdk) +- (void)bleConnected; + +/// 蓝牙断开连接(在监听到蓝牙断开的时候,调用该方法通知sdk结束当前任务) +- (void)bleDisConnected; + +///// 【文本摘要】 +///// - Parameters: +///// - text: 识别的文本 +///// - recognize: 识别结果回调 +///// - error: 错误回调 +- (void)summaryByText:(NSString *)text config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本摘要】--流式 +/// - Parameters: +/// - text: 摘要的文字 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(SBD_StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + +/// 取消 【文本摘要】--流式 +-(void)cancelSummaryByTextWithSplit; + +/// 【文本翻译】 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 识别结果回调 +/// - error: 错误回调 +- (void)translateByText:(NSString *)text config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; + +/// 【文本翻译】--流式 +/// - Parameters: +/// - text: 翻译的文字 +/// - config: 翻译配置 +/// - recognize: 结果回调 +/// - error: 错误回调 +- (void)translateByTextWithSplit:(NSString *)text config:(SBD_StarburstTslConfig*)config recognizeText:(void (^)(SBD_StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; + + +/// 取消 【文本翻译】--流式 +-(void)cancelTranslateByTextWithSplit; + +/// 【同声传译】开始手机拾音 +/// - Parameters: +/// - config: 识别配置 +/// - voiceRecordData: 录音音频流回调 +/// - recognizeText: 识别回调 +/// - stateChange: 状态回调 +/// - interrupt:打断回调(接听电话等打断) +- (void)startRecordAsr:(SBD_StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(SBD_StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; + +/// 【同声传译】结束手机拾音 +/// - Parameter fileCallback: 录音文件回调 +- (void)stopRecordAsr:(void(^)(NSString *filePath))callback; + +/// 【自定义音频流识别】开始 +/// - Parameters: +/// - config: ASR识别配置(和手机拾音配置一致) +/// - recognize: 文本识别结果回调 +/// - stateChange: 状态变化回调 +- (void)startCustomAsr:(SBD_StarburstAsrConfig*)config + recognizeText:(void (^)(SBD_StarburstAsrModel *model))recognize + stateChange:(void(^)(StarburstCode code))stateChange; + +/// 【自定义音频流识别】按实例 ID 开始(支持多实例,如双路识别) +/// - Parameters: +/// - streamerId: 实例标识,如 @"default"、@"secondary"、@"left"、@"right" 等,nil 或空表示默认实例 +/// - config: ASR识别配置 +/// - recognize: 文本识别结果回调 +/// - stateChange: 状态变化回调 +- (void)startCustomAsrWithId:(NSString *)streamerId + config:(SBD_StarburstAsrConfig *)config + recognizeText:(void (^)(SBD_StarburstAsrModel *model))recognize + stateChange:(void(^)(StarburstCode code))stateChange; + +/// 【自定义音频流识别】发送音频数据 +/// - Parameter data: 外部采集的音频 PCM 或其他格式(根据 config 设定) +- (void)sendCustomAudioData:(NSData *)data; + +/// 【自定义音频流识别】向指定实例发送音频数据 +/// - Parameters: +/// - data: 音频数据 +/// - streamerId: 实例标识,nil 或空表示默认实例 +- (void)sendCustomAudioData:(NSData *)data toStreamerId:(NSString *)streamerId; + +/// 【自定义音频流识别】结束 +- (void)stopCustomAsr; + +/// 【自定义音频流识别】结束指定实例 +/// - Parameter streamerId: 实例标识,nil 或空表示默认实例 +- (void)stopCustomAsrForId:(NSString *)streamerId; + +/// 开始耳机拾音 +/// - Parameters: +/// - config: 识别配置 +- (void)startDeviceRecord:(SBD_StarburstBleAsrConfig*)config; + +/// 结束耳机拾音 +- (void)stopDeviceRecord; + +/// 设置耳机拾音回调 +/// - Parameters: +/// - recordPath: 录音文件保存的路径。如果文件已经存在,则音频数据会追加到尾部;如果不存在,则创建新文件;传nil则会按之前时间格式创建新文件 +/// - asrConfig: 识别配置 +/// - bleConfig: 耳机录音类型回调 +/// - recognize: 识别回调 +/// - stateChange: 状态回调 +/// - path: 录音结束,录音文件地址回调 +- (void)setupDeviceRecordWith:(NSString *)recordPath asrConfig:(SBD_StarburstAsrConfig*)asrConfig bleConfig:(void (^)(SBD_StarburstBleAsrConfig*))bleConfig recognizeText:(void (^)(SBD_StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; + + +/// opus输出给app,app解码后将数据通过inputPcmData传回给sdk +- (void)outputOpusData:(void (^)(SBD_StartburstDecoderConfig *copusConfig,NSData*opusData))recordCallBack; + +/// opus解码后传给sdk +- (void)inputPcmData:(NSData *)pcmData; + + + + + +/// 获取音色列表 +/// - Parameter callBack: 结果回调 +- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; + +/// 设置voice chat回调,目前只支持蓝牙设备发起对话 +/// - Parameters: +/// - config: 对话配置 +/// - startCallBack: 开始回调 +/// - textCallBack: 文本识别回调 +/// - voiceCallBack: AI语音回复回调 +/// - stateChange: 状态回调 +/// - finished:录音地址回调 +- (void)setupVoiceChatWith:(SBD_StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(SBD_StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish, NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; + +/// 终止voice chat对话 +- (void)stopVoiceChat:(NSInteger)dialogId; + +/// 开始播放tts +- (void)startPlayTtsAudio:(NSInteger)dialogId; + +/// 结束播放tts +- (void)stopPlayTtsAudio:(NSInteger)dialogId; + +/// 发送文字对话 +/// - Parameters: +/// - text: 对话的文字 +/// - isTts: 是否tts +- (void)sendVoiceChat:(NSString *)text tts:(BOOL)isTts; + + +/// 手机拾音 voice chat(支持自定义 recorder) +/// - Parameters: +/// - config: 对话配置 +/// - recorder: 外部录音器(实现 SBD_StarburstVoiceChatRecorder 协议) +/// - startCallback: 开始回调 +/// - textCallBack: 文本回调 +/// - voiceCallBack: AI 语音回调 +/// - stateChange: 状态回调 +/// - path: 录音文件路径回调 +/// +- (void)setupPhoneChatWith:(SBD_StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(SBD_StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish,NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; + +/// 配置并绑定“手机通话/语音对话”能力(支持自定义录音机)。 +/// +/// 调用流程建议: +/// 1) 先调用本方法完成配置与回调绑定; +/// 2) 再调用 startPhoneChat / stopPhoneChat 控制开始/结束 +/// +/// 注意: +/// - recorder 需要被外部强持有(或 SDK 内部会强持有),否则可能出现 start 不触发/回调不走。 +/// - recorder 负责通过 setUpStart:stop:data:finished: 将音频数据(NSData)持续回传给 SDK。 +/// +/// @param config 语音对话配置(如鉴权、场景、VAD/ASR/TTS 相关策略等)。 +/// @param recorder 自定义录音机(实现 SBD_StarburstVoiceChatRecorder 协议)。 +/// @param startCallback 对话启动回调:SDK 成功创建/开启一次对话后回调,返回 dialogId。 +/// @param textCallBack 文本回调:服务端返回的识别/对话文本模型(字段以 SBD_StarbaustVoiceChatModel 实际定义为准)。 +/// @param voiceCallBack 语音回调:服务端返回的语音数据流(TTS)。 +/// - dialogId: 对应对话 ID +/// - data: 音频数据(通常为 opus/pcm,取决于 config) +/// - finish: 是否为最后一包 +/// - sampleRate: 音频采样率(Hz) +/// @param stateChange 状态回调:SDK 内部状态变化(连接/鉴权/开始/结束/错误等,取决于 StarburstCode 定义)。 +/// @param path 结束回调:本次对话/录音结束后回调文件路径(由 recorder 或 SDK 生成;没有则可能为空字符串)。 +- (void)setupPhoneChatWith:(SBD_StarburstVoiceChatConfig*)config + recorder:(id)recorder + start:(void (^)(NSInteger dialogId))startCallback + textCallback:(void (^)(SBD_StarbaustVoiceChatModel *model))textCallBack + responseVoice:(void (^)(NSInteger dialogId, NSData *data, BOOL finish, NSInteger sampleRate))voiceCallBack + stateChange:(void(^)(StarburstCode code))stateChange + finished:(void(^)(NSString *filePath))path; + +- (void)startPhoneChat:(int)vadType; + +- (void)stopPhoneChat; + +//不可用 +- (void)registerWithProductKey:(NSString *)productKey productSecret:(NSString *)productSecret deviceName:(NSString *)deviceName random:(NSString *)random finished:(void (^)(NSString *deviceSecret,NSError *error))finished; +//不可用 +- (void)connectWithProductKey:(NSString *)productKey deviceName:(NSString *)deviceName deviceSecret:(NSString *)deviceSecret finished:(void (^)(BOOL isSuccess,NSError *error))finished; +- (void)setInputAudioIntensityCallback:(AudioIntensityInputCallback)callback; +- (void)setPhoneInputAudioIntensityCallback:(void(^)(NSArray *left, NSArray *right, NSTimeInterval frameTimestampMs))callback; +-(NSString *)getDeviceName; +@end + diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstStreamModel.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstStreamModel.h similarity index 88% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstStreamModel.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstStreamModel.h index fa0ad1f..4a0d75a 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarburstStreamModel.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstStreamModel.h @@ -1,6 +1,6 @@ // // StarburstStreamModel.h -// StarburstSdk +// SBD_StarburstSdk // // Created by liangshi on 2024/12/20. // @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface StarburstStreamModel : NSObject +@interface SBD_StarburstStreamModel : NSObject @property (nonatomic, assign) NSInteger code;//1: processing, 10: complete -1:fail @property (nonatomic, strong) NSString *msg;//提示文字 @property (nonatomic, strong) NSString *failReason;//失败原因 diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstVoiceChatRecorder.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstVoiceChatRecorder.h new file mode 100644 index 0000000..27ec981 --- /dev/null +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarburstVoiceChatRecorder.h @@ -0,0 +1,61 @@ +// +// StarburstVoiceChatRecorder.h +// IOT +// +// Created by ByteDance on 2026/1/29. +// + +#import +@class SBD_StarburstAudioStreamConfig; + +NS_ASSUME_NONNULL_BEGIN + +/// 自定义录音机协议。 +/// +/// SDK 通过该协议从业务侧获取“输入音频流”,用于语音对话。 +/// 业务侧需要实现本协议,并在 `start/stop` 中驱动采集或读取音频数据,然后通过 +/// `setUpStart:stop:data:finished:` 提供的回调把数据推给 SDK。 +/// +/// 基本调用关系: +/// 1. SDK 调用 `setUpStart:stop:data:finished:` 注入回调(业务侧保存这些 block); +/// 2. SDK 调用 `start` 表示开始一次对话/采集; +/// 3. 业务侧在合适时机调用: +/// - onStart(config):告知 SDK 本次输入流的参数(采样率/声道/编码格式等); +/// - onData(data):持续推送音频数据包; +/// - onStop():告知本次输入结束(不再发送 onData); +/// - onFinished(filePath):本次录音/输入结束后的文件路径(如不落盘可传空字符串)。 +/// +/// 注意: +/// - onStart/onStop 语义是“一次会话”的边界:一次会话只调用一次 onStart 与一次 onStop。 +/// - onData 的数据格式、包大小/时长需与 SBD_StarburstAudioStreamConfig 保持一致(例如 PCM16/Opus 等)。 +/// - 若实现了基于 VAD 的门控:应在检测到“开始说话”时触发 onStart;检测到“说话结束”时触发 onStop。 +@protocol SBD_StarburstVoiceChatRecorder + +/// VAD 类型/模式(由业务侧或 SDK 配置)。 +/// 具体枚举含义以 SDK 文档/实现为准(例如:0=关闭 VAD,1=VAD),这个是startPhoneChat的时候传入的参数透传。 +/// +/// SDK 可能在 start 前设置该值,业务侧可在录音策略中读取并决定是否启用 VAD 门控。 +@property (nonatomic, assign) NSInteger vadType; + +/// SDK 注入回调,业务侧需要保存并在合适时机调用。 +/// +/// @param start 开始回调:业务侧调用一次,传入本次输入音频流配置(编码、采样率、声道、包大小等)。 +/// @param stop 停止回调:业务侧调用一次,表示本次输入结束,不再继续发送 data。 +/// @param data 数据回调:业务侧持续调用,将音频数据包推送给 SDK(NSData 为一包数据)。 +/// @param path 完成回调:业务侧调用一次,返回本次录音/输入对应的文件路径;不落盘可传空字符串。 +- (void)setUpStart:(void(^)(SBD_StarburstAudioStreamConfig *config))start + stop:(void(^)(void))stop + data:(void(^)(NSData *data))data + finished:(void(^)(NSString *filePath))path; + +/// 开始一次输入(由 SDK 触发)。 +/// 业务侧一般在该方法内:启动音频采集/读取文件,并在合适时机回调 start/data。 +- (void)start; + +/// 停止当前输入(由 SDK 触发)。 +/// 业务侧一般在该方法内:停止采集/读取,并回调 stop/finished(按实现需要)。 +- (void)stop; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarbusrtSpeaker.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarbusrtSpeaker.h similarity index 85% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarbusrtSpeaker.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarbusrtSpeaker.h index 2b2dae4..47acd95 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StarbusrtSpeaker.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StarbusrtSpeaker.h @@ -1,6 +1,6 @@ // // StarbusrtSpeaker.h -// StarburstSdk +// SBD_StarburstSdk // // Created by liangshi on 2025/2/18. // @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface StarbusrtSpeaker : NSObject +@interface SBD_StarbusrtSpeaker : NSObject @property (nonatomic, strong) NSString *sid;/// 音色id @property (nonatomic, strong) NSString *name;/// 名称 @property (nonatomic, strong) NSString *type;/// 类型 diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstDecoderConfig.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstDecoderConfig.h similarity index 87% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstDecoderConfig.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstDecoderConfig.h index 7e47aa2..0d12e2f 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstDecoderConfig.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstDecoderConfig.h @@ -1,13 +1,13 @@ //// //// Startburst.h -//// StarburstSdk +//// SBD_StarburstSdk //// //// Created by liangshi on 2025/6/11. //// // #import -@interface StartburstDecoderConfig : NSObject +@interface SBD_StartburstDecoderConfig : NSObject @property (nonatomic, assign)NSInteger sampleRate;/// 采样率 @property (nonatomic, assign)NSInteger numChannels;/// 声道数 @property (nonatomic, assign)NSInteger encodedFrameLength;/// 编码后每帧字节数 diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassChat.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstGlassChat.h similarity index 55% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassChat.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstGlassChat.h index e3f6a1b..682bcc9 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassChat.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstGlassChat.h @@ -1,17 +1,17 @@ // // StartburstGlassChat.h -// StarburstSdk +// SBD_StarburstSdk // // Created by liangshi on 2025/5/6. // #import -#import -#import -#import +#import "StarburstSdkManager.h" +#import "StarbaustVoiceChatModel.h" +#import "StarbusrtSpeaker.h" -@interface StartburstGlassChat : NSObject +@interface SBD_StartburstGlassChat : NSObject /// /// 对话设置 /// - Parameters: @@ -20,7 +20,7 @@ /// - voiceCallBack: AI语音回复回调 /// - stateChange: 状态回调 /// - finished:录音地址回调 -- (void)setupPhoneChatWith:(StarburstVoiceChatConfig*)config textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish,NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; +- (void)setupPhoneChatWith:(SBD_StarburstVoiceChatConfig*)config textCallback:(void (^)(SBD_StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish,NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; /// 开始对话 - (void)start; @@ -44,6 +44,10 @@ /// - Parameter text:文本 - (void)fireText:(NSString *)text; +- (void)requestSpeakerListWithContextId:(NSString *)contextId +customPrompt:(NSString *)customPrompt +callback:(void (^)(NSArray *list, BOOL success))callback; + @end diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassesSdk.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstGlassesSdk.h similarity index 59% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassesSdk.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstGlassesSdk.h index e3f6eba..473786f 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstGlassesSdk.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstGlassesSdk.h @@ -1,27 +1,27 @@ // // StartburstGlassesSdk.h -// StarburstSdk +// SBD_StarburstSdk // // Created by liangshi on 2025/4/29. // #import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -@interface StartburstGlassesSdk : NSObject +#import "StarburstSdkManager.h" +#import "StarburstAsrConfig.h" +#import "StarburstAsrModel.h" +#import "StarbaustVoiceChatModel.h" +#import "StarburstFileAsrModel.h" +#import "StarburstOffLineFile.h" +#import "StarburstStreamModel.h" +#import "StarbusrtSpeaker.h" +#import "StartburstGlassChat.h" + +@interface SBD_StartburstGlassesSdk : NSObject @property (nonatomic, strong)void (^sendToBleCallback)(NSData *data);/// 发送给蓝牙设备 @property (nonatomic, strong)void (^authCallback)(int code,NSString *msg);/// 鉴权结果回调,code200代表成功,其他为失败 @property (nonatomic, readonly)BOOL didAuth;/// 是否已经鉴权 -@property (nonatomic, strong)StartburstGlassChat *chat;/// 对话对象 +@property (nonatomic, strong)SBD_StartburstGlassChat *chat;/// 对话对象 /// 单利 + (instancetype)shared; @@ -58,14 +58,14 @@ /// - text: 识别的文本 /// - recognize: 识别结果回调 /// - error: 错误回调 -- (void)summaryByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; +- (void)summaryByText:(NSString *)text config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; /// 【文本摘要】--流式 /// - Parameters: /// - text: 摘要的文字 /// - recognize: 结果回调 /// - error: 错误回调 -- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; +- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(SBD_StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; /// 取消 【文本摘要】--流式 -(void)cancelSummaryByTextWithSplit; @@ -76,7 +76,7 @@ /// - config: 翻译配置 /// - recognize: 识别结果回调 /// - error: 错误回调 -- (void)translateByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; +- (void)translateByText:(NSString *)text config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; /// 【文本翻译】--流式 /// - Parameters: @@ -84,7 +84,7 @@ /// - config: 翻译配置 /// - recognize: 结果回调 /// - error: 错误回调 -- (void)translateByTextWithSplit:(NSString *)text config:(StarburstTslConfig*)config recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; +- (void)translateByTextWithSplit:(NSString *)text config:(SBD_StarburstTslConfig*)config recognizeText:(void (^)(SBD_StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; /// 取消 【文本翻译】--流式 -(void)cancelTranslateByTextWithSplit; @@ -95,7 +95,7 @@ /// - voiceRecordData: 录音音频流回调 /// - recognizeText: 识别回调 /// - stateChange: 状态回调 -- (void)startRecordAsr:(StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; +- (void)startRecordAsr:(SBD_StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(SBD_StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; /// 【同声传译】结束手机拾音 /// - Parameter fileCallback: 录音文件回调 @@ -103,20 +103,31 @@ /// 开始自定义音频流识别 -- (void)startCustomAsr:(StarburstAsrConfig*)config - recognizeText:(void (^)(StarburstAsrModel *model))recognize +- (void)startCustomAsr:(SBD_StarburstAsrConfig*)config + recognizeText:(void (^)(SBD_StarburstAsrModel *model))recognize stateChange:(void(^)(StarburstCode code))stateChange; +/// 开始自定义音频流识别(支持多实例,streamerId 如 @"left"、@"right",nil 为默认实例) +- (void)startCustomAsrWithId:(NSString *)streamerId + config:(SBD_StarburstAsrConfig *)config + recognizeText:(void (^)(SBD_StarburstAsrModel *model))recognize + stateChange:(void(^)(StarburstCode code))stateChange; + /// 发送一段自定义音频数据(采样率、格式需匹配 config 设定) - (void)sendCustomAudioData:(NSData *)data; +/// 向指定实例发送自定义音频数据 +- (void)sendCustomAudioData:(NSData *)data toStreamerId:(NSString *)streamerId; + /// 停止自定义音频流识别 - (void)stopCustomAsr; +/// 停止指定实例的自定义音频流识别 +- (void)stopCustomAsrForId:(NSString *)streamerId; + /// 获取音色列表 /// - Parameter callBack: 结果回调 -- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; - +- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; @end diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstMixSdk.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstMixSdk.h similarity index 52% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstMixSdk.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstMixSdk.h index 456b341..e73d4c1 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/StartburstMixSdk.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/StartburstMixSdk.h @@ -1,21 +1,22 @@ // // StartburstMixSdk.h -// StarburstSdk +// SBD_StarburstSdk // // Created by liangshi on 2025/4/22. // #import -#import -#import -#import -#import -#import -#import -#import -#import - -@interface StartburstMixSdk : NSObject +#import "StarburstSdkManager.h" +#import "StarburstAsrConfig.h" +#import "StarburstAsrModel.h" +#import "StarbaustVoiceChatModel.h" +#import "StarburstFileAsrModel.h" +#import "StarburstOffLineFile.h" +#import "StarburstStreamModel.h" +#import "StarbusrtSpeaker.h" +#import "StarburstVoiceChatRecorder.h" + +@interface SBD_StartburstMixSdk : NSObject @property (nonatomic, strong)void (^authCallback)(int code,NSString *msg);/// 鉴权结果回调,code200代表成功,其他为失败 @property (nonatomic, readonly)BOOL didAuth;/// 是否已经鉴权 @@ -41,14 +42,14 @@ /// - text: 识别的文本 /// - recognize: 识别结果回调 /// - error: 错误回调 -- (void)summaryByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; +- (void)summaryByText:(NSString *)text config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; /// 【文本摘要】--流式 /// - Parameters: /// - text: 摘要的文字 /// - recognize: 结果回调 /// - error: 错误回调 -- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; +- (void)summaryByTextWithSplit:(NSString *)text recognizeText:(void (^)(SBD_StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; /// 取消 【文本摘要】--流式 -(void)cancelSummaryByTextWithSplit; @@ -59,7 +60,7 @@ /// - config: 翻译配置 /// - recognize: 识别结果回调 /// - error: 错误回调 -- (void)translateByText:(NSString *)text config:(StarburstAsrFileConfig*)config recognizeText:(void (^)(StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; +- (void)translateByText:(NSString *)text config:(SBD_StarburstAsrFileConfig*)config recognizeText:(void (^)(SBD_StarburstFileAsrModel*))recognize error:(void (^)(NSError *err))error; /// 【文本翻译】--流式 /// - Parameters: @@ -67,7 +68,7 @@ /// - config: 翻译配置 /// - recognize: 结果回调 /// - error: 错误回调 -- (void)translateByTextWithSplit:(NSString *)text config:(StarburstTslConfig*)config recognizeText:(void (^)(StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; +- (void)translateByTextWithSplit:(NSString *)text config:(SBD_StarburstTslConfig*)config recognizeText:(void (^)(SBD_StarburstStreamModel*))recognize error:(void (^)(NSError *err))error; /// 取消 【文本翻译】--流式 -(void)cancelTranslateByTextWithSplit; @@ -78,7 +79,7 @@ /// - voiceRecordData: 录音音频流回调 /// - recognizeText: 识别回调 /// - stateChange: 状态回调 -- (void)startRecordAsr:(StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; +- (void)startRecordAsr:(SBD_StarburstAsrConfig*)config voiceRecord:(void (^)(NSData*))voiceData recognizeText:(void (^)(SBD_StarburstAsrModel*))recognize stateChange:(void(^)(StarburstCode code))stateChange interruption:(void(^)(void))interrupt; /// 【同声传译】结束手机拾音 /// - Parameter fileCallback: 录音文件回调 @@ -92,8 +93,16 @@ /// - voiceCallBack: AI语音回复回调 /// - stateChange: 状态回调 /// - finished:录音地址回调 -- (void)setupPhoneChatWith:(StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish, NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; +- (void)setupPhoneChatWith:(SBD_StarburstVoiceChatConfig*)config start:(void (^)(NSInteger dialogId))startCallback textCallback:(void (^)(SBD_StarbaustVoiceChatModel*))textCallBack responseVoice:(void (^)(NSInteger dialogId,NSData*data,BOOL finish, NSInteger sampleRate))voiceCallBack stateChange:(void(^)(StarburstCode code))stateChange finished:(void(^)(NSString *filePath))path; +#pragma mark - voice chat (新:支持自定义 recorder) +- (void)setupPhoneChatWith:(SBD_StarburstVoiceChatConfig*)config + recorder:(id)recorder + start:(void (^)(NSInteger dialogId))startCallback + textCallback:(void (^)(SBD_StarbaustVoiceChatModel *model))textCallBack + responseVoice:(void (^)(NSInteger dialogId, NSData *data, BOOL finish, NSInteger sampleRate))voiceCallBack + stateChange:(void(^)(StarburstCode code))stateChange + finished:(void(^)(NSString *filePath))path; /// 手机拾音,开始对话 /// - Parameter vadType: 0 vad检测,1不启用vad @@ -104,7 +113,7 @@ /// 获取音色列表 /// - Parameter callBack: 结果回调 -- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; +- (void)getVcSpeekerList:(void (^)(NSArray *list,BOOL success))callBack; @end diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToImageCallback.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToImageCallback.h similarity index 96% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToImageCallback.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToImageCallback.h index f5e9bfe..b4686a0 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToImageCallback.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToImageCallback.h @@ -1,5 +1,5 @@ #import -#import +#import "AIGCErrorCode.h" /** * 文本生成图片回调协议 diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToImageManager.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToImageManager.h similarity index 97% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToImageManager.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToImageManager.h index e2c3811..8ccc7d7 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToImageManager.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToImageManager.h @@ -1,5 +1,5 @@ #import -#import +#import "TextToImageCallback.h" NS_ASSUME_NONNULL_BEGIN diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToSpeechCallback.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToSpeechCallback.h similarity index 100% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToSpeechCallback.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToSpeechCallback.h diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToSpeechManager.h b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToSpeechManager.h similarity index 74% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToSpeechManager.h rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToSpeechManager.h index 81ae05c..9d17b63 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Headers/TextToSpeechManager.h +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Headers/TextToSpeechManager.h @@ -1,5 +1,5 @@ #import -#import +#import "TextToSpeechCallback.h" NS_ASSUME_NONNULL_BEGIN @@ -28,14 +28,9 @@ NS_ASSUME_NONNULL_BEGIN * @param reqId 请求唯一标识,用于排查日志或防重复请求 * @param speedRatio 合成语音的语速倍率(1.0 为正常语速,>1.0 为加快,<1.0 为减慢) * @param voiceType 音色类型标识(例如 "zh_female_qingchezizi_moon_bigtts") - * @param encoding 音频编码格式(如 "pcm"、"mp3"、"wav"),可为 nil 使用默认编码 + * @param encoding wav / pcm / ogg_opus / mp3,默认为 pcm * @param callback 回调对象,须实现 TextToSpeechCallback 协议,用于接收结果或错误 * - * @discussion 此方法会向云端发送 TTS 请求,云端返回后通过 callback 通知调用方。 - * 建议: - * - 确保 text 不超过服务端最大长度限制 - * - speedRatio 和 voiceType 需符合云端支持范围 - * - callback 在主线程回调,可直接更新 UI 或播放音频 */ - (void)textToSpeech:(NSString *)companyId text:(NSString *)text diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Info.plist b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Info.plist similarity index 52% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Info.plist rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Info.plist index 5cd3e36..db5ddb8 100644 Binary files a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Info.plist and b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Info.plist differ diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Modules/module.modulemap b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Modules/module.modulemap similarity index 65% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/Modules/module.modulemap rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Modules/module.modulemap index 7426ade..81f8296 100644 --- a/ShenYin/DeepChordsSdk/StarburstSdk.framework/Modules/module.modulemap +++ b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/Modules/module.modulemap @@ -1,6 +1,5 @@ -framework module StarburstSdk { +framework module StarburstSdkDirect { umbrella header "StarburstSdk.h" export * - module * { export * } } diff --git a/ShenYin/DeepChordsSdk/StarburstSdk.framework/PrivacyInfo.xcprivacy b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/PrivacyInfo.xcprivacy similarity index 100% rename from ShenYin/DeepChordsSdk/StarburstSdk.framework/PrivacyInfo.xcprivacy rename to ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/PrivacyInfo.xcprivacy diff --git a/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/StarburstSdkDirect b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/StarburstSdkDirect new file mode 100755 index 0000000..099b4ef Binary files /dev/null and b/ShenYin/DeepChordsSdk/StarburstSdkDirect.xcframework/ios-arm64/StarburstSdkDirect.framework/StarburstSdkDirect differ diff --git a/ShenYin/ShenYin.xcodeproj/project.pbxproj b/ShenYin/ShenYin.xcodeproj/project.pbxproj index 58e8a9c..35a0ffc 100644 --- a/ShenYin/ShenYin.xcodeproj/project.pbxproj +++ b/ShenYin/ShenYin.xcodeproj/project.pbxproj @@ -119,6 +119,13 @@ ); target = 3F887B9B2E38D8DC00C98658 /* ShenYin */; }; + 3FCB2E7F2F6AAE8C007AB47F /* Exceptions for "DeepChordsSdk" folder in "playboy" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + StarburstSdkDirect.xcframework, + ); + target = 3FD1DFE32F0E00BF00A62733 /* playboy */; + }; 3FD1DFF52F0E00BF00A62733 /* Exceptions for "ShenYin" folder in "playboy" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( @@ -152,13 +159,6 @@ ); target = 3FD1DFE32F0E00BF00A62733 /* playboy */; }; - 3FFB77C82F17A14C00EF9A60 /* Exceptions for "DeepChordsSdk" folder in "playboy" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - StarburstSdk.framework, - ); - target = 3FD1DFE32F0E00BF00A62733 /* playboy */; - }; /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ @@ -182,14 +182,24 @@ Channel/PLAYBOY/DcSdk/tool/JLAudioUnitKit.xcframework, ); }; - 3FFB77C62F17A11100EF9A60 /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "DeepChordsSdk" target */ = { + 3FCB2E832F6AAEC8007AB47F /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "DeepChordsSdk" target */ = { isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; attributesByRelativePath = { - StarburstSdk.framework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + StarburstSdkDirect.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; buildPhase = 3FFB77C52F17A11100EF9A60 /* Embed Frameworks */; membershipExceptions = ( - StarburstSdk.framework, + StarburstSdkDirect.xcframework, + ); + }; + 3FCB2E862F6AAEEE007AB47F /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "playboy" target */ = { + isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; + attributesByRelativePath = { + StarburstSdkDirect.xcframework = (CodeSignOnCopy, RemoveHeadersOnCopy, ); + }; + buildPhase = 3FD1DFEF2F0E00BF00A62733 /* Embed Frameworks */; + membershipExceptions = ( + StarburstSdkDirect.xcframework, ); }; /* End PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ @@ -198,8 +208,9 @@ 0D54E0F02F0A61E600A80EE7 /* DeepChordsSdk */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - 3FFB77C62F17A11100EF9A60 /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "DeepChordsSdk" target */, - 3FFB77C82F17A14C00EF9A60 /* Exceptions for "DeepChordsSdk" folder in "playboy" target */, + 3FCB2E832F6AAEC8007AB47F /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "DeepChordsSdk" target */, + 3FCB2E7F2F6AAE8C007AB47F /* Exceptions for "DeepChordsSdk" folder in "playboy" target */, + 3FCB2E862F6AAEEE007AB47F /* Exceptions for "DeepChordsSdk" folder in "Embed Frameworks" phase from "playboy" target */, ); path = DeepChordsSdk; sourceTree = ""; @@ -970,7 +981,7 @@ CODE_SIGN_ENTITLEMENTS = ShenYin/Channel/PLAYBOY/PLAYBOY.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 202603171655; + CURRENT_PROJECT_VERSION = 202603181655; DEVELOPMENT_TEAM = JKLJ58J33Q; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -980,6 +991,7 @@ "$(PROJECT_DIR)/ShenYin/Sdk/Ota", "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk", "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk/tool", + "$(PROJECT_DIR)/ShenYin/Channel/DeepChords/JoySdk/tool", ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = ShenYin/Channel/PLAYBOY/PLAYBOY.plist; @@ -1026,7 +1038,7 @@ CODE_SIGN_ENTITLEMENTS = ShenYin/Channel/PLAYBOY/PLAYBOY.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 202603171655; + CURRENT_PROJECT_VERSION = 202603181655; DEVELOPMENT_TEAM = JKLJ58J33Q; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1036,6 +1048,7 @@ "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk", "$(PROJECT_DIR)/ShenYin/Sdk/JoySdk/tool", "$(PROJECT_DIR)/DeepChordsSdk", + "$(PROJECT_DIR)/ShenYin/Channel/DeepChords/JoySdk/tool", ); GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = ShenYin/Channel/PLAYBOY/PLAYBOY.plist; diff --git a/ShenYin/ShenYin/Cache/UserModel.swift b/ShenYin/ShenYin/Cache/UserModel.swift index cbe75b3..6c7d7e9 100644 --- a/ShenYin/ShenYin/Cache/UserModel.swift +++ b/ShenYin/ShenYin/Cache/UserModel.swift @@ -45,7 +45,6 @@ extension UserModel{ HttpClient.request(CommomApi.token) { [weak self](model:UserInfoRoot,res) in guard let self = self else{return} if model.isSuccess { - self.info = model.data self.info = model.data UserCache.shared.save(self.info) finished?(true) @@ -70,7 +69,7 @@ extension UserModel{ } } func getUserInfo(finished: ((Bool) -> Void)? = nil){ - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { HttpClient.request(CommomApi.getUserInfo) { [weak self](model:UserInfoRoot,res) in guard let self = self else{return} if model.isSuccess{ diff --git a/ShenYin/ShenYin/lan/CCAiSupportLanguage.swift b/ShenYin/ShenYin/Channel/CCAiSupportLanguage.swift similarity index 100% rename from ShenYin/ShenYin/lan/CCAiSupportLanguage.swift rename to ShenYin/ShenYin/Channel/CCAiSupportLanguage.swift diff --git a/ShenYin/ShenYin/Channel/CCCommon.swift b/ShenYin/ShenYin/Channel/CCCommon.swift new file mode 100644 index 0000000..3fdb9ac --- /dev/null +++ b/ShenYin/ShenYin/Channel/CCCommon.swift @@ -0,0 +1,17 @@ +// +// CCCommon.swift +// ShenYin +// +// Created by liangshi on 2026/3/18. +// + +enum CCAppType{ + case deepchords + case playboy + case common +} + +enum CCSdkType{ + case joy + case lianJuXing +} diff --git a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/VC/JoyTabBC.swift b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/VC/JoyTabBC.swift index 11dc999..11873e4 100644 --- a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/VC/JoyTabBC.swift +++ b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/VC/JoyTabBC.swift @@ -47,7 +47,7 @@ class BaseTC:UITabBarController{ let nc4 = BaseNC(rootViewController: mineVC) nc4.tabBarItem = item4 - if CCDevice.showRaisound { + if CCConfig.showRaisoundChat { nc3 = BaseNC(rootViewController: RSChatVC()) nc3.tabBarItem = UITabBarItem(title: "AI".l10n, image: UIImage(named: "tab_2_normal")?.withRenderingMode(.alwaysOriginal), selectedImage: UIImage(named: "tab_2_selected")?.withRenderingMode(.alwaysOriginal)) } @@ -63,10 +63,6 @@ class BaseTC:UITabBarController{ self.tabBar.backgroundColor = .white view.backgroundColor = .color(.bgColor) - - - - // self.selectedIndex = 3 } } diff --git a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCBleManager.swift b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCBleManager.swift index e369255..24f44bf 100644 --- a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCBleManager.swift +++ b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCBleManager.swift @@ -81,7 +81,7 @@ extension CCBleManager:CBCentralManagerDelegate{ //// devices.append(DCPeripheral(device: peripheral,mac: mac)) //// discoverDeviceCallback?(devices) // } - if CCDevice.isJoy{ + if CCConfig.sdkType == .joy{ let mac = JoySdkManager.getMac(advertisementData) ?? "" devices.append(DCPeripheral(device: peripheral,mac: mac)) discoverDeviceCallback?(devices) @@ -97,7 +97,7 @@ extension CCBleManager:CBCentralManagerDelegate{ stopScanDevice() Logger.debug("蓝牙已连接 \(peripheral)") peripheral.delegate = self - if CCDevice.isJoy{ + if CCConfig.sdkType == .joy{ peripheral.discoverServices([CBUUID(string: JoySdkManager.serviceUUID),CBUUID(string: OtaMananger.otaServiceUUId)]); } else{ @@ -113,7 +113,7 @@ extension CCBleManager:CBCentralManagerDelegate{ Logger.debug("蓝牙已断开 \(peripheral)","error \(error)") YLprogressHUD.showAutoHiden("蓝牙已断开".l10n) self.isConnetd = false - if CCDevice.isJoy{ + if CCConfig.sdkType == .joy{ JoySdkManager.shared.bleDisConnected() } else{ @@ -135,7 +135,7 @@ extension CCBleManager: CBPeripheralDelegate { } func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { - if CCDevice.isJoy{ + if CCConfig.sdkType == .joy{ if (service.uuid.uuidString == JoySdkManager.serviceUUID) { JoySdkManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) } @@ -149,9 +149,8 @@ extension CCBleManager: CBPeripheralDelegate { } func peripheral(_ peripheral: CBPeripheral, didUpdateNotificationStateFor characteristic: CBCharacteristic, error: (any Error)?) { - if CCDevice.isJoy{ + if CCConfig.sdkType == .joy{ if (characteristic.isNotifying == true && characteristic.service?.uuid.uuidString == JoySdkManager.serviceUUID && characteristic.uuid.uuidString == JoySdkManager.notifyUUID) { - Logger.debug("特征使能成功") JoySdkManager.shared.bleConnected() } if OtaMananger.isOtadata(characteristic){ @@ -162,7 +161,7 @@ extension CCBleManager: CBPeripheralDelegate { func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { // Logger.debug("收到数据 ===uUId ",characteristic.uuid) - if CCDevice.isJoy{ + if CCConfig.sdkType == .joy{ if OtaMananger.isOtadata(characteristic){ if let _ = characteristic.value,error == nil { OtaMananger.shared.otaManager.peripheral(peripheral, didUpdateValueFor: characteristic) @@ -203,7 +202,7 @@ extension CCBleManager{ // devices.append(DCPeripheral(device: item,mac: mac)) // } // } - if CCDevice.isJoy{ + if CCConfig.sdkType == .joy{ centralManager.scanForPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) } else{ @@ -289,7 +288,7 @@ extension CCBleManager{ } func checkSettingsConnected()->[CBPeripheral]{ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)]) Logger.debug("已连接设备",list) return list diff --git a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCConfig.swift b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCConfig.swift index 50c2c00..c61e26d 100644 --- a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCConfig.swift +++ b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCConfig.swift @@ -6,10 +6,20 @@ // class CCConfig{ + /// app类型 + static let appType = CCAppType.deepchords + /// sdk类型 + static let sdkType = CCSdkType.joy + /// 是否显示北科AI + static var showRaisoundChat = false + + /// app语言 static var appLanguage = AppSupportLanguage.english - + /// 微信id static let wxAppID = "wxd9d677e0024caa90" + // 通用链接 static let wxUniversalLink = "https://dc-cloud-pub.tos-cn-guangzhou.volces.com/app/" + /// appstore地址 static let appStoreLink = "https://itunes.apple.com/cn/app/6752551504?mt=8" /// 版本检测 static let appStoreVersionURL = "https://itunes.apple.com/cn/lookup?id=6752551504" @@ -22,4 +32,13 @@ class CCConfig{ /// 用户隐私协议地址 static let yonghuBaseURL = "https://pub-tos.deepchords.com" + + + + + + + + + static let revokeText = "请您确保您是有权进行本撤回同意隐私政策操作的相关当事人。撤回同意隐私政策,您将放弃以下资产或者权益:\n\n1.数据清空\n将会停止收集您的个人信息。您使用DeepChords应用过程中产生的数据将被清空;手机中DeepChords应用的缓存数据将被清除。\n\n2.设备解除绑定\nDeepChords账号中,所有设备会与您当前登录的账号解除绑定,并清除设备之前存储在服务器的数据。存储在物理设备中的数据请通过人工本地物理重置来清除。如果您需要重新使用设备,需要您再次进行绑定并且重新授权。\n\n3.其他\n此举还将撤回您对用户协议的同意,并退出DeepChords应用。\n\n请您知悉,撤回同意隐私政策不代表撤回同意前的相关行为和责任得到豁免或减轻。若您需要重新在该账号管理设备,需要您重新授权并绑定。请谨慎操作!" } diff --git a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCDevice.swift b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCDevice.swift index b126b36..8cb2d3d 100644 --- a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCDevice.swift +++ b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCDevice.swift @@ -6,10 +6,8 @@ // import JoyGemAI class CCDevice{ - static var isJoy = true - static var showRaisound = false static func initSdk(){ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { JoySdkManager.shared.setupSdk() } else{ @@ -17,7 +15,7 @@ class CCDevice{ } } static func translate(text:String,from:String,to:String,finished:@escaping ((stream:String,finish:Bool)?)->Void){ - if isJoy { + if CCConfig.sdkType == .joy { JoyGemAIManager.shared().cancelTranslateRequest() JoyGemAIManager.shared().translate(text, from: from, to: to) { result, finish in finished((result,finish)) @@ -33,7 +31,7 @@ class CCDevice{ } } static func summary(text:String,finished:@escaping ((stream:String,finish:Bool)?)->Void){ - if isJoy { + if CCConfig.sdkType == .joy { JoyGemAIManager.shared().cancelSummaryRequest() JoyGemAIManager.shared().summary(text) { text, finish in finished((text,finish)) @@ -51,7 +49,7 @@ class CCDevice{ } extension CCDevice{ static func findHeadphone(_ mode:FindType){ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { var value:JoyGemFindHeadphoneMode = .all switch mode { case .left: @@ -74,7 +72,7 @@ extension CCDevice{ } } static func getEQMode(finished:@escaping (ModeEffectsType?)->Void){ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { JoyGemAIManager.shared().device.getEQMode { mode in var value:ModeEffectsType = .normal switch mode { @@ -129,7 +127,7 @@ extension CCDevice{ } } static func setEQMode(_ type:ModeEffectsType){ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { var value:JoyGemEQMode = .normal switch type { case .normal: @@ -159,7 +157,7 @@ extension CCDevice{ static func getCustomEQ(finished:@escaping ([NSNumber]?)->Void){ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { JoyGemAIManager.shared().device.getCustomEQ { eq in Logger.debug("getCustomEQ:\(eq)"); finished(eq.bands) @@ -185,7 +183,7 @@ extension CCDevice{ } } static func resetCustomEQ(){ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { JoyGemAIManager.shared().device.resetCustomEQ { err in Logger.debug("resetCustomEQ:\(err)"); } @@ -208,7 +206,7 @@ extension CCDevice{ } } static func setCustomEQ(index:Int,value:Int){ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { JoyGemAIManager.shared().device.setCustomEQ(UInt(index), withGain: value) { err in Logger.debug("setCustomEQ:\(err)"); } @@ -237,7 +235,7 @@ extension CCDevice{ // } // } static func getDN(finished:@escaping ((_ mac:String?)->Void)) { - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { JoyGemAIManager.shared().device.getDN { deviceName in finished(deviceName) } error: { error in @@ -251,7 +249,7 @@ extension CCDevice{ } } static func getVersion(finished:@escaping ((_ version:String?)->Void)) { - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { JoyGemAIManager.shared().device.software { version in finished(version) } error: { error in diff --git a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCPage.swift b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCPage.swift index 093d98c..976c189 100644 --- a/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCPage.swift +++ b/ShenYin/ShenYin/Channel/DeepChords/JoySdk/tool/CCPage.swift @@ -8,7 +8,7 @@ class CCPage{ static func gotoChat(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { App.shared.goToPage(JoyChatVC()) } else{ @@ -17,7 +17,7 @@ class CCPage{ } static func gotoFieldRecord(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { App.shared.goToPage(JoyXclyVC()) } else{ @@ -26,7 +26,7 @@ class CCPage{ } static func gotoCallRecord(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { if JoySdkManager.shared.callRecord.supportStereo{ App.shared.goToPage(JoyStereoCallVC()) } @@ -40,7 +40,7 @@ class CCPage{ } static func gotoChinese2Enlgish(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { App.shared.goToPage(JoyChinese2EnglishVC()) } else{ @@ -49,7 +49,7 @@ class CCPage{ } static func gotoTcty(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { App.shared.goToPage(JoyTctyVC()) } else{ @@ -58,7 +58,7 @@ class CCPage{ } static func gotoDialogTranslate(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { + if CCConfig.sdkType == .joy { App.shared.goToPage(JoyDialogTranslateVC()) } else{ @@ -66,7 +66,7 @@ class CCPage{ } } static func gotoSubTitle(){ - if CCDevice.isJoy { + if CCConfig.sdkType == .joy{ if #available(iOS 15.0, *) { App.shared.goToPage(JoySubTitleVC()) } else { diff --git a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbAiFunctionVC.swift b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbAiFunctionVC.swift index b1e74f2..a296008 100644 --- a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbAiFunctionVC.swift +++ b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbAiFunctionVC.swift @@ -27,7 +27,7 @@ class PbAiFunctionVC:BaseVC{ override func setupViews() { navBar.title = device.productName navBar.backgroundColor = .color(.bgColor) -// navBar.rightView.isHidden = false + navBar.rightView.isHidden = false navBar.rightView.setTitle("字幕翻译", for: .normal) view.backgroundColor = .color(.bgColor) // navBar.rightView.setImage(UIImage(named: "add_icon"), for: .normal) diff --git a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbChatVC.swift b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbChatVC.swift index 83ed885..4c4a4bc 100644 --- a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbChatVC.swift +++ b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbChatVC.swift @@ -144,8 +144,17 @@ class PbChatVC:BaseVC{ DcChatManager.shared.getVcSpeekerList {[weak self] speakers in guard let self = self,let speakers = speakers,speakers.count > 0 else{return} self.roleList = speakers.map{CCRole(sid: $0.sid, name: $0.name, type: $0.type, role: $0.role)} - if CCDevice.isJoy{ - self.roleList.insert( CCRole.xiaoYin, at: 0) + + var xiaotu:CCRole? + for (index,value) in self.roleList.enumerated(){ + if value.role == "playboy_xiaotu" { + xiaotu = value + self.roleList.remove(at: index) + break + } + } + if let item = xiaotu{ + self.roleList.insert(item, at: 0) } diff --git a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbModeVC.swift b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbModeVC.swift index 22b9406..819fe7d 100644 --- a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbModeVC.swift +++ b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbModeVC.swift @@ -99,7 +99,7 @@ extension ModeVC{ } @objc func findAction(){ if CCBleManager.shared.isConnetd { - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ App.shared.goToPage(FindVC()) } else{ diff --git a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbTctyVC.swift b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbTctyVC.swift index ec36aeb..ab88b37 100644 --- a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbTctyVC.swift +++ b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/VC/PbTctyVC.swift @@ -39,7 +39,7 @@ class PbTctyVC:BaseVC{ translateTextView.do { v in v.textView.textColor = .color(.level1) v.placeHolde = "此处将显示译文".l10n - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ v.bgView.yc.addgradientLayer(colors: [.color(.theme),.color(.bgColor)], direction: .top2down,rect: CGRect(x: 0, y: 0, width: kScreenWid, height: (kScreenHei - kNavBtm - 120 - 10)/2)) v.bgView.alpha = 0.1 } diff --git a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCBleManager.swift b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCBleManager.swift index ab99e56..0ded3de 100644 --- a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCBleManager.swift +++ b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCBleManager.swift @@ -62,7 +62,6 @@ extension CCBleManager:CBCentralManagerDelegate{ @unknown default: break } - OtaMananger.shared.otaManager.centralManagerDidUpdateState(central) } func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) { @@ -75,34 +74,14 @@ extension CCBleManager:CBCentralManagerDelegate{ devices.append(DCPeripheral(device: peripheral,mac: mac)) discoverDeviceCallback?(devices) } - else{ -// let mac = JoySdkManager.getMac(advertisementData) ?? "" -// devices.append(DCPeripheral(device: peripheral,mac: mac)) -// discoverDeviceCallback?(devices) - } -// if CCDevice.isJoy{ -// let mac = JoySdkManager.getMac(advertisementData) ?? "" -// devices.append(DCPeripheral(device: peripheral,mac: mac)) -// discoverDeviceCallback?(devices) -// } -// else{ -// let mac = DcSdkManager.getMac(advertisementData) ?? "" -// devices.append(DCPeripheral(device: peripheral,mac: mac)) -// discoverDeviceCallback?(devices) -// } } func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) { stopScanDevice() Logger.debug("蓝牙已连接 \(peripheral)") peripheral.delegate = self - if CCDevice.isJoy{ -// peripheral.discoverServices([CBUUID(string: JoySdkManager.serviceUUID),CBUUID(string: OtaMananger.otaServiceUUId)]); - } - else{ DCBleManager.shared.centralManager(central, didConnect: peripheral) - peripheral.discoverServices([CBUUID(string: DCBleManager.serviceUUID),CBUUID(string: OtaMananger.otaServiceUUId)]); - } + peripheral.discoverServices([CBUUID(string: DCBleManager.serviceUUID)]); } func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) { Logger.debug("peripheral: %@ failed to connect", peripheral) @@ -112,14 +91,8 @@ extension CCBleManager:CBCentralManagerDelegate{ Logger.debug("蓝牙已断开 \(peripheral)",error?.localizedDescription ?? "",error.debugDescription) YLprogressHUD.showAutoHiden("蓝牙已断开".l10n) self.isConnetd = false - if CCDevice.isJoy{ - - } - else{ - DCBleManager.shared.centralManager(central, didDisconnectPeripheral: peripheral, error: nil) - } + DCBleManager.shared.centralManager(central, didDisconnectPeripheral: peripheral, error: nil) NotificationManager.post(type: .deviceValidChange, objtect: nil) - OtaMananger.shared.otaManager.centralManager(central, didDisconnectPeripheral: peripheral, error: error) checkConectState() } } @@ -134,50 +107,15 @@ extension CCBleManager: CBPeripheralDelegate { } func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { - if CCDevice.isJoy{ -// if (service.uuid.uuidString == JoySdkManager.serviceUUID) { -// JoySdkManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) -// } -// else if service.uuid.uuidString == OtaMananger.otaServiceUUId{ -// OtaMananger.shared.otaManager.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) -// } - } - else{ - DCBleManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) - } + DCBleManager.shared.peripheral(peripheral, didDiscoverCharacteristicsFor: service, error: error) } func peripheral(_ peripheral: CBPeripheral, didUpdateNotificationStateFor characteristic: CBCharacteristic, error: (any Error)?) { - if CCDevice.isJoy{ -// if (characteristic.isNotifying == true && characteristic.service?.uuid.uuidString == JoySdkManager.serviceUUID && characteristic.uuid.uuidString == JoySdkManager.notifyUUID) { -// Logger.debug("特征使能成功") -// JoySdkManager.shared.bleConnected() -// } -// if OtaMananger.isOtadata(characteristic){ -// OtaMananger.shared.otaManager.peripheral(peripheral, didUpdateNotificationStateFor: characteristic, error: error) -// } - } } func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { - // Logger.debug("收到数据 ===uUId ",characteristic.uuid) - if CCDevice.isJoy{ -// if OtaMananger.isOtadata(characteristic){ -// if let _ = characteristic.value,error == nil { -// OtaMananger.shared.otaManager.peripheral(peripheral, didUpdateValueFor: characteristic) -// } -// else{ -// Logger.debug("ota 收到数据 ===\(characteristic.uuid)","无数据") -// } -// } -// else { -// //MARK: 需要配置传入数据 -// JoySdkManager.shared.receiveValue(characteristic) -// } - } - else{ + //Logger.debug("收到数据 ===uUId ",characteristic.uuid) DCBleManager.shared.peripheral(peripheral, didUpdateValueFor: characteristic, error: error) - } } func peripheral(_ peripheral: CBPeripheral, didModifyServices invalidatedServices: [CBService]) { @@ -202,12 +140,7 @@ extension CCBleManager{ // devices.append(DCPeripheral(device: item,mac: mac)) // } // } - if CCDevice.isJoy{ -// centralManager.scanForPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) - } - else{ - centralManager.scanForPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) - } + centralManager.scanForPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)],options: [CBCentralManagerScanOptionAllowDuplicatesKey : false]) discoverDeviceCallback?(devices) } @@ -217,12 +150,6 @@ extension CCBleManager{ func connectPeripheral(_ peripheral: DCPeripheral) { connectPeripheral = peripheral -// if let name = peripheral.device.name,name.hasPrefix("AI") { -// CCDevice.isJoy = false -// } -// else{ -// CCDevice.isJoy = true -// } CCDevice.initSdk() Logger.debug(peripheral.device.name ?? "","连接中...") centralManager.connect(peripheral.device, options: [CBConnectPeripheralOptionEnableTransportBridgingKey:true]) @@ -288,17 +215,9 @@ extension CCBleManager{ } func checkSettingsConnected()->[CBPeripheral]{ - if CCDevice.isJoy { -// let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: JoySdkManager.serviceUUID)]) -// Logger.debug("已连接设备",list) -// return list - return [] - } - else{ let list = centralManager.retrieveConnectedPeripherals(withServices: [CBUUID(string: DCBleManager.serviceUUID)]) Logger.debug("已连接设备",list) return list - } } } diff --git a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCConfig.swift b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCConfig.swift index 7feb772..6f27dce 100644 --- a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCConfig.swift +++ b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCConfig.swift @@ -3,39 +3,42 @@ // ShenYin // // Created by liangshi on 2026/1/28. -// -//class CCConfig{ -// static var appLanguage = AppSupportLanguage.english -// -// static let wxAppID = "wxeb3291e720293abc" -// static let wxUniversalLink = "https://www.playboykq.com/app/" -// static let appStoreLink = "https://itunes.apple.com/cn/app/6757697090?mt=8" -// /// 版本检测 -// static let appStoreVersionURL = "https://itunes.apple.com/cn/lookup?id=6757697090" -// -// /// 服务器地址 -// static let baseURL = "https://app-api.deepchords.com" -// -// /// 用户隐私协议地址 -// static let yonghuBaseURL = "https://pub-cdn.playboykq.com" -// -//} class CCConfig{ + /// app类型 + static let appType = CCAppType.playboy + /// sdk类型 + static let sdkType = CCSdkType.lianJuXing + /// app语言 static var appLanguage = AppSupportLanguage.english - + /// 微信id static let wxAppID = "wxeb3291e720293abc" + /// 通用链接 static let wxUniversalLink = "https://www.playboykq.com/app/" + /// appstore地址 static let appStoreLink = "https://itunes.apple.com/cn/app/6757697090?mt=8" /// 版本检测 static let appStoreVersionURL = "https://itunes.apple.com/cn/lookup?id=6757697090" - /// 服务器地址 static let baseURL = "https://app-api.playboykq.com" - + /// 服务器地址 +// static let baseURL = "https://app-api.deepchords.com"" /// 用户隐私协议地址 static let yonghuBaseURL = "https://pub-cdn.playboykq.com" + + + + + + + + + + + + + static let revokeText = "请您确保您是有权进行本撤回同意隐私政策操作的相关当事人。撤回同意隐私政策,您将放弃以下资产或者权益:\n\n1.数据清空\n将会停止收集您的个人信息。您使用PLAYBOY应用过程中产生的数据将被清空;手机中PLAYBOY应用的缓存数据将被清除。\n\n2.设备解除绑定\nPLAYBOY账号中,所有设备会与您当前登录的账号解除绑定,并清除设备之前存储在服务器的数据。存储在物理设备中的数据请通过人工本地物理重置来清除。如果您需要重新使用设备,需要您再次进行绑定并且重新授权。\n\n3.其他\n此举还将撤回您对用户协议的同意,并退出PLAYBOY应用。\n\n请您知悉,撤回同意隐私政策不代表撤回同意前的相关行为和责任得到豁免或减轻。若您需要重新在该账号管理设备,需要您重新授权并绑定。请谨慎操作!" } diff --git a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCDevice.swift b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCDevice.swift index 83e27c9..686b126 100644 --- a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCDevice.swift +++ b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCDevice.swift @@ -7,169 +7,67 @@ //import JoyGemAI import DeepChordsSdk class CCDevice{ - static var isJoy = false - static var showRaisound = false static func initSdk(){ - if CCDevice.isJoy { -// JoySdkManager.shared.setupSdk() - } - else{ - DcSdkManager.shared.initSdk() - } + DcSdkManager.shared.initSdk() } static func translate(text:String,from:String,to:String,finished:@escaping ((stream:String,finish:Bool)?)->Void){ - if isJoy { -// JoyGemAIManager.shared().cancelTranslateRequest() -// JoyGemAIManager.shared().translate(text, from: from, to: to) { result, finish in -// finished((result,finish)) -// } error: { error in -// finished(nil) -// } - } - else{ DCText.cancelTranslateByTextWithSplit() DCText.translate(text: text, from: from, to: to) { result in finished(result) } - } } static func summary(text:String,finished:@escaping ((stream:String,finish:Bool)?)->Void){ - if isJoy { -// JoyGemAIManager.shared().cancelSummaryRequest() -// JoyGemAIManager.shared().summary(text) { text, finish in -// finished((text,finish)) -// } error: { error in -// finished(nil) -// } - } - else{ DCText.cancelSummaryByTextWithSplit() DCText.sumary(text: text) { result in finished(result) } - } } } extension CCDevice{ static func findHeadphone(_ mode:FindType){ - if CCDevice.isJoy { -// var value:JoyGemFindHeadphoneMode = .all -// switch mode { -// case .left: -// value = .left -// case .right: -// value = .right -// case .cancel: -// value = .cancel -// case .all: -// value = .all -// } -// JoyGemAIManager.shared().device.findHeadphone(value) { err in -// Logger.debug("findHeadphone:\(err)"); -// } - } - else{ let value:UInt8 = mode == .cancel ? 0:1 DCDevice.shared.findDevice(state: value) { result in } - } } static func getEQMode(finished:@escaping (ModeEffectsType?)->Void){ - if CCDevice.isJoy { -// JoyGemAIManager.shared().device.getEQMode { mode in -// var value:ModeEffectsType = .normal -// switch mode { -// case .normal: -// value = .normal -// case .pop: -// value = .pop -// case .classic: -// value = .classic -// case .rock: -// value = .rock -// case .jazz: -// value = .jazz -// case .custom: -// value = .custom -// } -// finished(value) -// } error: { err in -// Logger.debug("getEQMode:\(err)"); -// finished(nil) -// } - } - else{ - /// type, 0x00(正常模式) - // 0x01(流行) - // 0x02(经典) - // 0x03(爵士) - // 0x04(摇滚) - // 0x05(自定义) - DCDevice.shared.getEQ { (arg0,result) in - guard let (type,list) = arg0 else{ - finished(nil) - return - } - switch type{ - case 0: - finished(.normal) - case 1: - finished(.pop) - case 2: - finished(.classic) - case 3: - finished(.jazz) - case 4: - finished(.rock) - case 5: - finished(.custom) - default: - finished(nil) - } + /// type, 0x00(正常模式) + // 0x01(流行) + // 0x02(经典) + // 0x03(爵士) + // 0x04(摇滚) + // 0x05(自定义) + DCDevice.shared.getEQ { (arg0,result) in + guard let (type,list) = arg0 else{ + finished(nil) + return + } + switch type{ + case 0: + finished(.normal) + case 1: + finished(.pop) + case 2: + finished(.classic) + case 3: + finished(.jazz) + case 4: + finished(.rock) + case 5: + finished(.custom) + default: + finished(nil) } } } static func setEQMode(_ type:ModeEffectsType){ - if CCDevice.isJoy { -// var value:JoyGemEQMode = .normal -// switch type { -// case .normal: -// value = .normal -// case .pop: -// value = .pop -// case .classic: -// value = .classic -// case .rock: -// value = .rock -// case .jazz: -// value = .jazz -// case .custom: -// value = .custom -// } -// -// JoyGemAIManager.shared().device.setEQMode(value) { err in -// Logger.debug("setEQMode:\(err)"); -// } - }else{ let value:UInt8 = UInt8(type.rawValue) DCDevice.shared.setEQ(type: value) { success in } - } } static func getCustomEQ(finished:@escaping ([NSNumber]?)->Void){ - if CCDevice.isJoy { -// JoyGemAIManager.shared().device.getCustomEQ { eq in -// Logger.debug("getCustomEQ:\(eq)"); -// finished(eq.bands) -// } error: { err in -// Logger.debug("getCustomEQ:\(err)"); -// finished(nil) -// } - } - else{ DCDevice.shared.getEQ { (arg0,result) in guard let (type,list) = arg0 else{ finished(nil) @@ -183,15 +81,8 @@ extension CCDevice{ finished(nil) } } - } } static func resetCustomEQ(){ - if CCDevice.isJoy { -// JoyGemAIManager.shared().device.resetCustomEQ { err in -// Logger.debug("resetCustomEQ:\(err)"); -// } - } - else{ let list = [ 0,0,0,0,0,0,0,0,0,0,0,0 ] @@ -206,64 +97,20 @@ extension CCDevice{ DCDevice.shared.setEQ(type: 0x05) {result in } } - } } static func setCustomEQ(index:Int,value:Int){ - if CCDevice.isJoy { -// JoyGemAIManager.shared().device.setCustomEQ(UInt(index), withGain: value) { err in -// Logger.debug("setCustomEQ:\(err)"); -// } - } - else{ DCDevice.shared.setCustomEQ(index: UInt8(index), value: value) {result in } - } } } extension CCDevice{ -// static func getMac(finished:@escaping ((_ mac:String?)->Void)) { -// if CCDevice.isJoy { -// JoyGemAIManager.shared().device.macAddress { edr, ble in -// Logger.debug("edr:\(edr),ble:\(ble)"); -// finished(edr.uppercased()) -// } error: { error in -// Logger.debug("\(error!.localizedDescription)") -// finished(nil) -// } -// } -// else{ -//// DCDevice.shared.getSoftVersion {result in -//// finished(result) -//// } -// } -// } static func getDN(finished:@escaping ((_ mac:String?)->Void)) { - if CCDevice.isJoy { -// JoyGemAIManager.shared().device.getDN { deviceName in -// finished(deviceName) -// } error: { error in -// Logger.debug("获取dn失败","\(error!.localizedDescription)") -// finished(nil) -// } - } - else{ let dn = DCText.getDeviceName() finished(dn) - } } static func getVersion(finished:@escaping ((_ version:String?)->Void)) { - if CCDevice.isJoy { -// JoyGemAIManager.shared().device.software { version in -// finished(version) -// } error: { error in -// Logger.debug("\(error!.localizedDescription)"); -// finished(nil) -// } - } - else{ DCDevice.shared.getSoftVersion {result in finished(result) } - } } } diff --git a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCPage.swift b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCPage.swift index 606ba03..09f013b 100644 --- a/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCPage.swift +++ b/ShenYin/ShenYin/Channel/PLAYBOY/DcSdk/tool/CCPage.swift @@ -8,78 +8,33 @@ class CCPage{ static func gotoChat(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { -// App.shared.goToPage(JoyChatVC()) - } - else{ - App.shared.goToPage(PbChatVC()) - } + App.shared.goToPage(PbChatVC()) } static func gotoFieldRecord(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { -// App.shared.goToPage(JoyXclyVC()) - } - else{ - App.shared.goToPage(PbXclyVC()) - } + App.shared.goToPage(PbXclyVC()) } static func gotoCallRecord(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { -// if JoySdkManager.shared.callRecord.supportStereo{ -// App.shared.goToPage(JoyStereoCallVC()) -// } -// else{ -// App.shared.goToPage(JoyCallingRecordVC()) -// } - } - else{ -// if JoySdkManager.shared.callRecord.supportStereo{ - App.shared.goToPage(PbStereoCallVC()) -// } -// else{ -// App.shared.goToPage(JoyCallingRecordVC()) -// } - } + App.shared.goToPage(PbStereoCallVC()) } static func gotoChinese2Enlgish(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { -// App.shared.goToPage(JoyChinese2EnglishVC()) - } - else{ - App.shared.goToPage(PbChinese2EnglishVC()) - } + App.shared.goToPage(PbChinese2EnglishVC()) } static func gotoTcty(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { -// App.shared.goToPage(JoyTctyVC()) - } - else{ - App.shared.goToPage(PbTctyVC()) - } + App.shared.goToPage(PbTctyVC()) } static func gotoDialogTranslate(){ AudioPlayView.shared.closeAction() - if CCDevice.isJoy { -// App.shared.goToPage(JoyDialogTranslateVC()) - } - else{ - App.shared.goToPage(PbDialogTranslateVC()) - } + App.shared.goToPage(PbDialogTranslateVC()) } static func gotoSubTitle(){ - if CCDevice.isJoy { - // App.shared.goToPage(JoyDialogTranslateVC()) - } - else{ - if #available(iOS 15.0, *) { - App.shared.goToPage(PbSubTitleVC()) - } else { - // Fallback on earlier versions - } + if #available(iOS 15.0, *) { + App.shared.goToPage(PbSubTitleVC()) + } else { + // Fallback on earlier versions } } } diff --git a/ShenYin/ShenYin/Resource/colors/Colors+YL.swift b/ShenYin/ShenYin/Resource/colors/Colors+YL.swift index 463c033..2050663 100644 --- a/ShenYin/ShenYin/Resource/colors/Colors+YL.swift +++ b/ShenYin/ShenYin/Resource/colors/Colors+YL.swift @@ -32,7 +32,7 @@ public enum YLColor { extension YLColor: ColorRGBProviderProtocol { public var rgbValue: Int { - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { switch self { case .bgColor: return 0xF7F7F7 diff --git a/ShenYin/ShenYin/UI/Base/BaseVC.swift b/ShenYin/ShenYin/UI/Base/BaseVC.swift index 326e7d8..db53fd8 100644 --- a/ShenYin/ShenYin/UI/Base/BaseVC.swift +++ b/ShenYin/ShenYin/UI/Base/BaseVC.swift @@ -65,7 +65,7 @@ open class BaseVC:UIViewController { KingfisherManager.shared.cache.clearMemoryCache() } open override var preferredStatusBarStyle: UIStatusBarStyle { - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ return .darkContent } else{ diff --git a/ShenYin/ShenYin/UI/Customer/CustomerCell.swift b/ShenYin/ShenYin/UI/Customer/CustomerCell.swift index f614608..dbbfdf2 100644 --- a/ShenYin/ShenYin/UI/Customer/CustomerCell.swift +++ b/ShenYin/ShenYin/UI/Customer/CustomerCell.swift @@ -71,7 +71,7 @@ class CustomerCell:BaseTableViewCell{ didSet{ originalLabel.text = data.content if data.isSend { - bgView.backgroundColor = CCDevice.isJoy ? .color(.theme) : UIColor.color(.cellBg) + bgView.backgroundColor = CCConfig.appType == .deepchords ? .color(.theme) : UIColor.color(.cellBg) originalLabel.textColor = .white icon.snp.remakeConstraints { make in @@ -88,7 +88,7 @@ class CustomerCell:BaseTableViewCell{ else{ bgView.backgroundColor = .color(.cellBg) originalLabel.textColor = .color(.level1) - icon.image = CCDevice.isJoy ? UIImage(named: "logo_2"):UIImage(named: "logo_4") + icon.image = CCConfig.appType == .deepchords ? UIImage(named: "logo_2"):UIImage(named: "logo_4") icon.snp.remakeConstraints { make in make.size.equalTo(36) make.top.equalToSuperview().inset(16) diff --git a/ShenYin/ShenYin/UI/Home/Chat/CCRole.swift b/ShenYin/ShenYin/UI/Home/Chat/CCRole.swift index e03c7cb..9aff9ba 100644 --- a/ShenYin/ShenYin/UI/Home/Chat/CCRole.swift +++ b/ShenYin/ShenYin/UI/Home/Chat/CCRole.swift @@ -26,7 +26,7 @@ public class CCRole{ } static var xiaoYin:CCRole{ - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { let model = CCRole() model.sid = "zh_female_tianmeitaozi_mars_bigtts" model.name = "小音" diff --git a/ShenYin/ShenYin/UI/Home/Dialog/DialogRecordBar.swift b/ShenYin/ShenYin/UI/Home/Dialog/DialogRecordBar.swift index 4808b10..0e239a8 100644 --- a/ShenYin/ShenYin/UI/Home/Dialog/DialogRecordBar.swift +++ b/ShenYin/ShenYin/UI/Home/Dialog/DialogRecordBar.swift @@ -271,7 +271,7 @@ class DialogRecordBar: BaseView { v.language = CCAiLanguage.chinse v.yc.addTap(target: self, action: #selector(leftLanguageAction)) v.language = .chinse - v.valueLabel.text = CCDevice.isJoy ? "耳机".l10n:"眼镜".l10n + v.valueLabel.text = CCConfig.appType == .deepchords ? "耳机".l10n:"眼镜".l10n } rightItem.do { (v) in v.language = CCAiLanguage.english diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift index 3e2724b..0242767 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/RecordBar.swift @@ -174,7 +174,7 @@ class RecordBar: BaseView { valueLabel.do { v in v.textColor = .color(.level2) v.font = .regular(10) - v.text = CCDevice.isJoy ? "耳机".l10n:"眼镜".l10n + v.text = CCConfig.appType == .deepchords ? "耳机".l10n:"眼镜".l10n } } diff --git a/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift b/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift index b93e4b8..41ab444 100644 --- a/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift +++ b/ShenYin/ShenYin/UI/Home/FieldRecording/RhythView.swift @@ -19,7 +19,7 @@ class RhythView: BaseView { } stopWave.image = UIImage(named: "audio_record_normal") - startWave.kf.setImage(with: Bundle.main.url(forResource: CCDevice.isJoy ? "record_start_joy":"record_start", withExtension: "gif")!) + startWave.kf.setImage(with: Bundle.main.url(forResource: CCConfig.appType == .deepchords ? "record_start_joy":"record_start", withExtension: "gif")!) startWave.isHidden = true } override func setupLayout() { diff --git a/ShenYin/ShenYin/UI/Home/HistoryRecord/VC/CalendarPickerVC.swift b/ShenYin/ShenYin/UI/Home/HistoryRecord/VC/CalendarPickerVC.swift index a3785d4..9ecec14 100644 --- a/ShenYin/ShenYin/UI/Home/HistoryRecord/VC/CalendarPickerVC.swift +++ b/ShenYin/ShenYin/UI/Home/HistoryRecord/VC/CalendarPickerVC.swift @@ -158,7 +158,7 @@ class CalendarPickerVC: BaseVC { invariantViewProperties.textColor = .color(.level2) } if let date = date,date > Date(){ - invariantViewProperties.textColor = CCDevice.isJoy ? .color(.placeholder):.rgb(0x333333) + invariantViewProperties.textColor = CCConfig.appType == .deepchords ? .color(.placeholder):.rgb(0x333333) } diff --git a/ShenYin/ShenYin/UI/Home/Root/CurrentDeviceView.swift b/ShenYin/ShenYin/UI/Home/Root/CurrentDeviceView.swift index 382ff53..24e302e 100644 --- a/ShenYin/ShenYin/UI/Home/Root/CurrentDeviceView.swift +++ b/ShenYin/ShenYin/UI/Home/Root/CurrentDeviceView.swift @@ -24,7 +24,7 @@ class CurrentDeviceView: BaseView { } override func setupLayout() { - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { imageView.snp.makeConstraints { make in make.width.equalTo(168) make.height.equalTo(138) diff --git a/ShenYin/ShenYin/UI/Home/Scan/BleScanVC.swift b/ShenYin/ShenYin/UI/Home/Scan/BleScanVC.swift index 24ff86b..11ff449 100644 --- a/ShenYin/ShenYin/UI/Home/Scan/BleScanVC.swift +++ b/ShenYin/ShenYin/UI/Home/Scan/BleScanVC.swift @@ -117,7 +117,7 @@ class BleScanHeaderView: BaseView { var radarImageView = UIImageView() override func setupViews() { - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { addSubviews([rippleView,radarImageView]) rippleView.startAnimating() diff --git a/ShenYin/ShenYin/UI/Home/Scan/DeviceVM.swift b/ShenYin/ShenYin/UI/Home/Scan/DeviceVM.swift index e1e5a99..56cc5e5 100644 --- a/ShenYin/ShenYin/UI/Home/Scan/DeviceVM.swift +++ b/ShenYin/ShenYin/UI/Home/Scan/DeviceVM.swift @@ -174,13 +174,13 @@ extension DeviceVM{ UIApplication.shared.open(url) { (success) in // 提示用户是否成功打开了设置 if success { - print("成功跳转到蓝牙设置") + Logger.debug("成功跳转到蓝牙设置") } else { - print("跳转失败") + Logger.debug("跳转到设置失败") } } } else { - print("链接不可用") + Logger.debug("链接不可用") } } } diff --git a/ShenYin/ShenYin/UI/Launch/AppManager.swift b/ShenYin/ShenYin/UI/Launch/AppManager.swift index acf6b63..99da4a1 100644 --- a/ShenYin/ShenYin/UI/Launch/AppManager.swift +++ b/ShenYin/ShenYin/UI/Launch/AppManager.swift @@ -33,7 +33,7 @@ class App{ self.window?.rootViewController = BaseTC() } func goToLogin(){ - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ window?.rootViewController = BaseNC(rootViewController: LoginVC()) } else{ diff --git a/ShenYin/ShenYin/UI/Login/Controller/ForgetVC.swift b/ShenYin/ShenYin/UI/Login/Controller/ForgetVC.swift index 27be12a..213499f 100644 --- a/ShenYin/ShenYin/UI/Login/Controller/ForgetVC.swift +++ b/ShenYin/ShenYin/UI/Login/Controller/ForgetVC.swift @@ -61,7 +61,7 @@ class ForgetVC:BaseVC{ } override func setupLayout(){ logoImg.snp.makeConstraints { make in - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ make.left.equalToSuperview().inset(28) make.top.equalTo(kNavBtm + 20) make.centerX.equalToSuperview() @@ -75,7 +75,7 @@ class ForgetVC:BaseVC{ } bgView.snp.makeConstraints { make in make.left.right.equalToSuperview() - make.top.equalToSuperview().inset(CCDevice.isJoy ? 244:180) + make.top.equalToSuperview().inset(CCConfig.appType == .deepchords ? 244:180) make.bottom.equalToSuperview() } diff --git a/ShenYin/ShenYin/UI/Login/Controller/LoginVC.swift b/ShenYin/ShenYin/UI/Login/Controller/LoginVC.swift index 155b0dd..6ddc35a 100644 --- a/ShenYin/ShenYin/UI/Login/Controller/LoginVC.swift +++ b/ShenYin/ShenYin/UI/Login/Controller/LoginVC.swift @@ -48,7 +48,7 @@ class LoginVC:BaseVC{ } override func setupLayout(){ logoImg.snp.makeConstraints { make in - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ make.left.equalToSuperview().inset(28) make.top.equalTo(kNavBtm + 20) make.centerX.equalToSuperview() diff --git a/ShenYin/ShenYin/UI/Login/Controller/RegisterVC.swift b/ShenYin/ShenYin/UI/Login/Controller/RegisterVC.swift index 05abbeb..c26e3ca 100644 --- a/ShenYin/ShenYin/UI/Login/Controller/RegisterVC.swift +++ b/ShenYin/ShenYin/UI/Login/Controller/RegisterVC.swift @@ -56,7 +56,7 @@ class RegisterVC:BaseVC{ } override func setupLayout(){ logoImg.snp.makeConstraints { make in - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ make.left.equalToSuperview().inset(28) make.top.equalTo(kNavBtm + 20) make.centerX.equalToSuperview() @@ -70,7 +70,7 @@ class RegisterVC:BaseVC{ } bgView.snp.makeConstraints { make in make.left.right.equalToSuperview() - make.top.equalToSuperview().inset(CCDevice.isJoy ? 244:180) + make.top.equalToSuperview().inset(CCConfig.appType == .deepchords ? 244:180) make.bottom.equalToSuperview() } diff --git a/ShenYin/ShenYin/UI/Login/Controller/SmsLoginVC.swift b/ShenYin/ShenYin/UI/Login/Controller/SmsLoginVC.swift index 396062a..d95e8d6 100644 --- a/ShenYin/ShenYin/UI/Login/Controller/SmsLoginVC.swift +++ b/ShenYin/ShenYin/UI/Login/Controller/SmsLoginVC.swift @@ -53,7 +53,7 @@ class SmsLoginVC:BaseVC{ } override func setupLayout(){ logoImg.snp.makeConstraints { make in - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ make.left.equalToSuperview().inset(28) make.top.equalTo(kNavBtm + 20) make.centerX.equalToSuperview() @@ -67,7 +67,7 @@ class SmsLoginVC:BaseVC{ } bgView.snp.makeConstraints { make in make.left.right.equalToSuperview() - make.top.equalToSuperview().inset(CCDevice.isJoy ? 244:180) + make.top.equalToSuperview().inset(CCConfig.appType == .deepchords ? 244:180) make.bottom.equalToSuperview() } diff --git a/ShenYin/ShenYin/UI/Login/View/CodeView.swift b/ShenYin/ShenYin/UI/Login/View/CodeView.swift index 57d11c1..d8c63d0 100644 --- a/ShenYin/ShenYin/UI/Login/View/CodeView.swift +++ b/ShenYin/ShenYin/UI/Login/View/CodeView.swift @@ -26,7 +26,7 @@ class CodeView: BaseView { v.label.text = "点击获取".l10n } - inputBgView.backgroundColor = CCDevice.isJoy ? .rgb(0xF3F4F8): .color(.cellBg) + inputBgView.backgroundColor = CCConfig.appType == .deepchords ? .rgb(0xF3F4F8): .color(.cellBg) inputBgView.layer.cornerRadius = 12 inputBgView.layer.masksToBounds = true diff --git a/ShenYin/ShenYin/UI/Login/View/CustomInputView.swift b/ShenYin/ShenYin/UI/Login/View/CustomInputView.swift index ac24e91..1c1538c 100644 --- a/ShenYin/ShenYin/UI/Login/View/CustomInputView.swift +++ b/ShenYin/ShenYin/UI/Login/View/CustomInputView.swift @@ -36,7 +36,7 @@ class CustomInputView: BaseView { v.leftViewMode = .never } - inputBgView.backgroundColor = CCDevice.isJoy ? .rgb(0xF3F4F8): .color(.cellBg) + inputBgView.backgroundColor = CCConfig.appType == .deepchords ? .rgb(0xF3F4F8): .color(.cellBg) inputBgView.layer.cornerRadius = 10 inputBgView.layer.masksToBounds = true addSubviews([inputBgView]) diff --git a/ShenYin/ShenYin/UI/Login/View/LoginBgView.swift b/ShenYin/ShenYin/UI/Login/View/LoginBgView.swift index d67f256..8e8e066 100644 --- a/ShenYin/ShenYin/UI/Login/View/LoginBgView.swift +++ b/ShenYin/ShenYin/UI/Login/View/LoginBgView.swift @@ -7,7 +7,7 @@ class LoginBgView: BaseView { override func setupViews() { - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { backgroundColor = UIColor.white yc.setCorners(withRoundedRect: CGRect(x: 0, y: 0, width: kScreenWid, height: kScreenHei - 244), roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 50, height: 50)) } diff --git a/ShenYin/ShenYin/UI/Login/View/LoginHeaderView.swift b/ShenYin/ShenYin/UI/Login/View/LoginHeaderView.swift index b276027..8a1db58 100644 --- a/ShenYin/ShenYin/UI/Login/View/LoginHeaderView.swift +++ b/ShenYin/ShenYin/UI/Login/View/LoginHeaderView.swift @@ -7,7 +7,7 @@ class LoginHeaderView: BaseView { override func setupViews() { - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { let tipsLabel = UILabel() // tipsLabel.backgroundColor = .red // backgroundColor = .green diff --git a/ShenYin/ShenYin/UI/Login/View/PasswordView.swift b/ShenYin/ShenYin/UI/Login/View/PasswordView.swift index 2f1b502..ee1dad2 100644 --- a/ShenYin/ShenYin/UI/Login/View/PasswordView.swift +++ b/ShenYin/ShenYin/UI/Login/View/PasswordView.swift @@ -27,7 +27,7 @@ class PasswordView: BaseView { textField.rightView = btn textField.rightViewMode = .always - inputBgView.backgroundColor = CCDevice.isJoy ? .rgb(0xF3F4F8): .color(.cellBg) + inputBgView.backgroundColor = CCConfig.appType == .deepchords ? .rgb(0xF3F4F8): .color(.cellBg) inputBgView.layer.cornerRadius = 10 inputBgView.layer.masksToBounds = true addSubviews([inputBgView]) diff --git a/ShenYin/ShenYin/UI/Login/View/RegionView.swift b/ShenYin/ShenYin/UI/Login/View/RegionView.swift index 9244bf3..2910acc 100644 --- a/ShenYin/ShenYin/UI/Login/View/RegionView.swift +++ b/ShenYin/ShenYin/UI/Login/View/RegionView.swift @@ -25,7 +25,7 @@ class RegionView: BaseView { addSubviews([inputBgView]) inputBgView.addSubviews([titleLabel,valeLabel,arrrowIcon]) - inputBgView.backgroundColor = CCDevice.isJoy ? .rgb(0xF3F4F8): .color(.cellBg) + inputBgView.backgroundColor = CCConfig.appType == .deepchords ? .rgb(0xF3F4F8): .color(.cellBg) inputBgView.layer.cornerRadius = 10 inputBgView.layer.masksToBounds = true inputBgView.yc.addTap(target: self, action: #selector(tapAction)) diff --git a/ShenYin/ShenYin/UI/Mine/Feedback/FeekbackVC.swift b/ShenYin/ShenYin/UI/Mine/Feedback/FeekbackVC.swift index 7f4a5fc..0be85f2 100644 --- a/ShenYin/ShenYin/UI/Mine/Feedback/FeekbackVC.swift +++ b/ShenYin/ShenYin/UI/Mine/Feedback/FeekbackVC.swift @@ -64,7 +64,7 @@ class FeekbackVC:BaseVC{ } @objc func chatAction(){ App.shared.popToRootPage() - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { App.shared.tabController?.selectedIndex = 3 } else{ diff --git a/ShenYin/ShenYin/UI/Mine/ProtocolVC.swift b/ShenYin/ShenYin/UI/Mine/ProtocolVC.swift index 74b9d36..66021e1 100644 --- a/ShenYin/ShenYin/UI/Mine/ProtocolVC.swift +++ b/ShenYin/ShenYin/UI/Mine/ProtocolVC.swift @@ -66,7 +66,7 @@ final class FileDownloadVC: BaseVC { override func setupData() { let lan = CCConfig.appLanguage.yonghuCode // let fileUrl = "https://dc-cloud-pub.tos-cn-guangzhou.volces.com/protocol/\(lan)/\(type.rawValue).pdf" - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ let fileUrl = CCConfig.yonghuBaseURL + "/protocol/\(lan)/\(type.rawValue).pdf" self.dowmload(url:fileUrl) } diff --git a/ShenYin/ShenYin/UI/Mine/RevokeVC.swift b/ShenYin/ShenYin/UI/Mine/RevokeVC.swift index ee2ab6f..daa0102 100644 --- a/ShenYin/ShenYin/UI/Mine/RevokeVC.swift +++ b/ShenYin/ShenYin/UI/Mine/RevokeVC.swift @@ -26,13 +26,7 @@ class RevokeVC:BaseVC{ v.font = .regular(14) v.textColor = .color(.level2) v.numberOfLines = 0 - var text = "" - if CCDevice.isJoy{ - text = "请您确保您是有权进行本撤回同意隐私政策操作的相关当事人。撤回同意隐私政策,您将放弃以下资产或者权益:\n\n1.数据清空\n将会停止收集您的个人信息。您使用DeepChords应用过程中产生的数据将被清空;手机中DeepChords应用的缓存数据将被清除。\n\n2.设备解除绑定\nDeepChords账号中,所有设备会与您当前登录的账号解除绑定,并清除设备之前存储在服务器的数据。存储在物理设备中的数据请通过人工本地物理重置来清除。如果您需要重新使用设备,需要您再次进行绑定并且重新授权。\n\n3.其他\n此举还将撤回您对用户协议的同意,并退出DeepChords应用。\n\n请您知悉,撤回同意隐私政策不代表撤回同意前的相关行为和责任得到豁免或减轻。若您需要重新在该账号管理设备,需要您重新授权并绑定。请谨慎操作!".l10n - } - else{ - text = "请您确保您是有权进行本撤回同意隐私政策操作的相关当事人。撤回同意隐私政策,您将放弃以下资产或者权益:\n\n1.数据清空\n将会停止收集您的个人信息。您使用PLAYBOY应用过程中产生的数据将被清空;手机中PLAYBOY应用的缓存数据将被清除。\n\n2.设备解除绑定\nPLAYBOY账号中,所有设备会与您当前登录的账号解除绑定,并清除设备之前存储在服务器的数据。存储在物理设备中的数据请通过人工本地物理重置来清除。如果您需要重新使用设备,需要您再次进行绑定并且重新授权。\n\n3.其他\n此举还将撤回您对用户协议的同意,并退出PLAYBOY应用。\n\n请您知悉,撤回同意隐私政策不代表撤回同意前的相关行为和责任得到豁免或减轻。若您需要重新在该账号管理设备,需要您重新授权并绑定。请谨慎操作!".l10n - } + let text = CCConfig.revokeText.l10n let attributedString = NSMutableAttributedString(string: text) diff --git a/ShenYin/ShenYin/UI/Mine/Root/MineHeaderView.swift b/ShenYin/ShenYin/UI/Mine/Root/MineHeaderView.swift index a120789..df820fe 100644 --- a/ShenYin/ShenYin/UI/Mine/Root/MineHeaderView.swift +++ b/ShenYin/ShenYin/UI/Mine/Root/MineHeaderView.swift @@ -68,7 +68,7 @@ class MineUserInfoView: BaseView { } override func setupLayout() { -// if CCDevice.isJoy{ +// if CCConfig.appType == .deepchords{ // titleLabel.snp.makeConstraints { (m) in // m.top.equalToSuperview().inset(10) // m.left.equalToSuperview().inset(38) diff --git a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift index 4c05333..f41776d 100644 --- a/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift +++ b/ShenYin/ShenYin/UI/Mine/UserInfo/UserInfoVC.swift @@ -39,10 +39,10 @@ class UserInfoVC: BaseVC{ refreshUI() } override func setupData() { - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { list = [.avatar,.nickName,.gender,.birthday,.height,.weight,.hobbies,.area] } - else{ + else { list = [.avatar,.nickName,.gender,.area] } tableView.reloadData() diff --git a/ShenYin/ShenYin/UI/Mode/CustomEqVC.swift b/ShenYin/ShenYin/UI/Mode/CustomEqVC.swift index f028ba9..1b7114b 100644 --- a/ShenYin/ShenYin/UI/Mode/CustomEqVC.swift +++ b/ShenYin/ShenYin/UI/Mode/CustomEqVC.swift @@ -29,7 +29,7 @@ class CustomEqVC:BaseVC{ bgView.addSubviews([resetBtn,titleLabel,unitLabel,valueLabel1,valueLabel2,valueLabel3]) bgView.do { v in - v.backgroundColor = CCDevice.isJoy ? UIColor.white:UIColor.rgb(0x242424) + v.backgroundColor = CCConfig.appType == .deepchords ? UIColor.white:UIColor.rgb(0x242424) v.yc.setCornerRadius(12.fitR) } sliderBgView.do { v in diff --git a/ShenYin/ShenYin/UI/Mode/FindVC.swift b/ShenYin/ShenYin/UI/Mode/FindVC.swift index c0bbb4f..6a2dc64 100644 --- a/ShenYin/ShenYin/UI/Mode/FindVC.swift +++ b/ShenYin/ShenYin/UI/Mode/FindVC.swift @@ -25,7 +25,7 @@ class FindVC:BaseVC{ } override func setupViews() { - self.navBar.title = CCDevice.isJoy ? "查找耳机".l10n:"查找眼镜".l10n + self.navBar.title = CCConfig.appType == .playboy ? "查找眼镜".l10n:"查找耳机".l10n navBar.backgroundColor = .clear view.backgroundColor = .color(.bgColor) view.addSubviews([titleLabel,desLabel,leftRadar,rightRadar,leftBtn,rightBtn]) diff --git a/ShenYin/ShenYin/UI/Mode/ModeFindView.swift b/ShenYin/ShenYin/UI/Mode/ModeFindView.swift index e4c7db2..d175ce1 100644 --- a/ShenYin/ShenYin/UI/Mode/ModeFindView.swift +++ b/ShenYin/ShenYin/UI/Mode/ModeFindView.swift @@ -18,7 +18,7 @@ class ModeFindView: BaseView { icon.image = UIImage(named: "find_icon") titleLabel.do { v in - v.text = CCDevice.isJoy ? "查找耳机".l10n:"查找眼镜".l10n + v.text = CCConfig.appType == .playboy ? "查找眼镜".l10n:"查找耳机".l10n v.font = .bold(16) v.textColor = .color(.level1) diff --git a/ShenYin/ShenYin/UI/Raisound/RSChatCell.swift b/ShenYin/ShenYin/UI/Raisound/RSChatCell.swift index 4cc48cb..71d92aa 100644 --- a/ShenYin/ShenYin/UI/Raisound/RSChatCell.swift +++ b/ShenYin/ShenYin/UI/Raisound/RSChatCell.swift @@ -69,7 +69,7 @@ class RSChatCell:BaseTableViewCell{ didSet{ originalLabel.text = data.content if data.isSend { - bgView.backgroundColor = CCDevice.isJoy ? .color(.theme) : UIColor.color(.cellBg) + bgView.backgroundColor = .color(.theme) originalLabel.textColor = .white icon.snp.remakeConstraints { make in @@ -86,7 +86,7 @@ class RSChatCell:BaseTableViewCell{ else{ bgView.backgroundColor = .color(.cellBg) originalLabel.textColor = .color(.level1) - icon.image = CCDevice.isJoy ? UIImage(named: "logo_2"):UIImage(named: "logo_4") + icon.image = UIImage(named: "logo_2") icon.snp.remakeConstraints { make in make.size.equalTo(36) make.top.equalToSuperview().inset(16) diff --git a/ShenYin/ShenYin/UI/common/BrokenLineView.swift b/ShenYin/ShenYin/UI/common/BrokenLineView.swift index 58febd3..827ec62 100644 --- a/ShenYin/ShenYin/UI/common/BrokenLineView.swift +++ b/ShenYin/ShenYin/UI/common/BrokenLineView.swift @@ -20,7 +20,7 @@ class BrokenLineView: UIView { private func setupShapeLayer() { shapeLayer = CAShapeLayer() - shapeLayer.strokeColor = CCDevice.isJoy ? UIColor.rgb(0x93C6EC).cgColor: UIColor.color(.separateLine).cgColor + shapeLayer.strokeColor = CCConfig.appType == .deepchords ? UIColor.rgb(0x93C6EC).cgColor: UIColor.color(.separateLine).cgColor shapeLayer.fillColor = UIColor.clear.cgColor shapeLayer.lineWidth = 0.5 shapeLayer.lineDashPattern = [NSNumber(value: 5.0), NSNumber(value: 3.0)] diff --git a/ShenYin/ShenYin/UI/common/CustomButton.swift b/ShenYin/ShenYin/UI/common/CustomButton.swift index ca901c2..4eb5543 100644 --- a/ShenYin/ShenYin/UI/common/CustomButton.swift +++ b/ShenYin/ShenYin/UI/common/CustomButton.swift @@ -18,7 +18,7 @@ enum CustomButtonStyle:Int{ class CustomButton: UIButton { func set(title:String,font:UIFont = .bold(14),style:CustomButtonStyle = .theme1, target: Any?, action: Selector) { - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ setTitle(title, for: .normal) addTarget(target, action: action, for: .touchUpInside) layer.cornerRadius = 12 diff --git a/ShenYin/ShenYin/UI/common/LogVC.swift b/ShenYin/ShenYin/UI/common/LogVC.swift index e5c0260..4ed5c50 100644 --- a/ShenYin/ShenYin/UI/common/LogVC.swift +++ b/ShenYin/ShenYin/UI/common/LogVC.swift @@ -33,7 +33,7 @@ class LogVC: BaseVC { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { } else{ diff --git a/ShenYin/ShenYin/UI/common/pop/PopTextField.swift b/ShenYin/ShenYin/UI/common/pop/PopTextField.swift index bcbfb99..fc00aa3 100644 --- a/ShenYin/ShenYin/UI/common/pop/PopTextField.swift +++ b/ShenYin/ShenYin/UI/common/pop/PopTextField.swift @@ -76,7 +76,7 @@ class PopTextField: BasePresentView2 { v.text = "保存录音".l10n } textFiledBg.do { v in - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ v.yc.setBorder(width: 2, color: .color(.theme), radius: 10) } else{ @@ -103,7 +103,7 @@ class PopTextField: BasePresentView2 { okButton.do { (v) in v.setTitle("确定".l10n, for: .normal) v.titleLabel?.font = .bold(16) - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ v.setTitleColor(.white, for: .normal) v.backgroundColor = UIColor.color(.theme) } diff --git a/ShenYin/ShenYin/UI/common/pop/RecordTipsView.swift b/ShenYin/ShenYin/UI/common/pop/RecordTipsView.swift index b1f08a0..d773890 100644 --- a/ShenYin/ShenYin/UI/common/pop/RecordTipsView.swift +++ b/ShenYin/ShenYin/UI/common/pop/RecordTipsView.swift @@ -34,7 +34,7 @@ enum RecordTipsType:Int{ } } var des1:String{ - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { switch self { case .dialog: return "一方手持手机,一方戴上耳机,对手机发言时,耳机播放译文,对耳机发言时,手机播放译文".l10n @@ -56,7 +56,7 @@ enum RecordTipsType:Int{ } } var des2:String{ - if CCDevice.isJoy { + if CCConfig.appType == .deepchords { switch self { case .dialog: return "- 情景示例 -\n张张靠近手机讲中文,对方耳机播放英语".l10n @@ -205,7 +205,7 @@ class RecordTipsView: BasePresentView { v.numberOfLines = 0 } actionbtn.do { v in - if CCDevice.isJoy{ + if CCConfig.appType == .deepchords{ v.backgroundColor = .color(.theme) v.setTitleColor(.white, for: .normal) }