// // AliyunNuiTTSBridge.m // suixinkan // #import "AliyunNuiTTSBridge.h" #import #if !TARGET_OS_SIMULATOR && __has_include() #import #define ALIYUN_NUI_TTS_AVAILABLE 1 #else #define ALIYUN_NUI_TTS_AVAILABLE 0 #endif #if ALIYUN_NUI_TTS_AVAILABLE @interface AliyunNuiTTSBridge () @property (nonatomic, strong, nullable) NeoNuiTts *nui; @end #else @interface AliyunNuiTTSBridge () @end #endif @implementation AliyunNuiTTSBridge - (BOOL)sdkAvailable { #if ALIYUN_NUI_TTS_AVAILABLE return YES; #else return NO; #endif } - (NSInteger)initializeWithTicket:(NSString *)ticket logLevel:(NSInteger)logLevel saveLog:(BOOL)saveLog { #if ALIYUN_NUI_TTS_AVAILABLE if (self.nui != nil) { [self.nui nui_tts_release]; self.nui.delegate = nil; self.nui = nil; } NeoNuiTts *nui = [NeoNuiTts get_instance]; nui.delegate = self; NSInteger code = [nui nui_tts_initialize:[ticket UTF8String] logLevel:(NuiSdkLogLevel)logLevel saveLog:saveLog]; if (code == 0) { self.nui = nui; } else { nui.delegate = nil; [nui nui_tts_release]; } return code; #else (void)ticket; (void)logLevel; (void)saveLog; return -1; #endif } - (NSInteger)setParam:(NSString *)param value:(NSString *)value { #if ALIYUN_NUI_TTS_AVAILABLE if (self.nui == nil) { return -1; } return [self.nui nui_tts_set_param:[param UTF8String] value:[value UTF8String]]; #else (void)param; (void)value; return -1; #endif } - (NSInteger)playWithPriority:(NSString *)priority taskId:(NSString *)taskId text:(NSString *)text { #if ALIYUN_NUI_TTS_AVAILABLE if (self.nui == nil) { return -1; } return [self.nui nui_tts_play:[priority UTF8String] taskId:[taskId UTF8String] text:[text UTF8String]]; #else (void)priority; (void)taskId; (void)text; return -1; #endif } - (NSInteger)cancelWithTaskId:(NSString *)taskId { #if ALIYUN_NUI_TTS_AVAILABLE if (self.nui == nil) { return -1; } const char *task = taskId.length > 0 ? [taskId UTF8String] : NULL; return [self.nui nui_tts_cancel:task]; #else (void)taskId; return -1; #endif } - (NSInteger)releaseEngine { #if ALIYUN_NUI_TTS_AVAILABLE if (self.nui == nil) { return 0; } NSInteger code = [self.nui nui_tts_release]; self.nui.delegate = nil; self.nui = nil; return code; #else return 0; #endif } - (NSString *)paramValueForKey:(NSString *)key { #if ALIYUN_NUI_TTS_AVAILABLE if (self.nui == nil) { return nil; } const char *value = [self.nui nui_tts_get_param:[key UTF8String]]; if (value == NULL) { return nil; } return [NSString stringWithUTF8String:value]; #else (void)key; return nil; #endif } #if ALIYUN_NUI_TTS_AVAILABLE - (void)onNuiTtsEventCallback:(NuiSdkTtsEvent)event taskId:(char *)taskid code:(int)code { NSString *taskId = taskid != NULL ? [NSString stringWithUTF8String:taskid] : nil; [self.delegate aliyunNuiTTSBridge:self didReceiveEvent:event taskId:taskId code:code]; } - (void)onNuiTtsUserdataCallback:(char *)info infoLen:(int)info_len buffer:(char *)buffer len:(int)len taskId:(char *)task_id { if (buffer == NULL || len <= 0) { return; } NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)len]; NSString *taskId = task_id != NULL ? [NSString stringWithUTF8String:task_id] : nil; NSString *infoText = nil; if (info != NULL && info_len > 0) { infoText = [[NSString alloc] initWithBytes:info length:(NSUInteger)info_len encoding:NSUTF8StringEncoding]; } [self.delegate aliyunNuiTTSBridge:self didReceiveAudioData:data taskId:taskId info:infoText]; } #endif @end