Commit 88721a74 authored by pete谢兆麟's avatar pete谢兆麟

无法运行

parent 3464e93f
......@@ -35,6 +35,8 @@
0411CF182D1D502D00644D35 /* YHlifeCollectionReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CF172D1D502D00644D35 /* YHlifeCollectionReusableView.swift */; };
0411CF1A2D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CF192D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift */; };
0411CF1C2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411CF1B2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift */; };
0411DD582DEFE92700D8FF1C /* SpeechRecognitionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0411DD572DEFE90600D8FF1C /* SpeechRecognitionManager.swift */; };
0411DD5C2DEFF03300D8FF1C /* nuisdk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0411DD5B2DEFF03300D8FF1C /* nuisdk.framework */; };
041938712D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041938702D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift */; };
041CCDF72D7ED9030015E7BC /* YHHKVisaRenewalPaymentInfoList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041CCDF62D7ED9030015E7BC /* YHHKVisaRenewalPaymentInfoList.swift */; };
041CCDF92D7EE8B90015E7BC /* YHVisaRenewalPayMemberCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041CCDF82D7EE8B90015E7BC /* YHVisaRenewalPayMemberCell.swift */; };
......@@ -1342,6 +1344,8 @@
0411CF172D1D502D00644D35 /* YHlifeCollectionReusableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHlifeCollectionReusableView.swift; sourceTree = "<group>"; };
0411CF192D22960900644D35 /* YHGCWorkExperienceListReasonTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceListReasonTableViewCell.swift; sourceTree = "<group>"; };
0411CF1B2D2BA99500644D35 /* YHGCWorkExperienceListTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCWorkExperienceListTableViewCell.swift; sourceTree = "<group>"; };
0411DD572DEFE90600D8FF1C /* SpeechRecognitionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpeechRecognitionManager.swift; sourceTree = "<group>"; };
0411DD5B2DEFF03300D8FF1C /* nuisdk.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = nuisdk.framework; sourceTree = "<group>"; };
041938702D2B722D00C7A52A /* YHGCCollegeSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHGCCollegeSearchViewController.swift; sourceTree = "<group>"; };
041CCDF62D7ED9030015E7BC /* YHHKVisaRenewalPaymentInfoList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHKVisaRenewalPaymentInfoList.swift; sourceTree = "<group>"; };
041CCDF82D7EE8B90015E7BC /* YHVisaRenewalPayMemberCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHVisaRenewalPayMemberCell.swift; sourceTree = "<group>"; };
......@@ -2610,6 +2614,7 @@
files = (
6203A87EDC96313BBE789D9C /* Pods_galaxy.framework in Frameworks */,
04EA376F2BEA071600DBAF64 /* libc++.tbd in Frameworks */,
0411DD5C2DEFF03300D8FF1C /* nuisdk.framework in Frameworks */,
0468D42E2B5654A500CFB916 /* CoreTelephony.framework in Frameworks */,
04EA376D2BEA06EF00DBAF64 /* WebKit.framework in Frameworks */,
045C13B72D12CA5F00BD2DC0 /* ATAuthSDK_D.framework in Frameworks */,
......@@ -2770,6 +2775,15 @@
path = V;
sourceTree = "<group>";
};
0411DD542DEFE64900D8FF1C /* Voice */ = {
isa = PBXGroup;
children = (
0411DD5B2DEFF03300D8FF1C /* nuisdk.framework */,
0411DD572DEFE90600D8FF1C /* SpeechRecognitionManager.swift */,
);
path = Voice;
sourceTree = "<group>";
};
04307B772D1AADBE00ED8E8D /* M */ = {
isa = PBXGroup;
children = (
......@@ -6195,6 +6209,7 @@
045C0F472D12CA5E00BD2DC0 /* Tools */ = {
isa = PBXGroup;
children = (
0411DD542DEFE64900D8FF1C /* Voice */,
045C0F0E2D12CA5E00BD2DC0 /* Analytics */,
045C0F112D12CA5E00BD2DC0 /* CustomRefreshHeader */,
045C0F232D12CA5E00BD2DC0 /* Extention */,
......@@ -8378,6 +8393,7 @@
045C13A62D12CA5F00BD2DC0 /* YHTravelDocsPreparationViewModel.swift in Sources */,
045C13A72D12CA5F00BD2DC0 /* YHWorkExampleMessageTableViewCell.swift in Sources */,
045C13A82D12CA5F00BD2DC0 /* YHBasicInfoCellModel.swift in Sources */,
0411DD582DEFE92700D8FF1C /* SpeechRecognitionManager.swift in Sources */,
04AE20292D13B20900891D24 /* YHGCSpouseInfoContainerVC.swift in Sources */,
045C13A92D12CA5F00BD2DC0 /* YHAllowUseMyInfoViewController.swift in Sources */,
045C13AA2D12CA5F00BD2DC0 /* YHServiceCenterProgressModel.swift in Sources */,
......@@ -8505,6 +8521,7 @@
"$(inherited)",
"$(PROJECT_DIR)/galaxy/Res/Frameworks",
"$(PROJECT_DIR)/galaxy/Classes/Modules/AutoLogin(一键登录)/framework",
"$(PROJECT_DIR)/galaxy/Classes/Tools/Voice",
);
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = galaxy/Res/Info.plist;
......@@ -8653,6 +8670,7 @@
"$(inherited)",
"$(PROJECT_DIR)/galaxy/Res/Frameworks",
"$(PROJECT_DIR)/galaxy/Classes/Modules/AutoLogin(一键登录)/framework",
"$(PROJECT_DIR)/galaxy/Classes/Tools/Voice",
);
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = galaxy/Res/Info.plist;
......@@ -8863,6 +8881,7 @@
"$(inherited)",
"$(PROJECT_DIR)/galaxy/Res/Frameworks",
"$(PROJECT_DIR)/galaxy/Classes/Modules/AutoLogin(一键登录)/framework",
"$(PROJECT_DIR)/galaxy/Classes/Tools/Voice",
);
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = galaxy/Res/Info.plist;
......@@ -8913,6 +8932,7 @@
"$(inherited)",
"$(PROJECT_DIR)/galaxy/Res/Frameworks",
"$(PROJECT_DIR)/galaxy/Classes/Modules/AutoLogin(一键登录)/framework",
"$(PROJECT_DIR)/galaxy/Classes/Tools/Voice",
);
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = galaxy/Res/Info.plist;
......
//
// SpeechRecognitionManager.swift
// galaxy
//
// Created by EDY on 2025/6/4.
// Copyright © 2025 https://www.galaxy-immi.com. All rights reserved.
//
import nu
class SpeechRecognitionManager {
static let shared = SpeechRecognitionManager()
private var recognizer: NlsSpeechRecognizer?
private var fileTrans: NlsFileTrans?
// 配置你的阿里云信息
private let accessKeyId = "your_access_key_id"
private let accessKeySecret = "your_access_key_secret"
private let appKey = "your_app_key"
private init() {
setupCredentials()
}
private func setupCredentials() {
let config = AlibabaCloudCredentialConfig()
config.accessKeyId = accessKeyId
config.accessKeySecret = accessKeySecret
let provider = AlibabaCloudStaticCredentialProvider(config: config)
AlibabaCloudCredential.default = provider
}
}
extension SpeechRecognitionManager {
func startRealTimeRecognition(resultHandler: @escaping (String?, Error?) -> Void) {
recognizer = NlsSpeechRecognizer()
// 配置识别参数
let request = NlsSpeechRecognizerRequest()
request.appkey = appKey
request.format = "pcm" // 音频格式
request.sampleRate = 16000 // 采样率
// 设置回调
recognizer?.onRecognizationStarted = {
print("识别开始")
}
recognizer?.onTaskFailed = { error in
print("识别失败: \(error.localizedDescription)")
resultHandler(nil, error)
}
recognizer?.onRecognizationCompleted = { result in
if let text = result.result {
print("识别结果: \(text)")
resultHandler(text, nil)
}
}
recognizer?.onChannelClosed = {
print("通道关闭")
}
// 开始识别
do {
try recognizer?.start(request: request)
} catch {
print("启动识别失败: \(error.localizedDescription)")
resultHandler(nil, error)
}
}
func stopRealTimeRecognition() {
recognizer?.stop()
recognizer = nil
}
func pushAudioData(_ data: Data) {
recognizer?.sendAudio(data: data)
}
}
extension SpeechRecognitionManager {
func transcribeAudioFile(fileURL: URL, completion: @escaping (String?, Error?) -> Void) {
fileTrans = NlsFileTrans()
let request = NlsFileTransRequest()
request.appkey = appKey
request.fileLink = fileURL.absoluteString
request.format = "pcm" // 根据实际文件格式设置
request.sampleRate = 16000
fileTrans?.onTaskFailed = { error in
print("文件转写失败: \(error.localizedDescription)")
completion(nil, error)
}
fileTrans?.onTranscriptionCompleted = { result in
if let text = result.result {
print("转写结果: \(text)")
completion(text, nil)
}
}
do {
try fileTrans?.start(request: request)
} catch {
print("启动文件转写失败: \(error.localizedDescription)")
completion(nil, error)
}
}
}
#ifndef NeoNui_h
#define NeoNui_h
#ifdef DEBUG_MODE
#define TLog( s, ... ) NSLog( s, ##__VA_ARGS__ )
#else
#define TLog( s, ... )
#endif
#import <Foundation/Foundation.h>
#import "NeoNuiCode.h"
typedef int NuiResultCode;
enum NuiAudioState {
STATE_OPEN,
STATE_PAUSE,
STATE_CLOSE,
};
enum NuiFunMode {
kFuncModeAsp = 0x00000001,
kFuncModeVad = 0x00000010,
kFuncModeKws = 0x00000100,
kFuncModeAsr = 0x00001000,
kFuncModeEnc = 0x00010000,
kFuncModeOu = 0x00100000,
kFuncModeFull = 0x11111111,
};
enum NuiAudioExtraEvent {
AudioRmsChanged,
};
enum NuiCallbackEvent {
EVENT_VAD_START,
EVENT_VAD_TIMEOUT,
EVENT_VAD_END,
EVENT_WUW,
EVENT_WUW_TRUSTED,
EVENT_WUW_CONFIRMED,
EVENT_WUW_REJECTED,
EVENT_WUW_END,
EVENT_ASR_PARTIAL_RESULT,
EVENT_ASR_RESULT,
EVENT_ASR_ERROR, // 10
EVENT_DIALOG_ERROR,
EVENT_ONESHOT_TIMEOUT,
EVENT_DIALOG_RESULT,
EVENT_WUW_HINT,
EVENT_VPR_RESULT,
EVENT_TEXT2ACTION_DIALOG_RESULT,
EVENT_TEXT2ACTION_ERROR,
EVENT_ATTR_RESULT,
EVENT_MIC_ERROR,
EVENT_DIALOG_EX, // 20
EVENT_WUW_ERROR,
EVENT_BEFORE_CONNECTION,
EVENT_SENTENCE_START,
EVENT_SENTENCE_END,
EVENT_SENTENCE_SEMANTICS,
EVENT_RESULT_TRANSLATED,
EVENT_TRANSCRIBER_COMPLETE,
EVENT_FILE_TRANS_CONNECTED,
EVENT_FILE_TRANS_UPLOADED,
EVENT_FILE_TRANS_RESULT, // 30
EVENT_FILE_TRANS_UPLOAD_PROGRESS,
EVENT_TRANSCRIBER_STARTED,
EVENT_ASR_STARTED,
};
enum NuiVadMode {
MODE_VAD,
MODE_P2T,
MODE_KWS,
MODE_PARALLEL,
MODE_KWS2PARALLEL,
MODE_AUTO_CONTINUAL,
MODE_KWS_CONTINUAL,
MODE_KWS2TALK,
MODE_ONLY_KWS
};
enum ServiceType {
SERVICE_TYPE_NONE = -1,
SERVICE_TYPE_ASR = 0, // SpeechRecognizer
SERVICE_TYPE_TIANGONG_ASSISTANT = 1,
SERVICE_TYPE_DIALOG_ASSISTANT = 2, //DialogAssistant
SERVICE_TYPE_VIRTUAL_ASSISTANT = 3, //TiangongV4
SERVICE_TYPE_SPEECH_TRANSCRIBER = 4 //SpeechTranscriber
};
enum NuiSdkVprEvent {
EVENT_VPR_NONE,
EVENT_VPR_REGISTER_START,
EVENT_VPR_REGISTER_DONE,
EVENT_VPR_REGISTER_FAILED,
EVENT_VPR_UPDATE_START,
EVENT_VPR_UPDATE_DONE,
EVENT_VPR_UPDATE_FAIL,
EVENT_VPR_DELETE_DONE,
EVENT_VPR_DELETE_FAIL
};
typedef enum NuiSdkVprEvent NuiSdkVprEvent;
typedef enum NuiAudioState NuiAudioState;
typedef enum NuiCallbackEvent NuiCallbackEvent;
typedef enum NuiCallbackEvent NuiCallbackEvent;
typedef enum NuiVadMode NuiVadMode;
@protocol NeoNuiSdkDelegate <NSObject>
@optional
-(int) onNuiNeedAudioData:(char *)audioData length:(int)len;
-(void) onNuiAudioStateChanged:(NuiAudioState)state;
-(void) onNuiEventCallback:(NuiCallbackEvent)nuiEvent
dialog:(long)dialog
kwsResult:(const char *)wuw
asrResult:(const char *)asr_result
ifFinish:(BOOL)finish
retCode:(int)code;
-(void) onNuiRmsChanged:(float) rms;
-(void) onNuiLogTrackCallback:(NuiSdkLogLevel)level
logMessage:(const char *)log;
-(void) onFileTransEventCallback:(NuiCallbackEvent)nuiEvent
asrResult:(const char *)asr_result
taskId:(const char *)task_id
ifFinish:(BOOL)finish
retCode:(int)code;
-(void) onFileTransLogTrackCallback:(NuiSdkLogLevel)level
logMessage:(const char *)log;
@end
@interface NeoNui : NSObject
@property (readonly) void* nui_sdk;
@property (nonatomic,weak) id<NeoNuiSdkDelegate> delegate;
+ (instancetype)get_instance;
//Initialize API
-(NuiResultCode) nui_initialize:(const char *)parameters
logLevel:(NuiSdkLogLevel)level
saveLog:(BOOL)save_log;
//Release API
-(NuiResultCode) nui_release;
//Dialog API
-(NuiResultCode) nui_dialog_start:(NuiVadMode)vad_mode
dialogParam:(const char *)dialog_params;
-(NuiResultCode) nui_dialog_cancel:(BOOL)force;
-(NuiResultCode) nui_dialog_resume;
//Text to Action API
-(NuiResultCode) nui_dialog_text2action:(const char *)text
Context:(const char *)context
isNewDialog:(BOOL)is_new_dialog
dialogParams:(const char *)dialog_params;
-(NuiResultCode) nui_dialog_text2action_cancel;
//File Transcriber API
-(NuiResultCode) nui_file_trans_start:(const char *)params
taskId:(char*)task_id;
-(NuiResultCode) nui_file_trans_cancel:(const char*)task_id;
//Set parameter API
-(NuiResultCode) nui_set_param:(const char *)para
Value:(const char *)value;
-(NuiResultCode) nui_set_params:(const char *)params;
-(NuiResultCode) nui_update_audio_data:(const char *)data
Len:(int)length
FirstPack:(BOOL)first_pack;
-(const char*) nui_get_version;
-(const char*) nui_get_all_response;
#ifdef NUI_VPR
//Voice Print Recognition API
-(NuiResultCode) nui_vpr_register_user:(const char*)service_id
groupId:(const char * )group_id
userId:(const char * )user_id;
-(NuiResultCode) nui_vpr_update_user:(const char* )service_id
groupId:(const char * )group_id
userId:(const char * )user_id;
-(NuiResultCode) nui_vpr_delete_user:(const char* )service_id
groupId:(const char * )group_id
userId:(const char * )user_id;
-(NuiResultCode) nui_vpr_enable;
-(NuiResultCode) nui_vpr_disable;
-(NuiResultCode) nui_vpr_register_cancel;
#endif
@end
#endif
//
// NeoNuiCode.h
//
//
// Created by zhouguangdong on 2021/3/11.
//
#ifndef NeoNuiCode_h
#define NeoNuiCode_h
enum NuiSdkLogLevel {
NUI_LOG_LEVEL_VERBOSE,
NUI_LOG_LEVEL_DEBUG,
NUI_LOG_LEVEL_INFO,
NUI_LOG_LEVEL_WARNING,
NUI_LOG_LEVEL_ERROR,
NUI_LOG_LEVEL_NONE,
};
typedef enum NuiSdkLogLevel NuiSdkLogLevel;
typedef int NuiResultCode;
#define SUCCESS (0)
//legacy, not required handle
#define DEFAULT_ERROR (240999) //default err value.
//config or params invalid
#define NUI_CONFIG_INVALID (240001) //Config or file invalid.
#define ILLEGAL_PARAM (240002) //parmeters illegal.
#define ILLEGAL_INIT_PARAM (240003) //initialize with illegal parameters.
#define NECESSARY_PARAM_LACK (240004) //lack of necessaray parameters.
#define NULL_PARAM_ERROR (240005) //parameters with null pointer or empty content.
#define NULL_LISTENER_ERROR (240006) //no listener for callback set.
#define NULL_DIALOG_ERROR (240007) //no dialog created.
#define NULL_ENGINE_ERROR (240008) //no dialog engine created.
#define ILLEGAL_DATA (240009) //transfer illegal audio or video data.
#define ILLEGAL_WORD_LIST (2400010) //word list format error
//state invalid
#define ILLEGAL_REENTRANT (240010) //happen when call from async callback or sdk already exit.
#define SDK_NOT_INIT (240011) //call apis when sdk not initialized.
#define SDK_ALREADY_INIT (240012) //call initialize if already initialized.
#define DIALOG_INVALID_STATE (240013) //dialog state machine error.
#define STATE_INVALID (240014) //asr engine state machine error.
#define ILLEGAL_FUNC_CALL (240015) //some function is not supposed to call on some working mode.
//system call fail
#define MEM_ALLOC_ERROR (240020) //alloc or new object fail.
#define FILE_ACCESS_FAIL (240021) //access file fail.
#define CREATE_DIR_ERROR (240022) //create directory fail.
//nui call fail
#define CREATE_NUI_ERROR (240030) //create dialog engine fail.
#define TEXT_DIALOG_START_FAIL (240031) //start text to action fail.
#define TEXT_DIALOG_CANCEL_FAIL (240032) //cancel text to action fail.
#define WUW_DUPLICATE (240033) //set duplicated wake words for dynamic keywords.
//cei call fail
#define CEI_INIT_FAIL (240040) //init cei engine fail.
#define CEI_SET_PARAM_FAIL (240041) //cei set parameters fail.
#define CEI_COMPILE_GRAMMAR_FAIL (240042) //cei compile grammar fail.
#define CEI_STOP_FAIL (240043) //cei stop fail.
#define CEI_CANCEL_FAIL (240044) //cei cancel fail.
#define CEI_UNLOAD_KWS_FAIL (240045) //cei unload kws fail.
#define GET_WUW_ERROR (240046) //cei get wakeup word fail.
#define CEI_CHECK_BIN_FAIL (240047) //check resource bin file fail
//audio manager
#define SELECT_RECORDER_ERROR (240050) //select recorder fail.
#define UPDATE_AUDIO_ERROR (240051) //update audio fail) usually push audio more than wanted.
#define MIC_ERROR (240052) //get audio data fail continually for 2 senconds.
//nls error
#define CREATE_DA_REQUEST_ERROR (240060) //create dialog assistant fail.
#define START_DA_REQUEST_ERROR (240061) //start dialog assistant fail.
#define DEFAULT_NLS_ERROR (240062) //default network error.
#define SSL_ERROR (240063) //ssl new fail.
#define SSL_CONNECT_FAILED (240064) //ssl connect fail.
#define HTTP_CONNECT_FAILED (240065) //http connect fail.
#define DNS_FAILED (240066) //DNS fail.
#define CONNECT_FAILED (240067) //connect socket fail.
#define SERVER_NOT_ACCESS (240068) //server responce status bad.
#define SOCKET_CLOSED (240069) //socket closed.
#define AUTH_FAILED (240070) //authentication fail.
#define HTTPDNS_FAILED (240071) //connect fail when use http dns.
#define HTTP_SEND_FAILED (240072)
#define HTTP_RECEIVE_FAILED (240073)
#define HTTP_RESPONSE_ERROR (240074)
#define HTTP_SERVER_ERROR (240075)
//function call timeout
#define ENGINE_INIT_TIMEOUT (240080) //init engine timeout.
#define SET_PARAM_TIMEOUT (240081) //set parameters timeout.
#define SET_WUW_TIMEOUT (240082) //set wakeup word timeout.
#define SELECT_RECORDER_TIMEOUT (240083) //select recorder timeout.
#define STOP_TIMEOUT (240084) //stop dialog timeout.
#define ASR_ENGINE_STOP_TIMEOUT (240085) //asr engine stop timeout.
#define UNLOAD_DYNAMIC_WUW_TIMEOUT (240086) //unload dynamic wakeup word timeout.
#define ADD_DYNAMIC_WUW_TIMEOUT (240087) //add dynamic wakeup word timeout.
#define HANDLE_API_TIMEOUT (240088)
#define CHECK_ASSET_TIMEOUT (240089) //check asset bin file timeout
//network timeout
#define UPDATE_CONTEXT_TIMEOUT (240090) //update context timeout.
#define CONNECTION_TIMEOUT (240091) //connect to server timeout.
#define PARTIAL_ASR_TIMEOUT (240092) //get partial asr result timeout.
#define ASR_TIMEOUT (240093) //get final asr result timeout.
#define DIALOG_TIMEOUT (240094) //get dialog result timeout.
#define WWV_TIMEOUT (240095) //get wake word verification result timeout.
//legacy
#define WAIT_TIMEOUT (240100) //legacy definition.
#ifdef NUI_VIDEO_MANAGER
#define SELECT_CAMERA_TIMEOUT (240101)
#define SELECT_CAMERA_ERROR (240102)
#endif
#ifdef NUI_SENSOR_MANAGER
#define SELECT_SENSOR_TIMEOUT (240103)
#define SELECT_SENSOR_ERROR (240104)
#endif
#ifdef NUI_INCLUDE_VPR
#define VPR_ARGS_INVALID (240110)
#define VPR_REG_TIMEOUT (240111)
#define VPR_STATE_INVALID (240112)
#define VPR_UPDATE_TIMEOUT (240113)
#define VPR_DELETE_TIMEOUT (240114)
#define VPR_CANCEL_TIMEOUT (240115)
#endif
#define RING_BUF_WRITE_FAIL (240120)
#define AUDIO_PROCESS_THREAD_BLOCK (240121)
#define PERFORMANCE_FILEOVER (240130)
#define RESAMPLE_ERR (240140)
#define FILE_TRANS_TASK_LIMIT (240150)
#define FILE_TRANS_ENCODER_FAIL (140151)
#define THREAD_CREATE_FAILD (240200)
#define SERVER_ERR_SILENT_SPEECH (40010007)
#endif /* NeoNuiCode_h */
//
// NeoNuiTts.h
// nuisdk
//
// Created by zhouguangdong on 2019/12/21.
// Copyright © 2019年 zhouguangdong. All rights reserved.
//
#ifndef NeoNuiTts_h
#define NeoNuiTts_h
#ifdef DEBUG_MODE
#define TLog( s, ... ) NSLog( s, ##__VA_ARGS__ )
#else
#define TLog( s, ... )
#endif
#import <Foundation/Foundation.h>
#import "NeoNuiCode.h"
enum NuiSdkTtsEvent {
TTS_EVENT_START = 0,
TTS_EVENT_END = 1,
TTS_EVENT_CANCEL = 2,
TTS_EVENT_PAUSE = 3,
TTS_EVENT_RESUME = 4,
TTS_EVENT_ERROR = 5,
TTS_EVENT_CACEH_START = 6,
TTS_EVENT_CACEH_END = 7,
TTS_EVENT_CACEH_CANCEL = 8,
TTS_EVENT_CACEH_DELETE = 9,
TTS_EVENT_CACEH_ERROR = 10,
TTS_EVENT_FONT_EVENT_START = 11,
TTS_EVENT_FONT_DOWNLOAD = 12,
TTS_EVENT_FONT_END = 13,
TTS_EVENT_FONT_PAUSE = 14,
TTS_EVENT_FONT_RESUME = 15,
TTS_EVENT_FONT_CANCEL = 16,
TTS_EVENT_FONT_ERROR = 17
};
typedef enum NuiSdkTtsEvent NuiSdkTtsEvent;
@protocol NeoNuiTtsDelegate <NSObject>
@optional
- (void)onNuiTtsEventCallback:(NuiSdkTtsEvent)event taskId:(char*)taskid code:(int)code;
- (void)onNuiTtsUserdataCallback:(char*)info infoLen:(int)info_len buffer:(char*)buffer len:(int)len taskId:(char*)task_id;
- (void)onNuiTtsVolumeCallback:(int)volume taskId:(char*)task_id;
- (void)onNuiTtsLogTrackCallback:(NuiSdkLogLevel)level
logMessage:(const char *)log;
@end
@interface NeoNuiTts : NSObject
@property (readonly) void* nui_tts_sdk;
@property (nonatomic,weak) id<NeoNuiTtsDelegate> delegate;
+ (instancetype)get_instance;
-(int) nui_tts_initialize:(const char *)parameters
logLevel:(NuiSdkLogLevel)level
saveLog:(BOOL)save_log;
-(int) nui_tts_release;
-(int) nui_tts_play:(const char *)priority
taskId:(const char *)taskid
text:(const char *)text;
-(int) nui_tts_cancel:(const char *)taskid;
-(int) nui_tts_pause;
-(int) nui_tts_resume;
-(int) nui_tts_set_param:(const char *)param
value:(const char *)value;
-(const char *) nui_tts_get_param:(const char *)param;
-(int) nui_tts_get_num_of_chars:(const char *)param;
@end
#endif /* NeoNuiTts_h */
//
// NeoNuiStreamInputTts.h
// nuisdk
//
// Created by lengjiayi on 2024/4/17.
// Copyright © 2024 zhouguangdong. All rights reserved.
//
#ifndef StreamInputTts_h
#define StreamInputTts_h
#import <Foundation/Foundation.h>
#import "NeoNuiCode.h"
enum StreamInputTtsCallbackEvent {
TTS_EVENT_SYNTHESIS_STARTED = 0,
TTS_EVENT_SENTENCE_BEGIN = 1,
TTS_EVENT_SENTENCE_SYNTHESIS = 2,
TTS_EVENT_SENTENCE_END = 3,
TTS_EVENT_SYNTHESIS_COMPLETE = 4,
TTS_EVENT_TASK_FAILED = 5
};
typedef enum StreamInputTtsCallbackEvent StreamInputTtsCallbackEvent;
@protocol StreamInputTtsDelegate <NSObject>
@optional
/**
* 事件回调
* @param event:回调事件,参见如下事件列表。
* @param task_id:请求的任务ID,每次调用一个新ID。
* @param session_id:请求的会话ID。
* @param ret_code:参见错误码,出现TTS_EVENT_ERROR事件时有效,可查阅xxxxx。
* @param error_msg:当产生错误码时,返回错误信息。
* @param timestamp:时间戳信息。
* @param all_response:返回的完整json格式信息。
*/
- (void)onStreamInputTtsEventCallback:(StreamInputTtsCallbackEvent)event taskId:(char*)taskid sessionId:(char*)sessionId ret_code:(int)ret_code error_msg:(char*)error_msg timestamp:(char*)timestamp all_response:(char*)all_response;
/**
* 当开始识别时,此回调被连续调用,App需要在回调中进行语音数据填充,语音数据来自App的录音
* @param buffer: 合成的语音数据
* @param len: 合成的语音长度
*/
- (void)onStreamInputTtsDataCallback:(char*)buffer len:(int)len;
- (void)onStreamInputTtsLogTrackCallback:(NuiSdkLogLevel)level
logMessage:(const char *)log;
@end
@interface StreamInputTts : NSObject
@property (nonatomic,weak) id<StreamInputTtsDelegate> delegate;
+ (instancetype)get_instance;
/**
* 与服务端完成建链,并开始流式语音合成任务
* @param ticket:json string形式的鉴权参数,参见下方说明或接口说明:xxxxx
* @param parameters:json string形式的初始化配置参数,参见下方说明或接口说明:xxxxx
* @param session_id:会话ID,可传入32个字节的uuid,或传入空内容由SDK自动生成。
* @param level:log打印级别,值越小打印越多。
* @param save_log:是否保存log为文件,存储目录为ticket中的debug_path字段值。
* @return:参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) startStreamInputTts:(const char *)ticket parameters:(const char *)parameters sessionId:(const char *)sessionId logLevel:(NuiSdkLogLevel)logLevel saveLog:(BOOL)saveLog;
/**
* 与服务端完成建链,并开始单向流式语音合成(长文本语音合成)任务,同步接口
* @param ticket:json string形式的鉴权参数,参见下方说明或接口说明:xxxxx
* @param parameters:json string形式的初始化配置参数,参见下方说明或接口说明:xxxxx
* @param text:待合成文本
* @param session_id:会话ID,可传入32个字节的uuid,或传入空内容由SDK自动生成。
* @param level:log打印级别,值越小打印越多。
* @param save_log:是否保存log为文件,存储目录为ticket中的debug_path字段值。
* @return:参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) playStreamInputTts:(const char *)ticket parameters:(const char *)parameters text:(const char*)text sessionId:(const char *)sessionId logLevel:(NuiSdkLogLevel)logLevel saveLog:(BOOL)saveLog;
/**
* 与服务端完成建链,并开始单向流式语音合成(长文本语音合成)任务,异步接口
* @param ticket:json string形式的鉴权参数,参见下方说明或接口说明:xxxxx
* @param parameters:json string形式的初始化配置参数,参见下方说明或接口说明:xxxxx
* @param text:待合成文本
* @param session_id:会话ID,可传入32个字节的uuid,或传入空内容由SDK自动生成。
* @param level:log打印级别,值越小打印越多。
* @param save_log:是否保存log为文件,存储目录为ticket中的debug_path字段值。
* @return:参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) asyncPlayStreamInputTts:(const char *)ticket parameters:(const char *)parameters text:(const char*)text sessionId:(const char *)sessionId logLevel:(NuiSdkLogLevel)logLevel saveLog:(BOOL)saveLog;
/**
* 以流式的方式发送文本
* @param text:从大模型当中生成的流式文本
* @return:参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) sendStreamInputTts:(const char *)text;
/**
* 结束合成任务,通知服务端流入文本数据发送完毕,阻塞等待服务端处理完成,并返回所有合成音频。阻塞超时可以通过start接口中的complete_waiting_ms设置
* @return:参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) stopStreamInputTts;
/**
* 结束合成任务,通知服务端流入文本数据发送完毕,不等待而是立即返回,同时回调继续返回剩余内容
* @return:参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) asyncStopStreamInputTts;
/**
* 立即停止合成任务,不会有任何回调返回
* @return:参见错误码:https://help.aliyun.com/document_detail/459864.html。
*/
- (int) cancelStreamInputTts;
@end
#endif /* NeoNuiStreamInputTts_h */
{
"cei":{
"cei_param_version":"2.2.0",
"cei_param_device_type":"car",
"cei_param_reco_mode":0,
"cei_param_log_level":2,
"cei_param_debug_path":"asr_debug",
"cei_param_is_debug_enable":false,
"cei_param_resource_path":"",
"cei_param_resource_is_multi_language":false,
"cei_param_audio_format_str":"16k16bitmono",
"cei_param_mcs_mode":0,
"cei_param_work_mode":0,
"cei_param_max_cache_frames":1000,
"cei_param_is_aec_bf_active":false,
"cei_param_is_agc_active":false,
"cei_param_is_vad_active":true,
"cei_param_is_kws_active":true,
"cei_param_is_sr_active":true
},
"asp":{
"asp_param_is_process_parallel":false,
"asp_param_is_input_debug_enable":false,
"asp_param_is_output_debug_enable":false,
"asp_param_debug_path":"asr_debug",
"asp_param_is_callback_enable":false,
"asp_param_callback_period_frames":5
},
"vad":{
"vad_param_is_input_debug_enable":false,
"vad_param_is_output_debug_enable":false,
"vad_param_debug_path":"asr_debug",
"vad_param_asleep_speech_noise_thres":-0.8,
"vad_param_awake_speech_noise_thres":-0.5,
"vad_param_asleep_max_speech_segment_time":300000,
"vad_param_awake_max_speech_segment_time":60000,
"vad_param_asleep_block_size":3,
"vad_param_awake_block_size":3,
"vad_param_front_timeout_interval":8000,
"vad_param_tail_timeout_interval":800,
"vad_param_is_detect_start":true,
"vad_param_is_detect_end":true
},
"kws":{
"kws_param_is_input_debug_enable":false,
"kws_param_is_output_debug_enable":false,
"kws_param_debug_path":"asr_debug",
"kws_param_is_process_parallel":false,
"kws_param_front_extend_frames":10,
"kws_param_tail_extend_frames":5,
"kws_param_encoder_type_str":"opu",
"kws_param_encoder_bitrate":16000,
"kws_param_encoder_complexity":2,
"kws_param_callback_period_ms":100,
"kws_param_max_frames_per_callback":25,
"kws_param_max_bytes_per_callback":16000
},
"sr":{
"sr_param_is_input_debug_enable":false,
"sr_param_is_output_debug_enable":false,
"sr_param_debug_path":"asr_debug",
"sr_param_is_itn_enable":true,
"sr_param_is_do_conf_filter":false,
"sr_param_is_process_parallel":true,
"sr_param_is_need_result":false,
"sr_param_is_need_voice":true,
"sr_param_ngram_conf_thres":65.0,
"sr_param_jsgf_conf_thres":65.0,
"sr_param_encoder_type_str":"opu",
"sr_param_encoder_bitrate":16000,
"sr_param_encoder_complexity":2,
"sr_param_callback_period_ms":100,
"sr_param_max_frames_per_callback":25,
"sr_param_max_bytes_per_callback":16000
},
"ou":{
"oss_upload_param_is_enable":false,
"oss_upload_param_asp_in":false,
"oss_upload_param_asp_out":false,
"oss_upload_param_vad_in":false,
"oss_upload_param_vad_out":false,
"oss_upload_param_kws_in":false,
"oss_upload_param_kws_susp_in":false,
"oss_upload_param_kws_out":false,
"oss_upload_param_kws_susp_out":false,
"oss_upload_param_sr_in":false
}
}
{
"device_type":"phone",
"assets_version":"1.1.20190902",
"nui_config":{
"service_mode":"kModeFullCloud",
"log_level":"kLogLevelVerbose",
"enable_recorder_by_user":true,
"enable_dialog":false
},
"nls_config":{
"debug_level":4,
"sr_format":"opus",
"sample_rate":16000,
"dns_timeout":5000,
"vocab_default_weight":2
},
"audio_config":{
"debug":"none",
"16k_audio":{
"name":"16kmono16bit",
"id":0,
"mic":{
"name":"16kmono16bit",
"debug_heap_pollution":false,
"read_cnt":0,
"sample_rate":16000,
"bits_per_sample":16,
"channels":1,
"recording_interval":10,
"cei_frame_time_len":20,
"channel_mask":"kAMChannalMaskNone",
"format_type":"kAMDataFormatPcmInterleaved",
"endianness":"kAMByteOrderLittleEndian"
}
},
"8k_audio":{
"name":"8kmono16bit",
"id":0,
"mic":{
"name":"8kmono16bit",
"debug_heap_pollution":false,
"read_cnt":0,
"sample_rate":8000,
"bits_per_sample":16,
"channels":1,
"recording_interval":10,
"cei_frame_time_len":20,
"channel_mask":"kAMChannalMaskNone",
"format_type":"kAMDataFormatPcmInterleaved",
"endianness":"kAMByteOrderLittleEndian"
}
}
}
}
{
"device_type":"car",
"mode_type":2,
"smart_engine":3,
"encode_type":"pcm",
"debug_info":{
"debug_level":0,
"debug_path":"/sdcard/tmp"
},
"common_info":{
"pitch_level":0,
"speed_level":1.0,
"volume":1.0,
"play_audio":0,
"callback_raw_data":1,
"sample_rate":16000,
"font_name":"xiaoyun",
"wait_time":2000
},
"cache":{
"on":true,
"max_cache_size":2000000,
"save_path":"/sdcard/mit/"
},
"font":{
"on":false,
"mode":"cmd",
"save_path":"/sdcard/mit"
}
}
......@@ -14,6 +14,7 @@
//#import <AliyunOSSiOS/OSSService.h>
#import "WXApi.h"
#import "JPUSHService.h"
#import <nuisdk/NeoNui.h>
// iOS10注册APNs所需头文件
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
#import <UserNotifications/UserNotifications.h>
......@@ -22,6 +23,7 @@
// 七鱼SDK
#import <QYSDK/QYSDK.h>
#import <NIMSDK/NIMMessage.h>
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment