本文介绍了如何使用阿里云智能语音服务提供的iOS SDK,包括SDK下载安装、关键接口及代码示例。
前提条件
下载安装
解压ZIP包,使用nuisdk.framework进行集成。
说明代码采用Ojective-C和C++混合编程方式,请您调用.mm扩展名文件。
使用Xcode打开此工程。
其中示例代码为FileTranscriberViewController.mm文件。
SDK关键接口
nui_initialize:初始化SDK。
/** * 初始化SDK,SDK为单例,请先释放后再次进行初始化。请勿在UI线程调用,可能引起阻塞。 * @param parameters:初始化参数,参见接口说明。 * @param listener:事件监听回调,参见下文具体回调。 * @param async_listener:异步回调,设置nullptr采用同步方式调用。 * @param level:log打印级别,值越小打印越多。 * @param save_log:是否保存log为文件,存储目录为parameter中的debug_path字段值。 * @retur:参见错误码。 */ NuiResultCode nui_initialize(const char *parameters, const NuiSdkListener *listener, const NuiAsyncCallback *async_listener = nullptr, NuiSdkLogLevel level = LOG_LEVEL_VERBOSE, bool save_log = false);
其中,NuiSdkListener类型如下表。
名称
类型
说明
event_callback
FuncDialogListenerOnEvent
NUI事件回调
file_trans_event_callback
FuncFileTransListenerOnEvent
文件识别事件回调
user_data_callback
FuncDialogUserProvideData
NUI麦克风数据请求回调
audio_state_changed_callback
FuncDialogAudioStateChange
NUI麦克风状态回调
audio_extra_event_callback
FuncDialogAudioExtraEvent
NUI特殊事件回调,暂不使用。
user_data
void *
用户数据,上述回调中第一个参数。
对于文件识别,仅需使用FuncFileTransListenerOnEvent:文件识别事件回调。
/** * SDK主要事件回调 * @param user_data:暂不使用。 * @param event:回调事件,参见如下事件列表。 * @param asr_result:语音识别结果。 * @param task_id:任务ID,在调用开始时生成。 * @param finish:本轮识别是否结束标志。 * @param resultCode:参见错误码,在出现EVENT_ASR_ERROR事件时有效。 */ typedef void (*FuncFileTransListenerOnEvent) (void *user_data, NuiCallbackEvent event, const char *asr_result, char *task_id, bool finish, int code);
事件列表:
名称
说明
EVENT_FILE_TRANS_CONNECTED
连接文件转写服务成功
EVENT_FILE_TRANS_UPLOADED
上传文件成功
EVENT_FILE_TRANS_RESULT
识别最终结果
EVENT_ASR_ERROR
根据错误码信息判断出错原因
nui_set_params:以JSON格式设置SDK参数。
/** * 以JSON格式设置参数 * @param params:参数信息请参见接口说明 * @param async_listener:异步回调,设置nullptr采用同步方式调用。 * @return:参见错误码 */ NuiResultCode nui_set_params(const char *params, const NuiAsyncCallback *listener = nullptr);
nui_file_trans_start:发起文件识别请求。
/** * 开始识别 * @param params:设置识别参数,参考接口说明。 * @param task_id:开始转写的任务ID,SDK生成随机字符串。 * @param async_listener:异步回调,设置nullptr采用同步方式调用。 * @return:参见错误码。 */ NuiResultCode nui_file_trans_start(const char *params, char *task_id, const NuiAsyncCallback *listener = nullptr);
nui_file_trans_cancel:取消正在工作的识别任务。
/** * 结束识别 * @param async_listener:异步回调,设置nullptr采用同步方式调用。 * @return:参见错误码 */ NuiResultCode nui_file_trans_cancel(const char *task_id, const NuiAsyncCallback *listener = nullptr);
nui_release
/** * 释放SDK资源 * @param async_listener:异步回调,设置nullptr采用同步方式调用。 * @return:参见错误码 */ NuiResultCode nui_release(const NuiAsyncCallback *async_listener = nullptr);
nui_get_version
/** * 获取SDK版本号 * @return SDK版本号字符串,形如X.Y.Z-XXX-20190602。 */ const char *nui_get_version();
调用步骤
初始化SDK。
根据业务需求设置参数。
调用nui_file_trans_start开始识别。
在EVENT_FILE_TRANS_RESULT事件中获取最终识别结果。
结束调用,使用release接口释放SDK资源。
代码示例
NUI SDK初始化
NSString * initParam = [self genInitParams];
//nui listener
NuiSdkListener nuiListener;
nuiListener.file_trans_event_callback = nullptr;
nuiListener.event_callback = nullptr;
nuiListener.audio_state_changed_callback = nullptr;
nuiListener.audio_extra_event_callback = nullptr;
nuiListener.user_data = nullptr;
nuiListener.user_data_callback = nullptr;
[_nui nui_initialize:[initParam UTF8String] Listener:&nuiListener asyncCallback:nullptr logLevel:LOG_LEVEL_VERBOSE saveLog:save_log];
其中,genInitParams生成为String JSON字符串,包含资源目录和用户信息。主要包含如下字段。
[dictM setObject:id_string forKey:@"device_id"];
[dictM setObject:@"" forKey:@"url"];
[dictM setObject:@"" forKey:@"app_key"];
[dictM setObject:@"" forKey:@"token"];
开始识别
调用nui_file_trans_start方法开启识别。
char task_id[33] = {0};
[_nui nui_file_trans_start:param:[param_string UTF8String] taskId:task_id asyncCallback:nullptr];
回调处理
onFileTransEventCallback:文件识别事件回调,请勿在事件回调中调用SDK的接口,可能引起死锁。
-(void)onFileTransEventCallback:(nuisdk::NuiCallbackEvent)nuiEvent
asrResult:(const char *)asr_result
taskId: (const char *)task_id
ifFinish:(bool)finish
retCode:(int)code {
TLog(@"onNuiEventCallback event %d finish %d", nuiEvent, finish);
if (nuiEvent == nuisdk::EVENT_FILE_TRANS_RESULT) {
TLog(@"trans finish");
} else if (nuiEvent == nuisdk::EVENT_ASR_ERROR) {
TLog(@"EVENT_ASR_ERROR error[%d]", code);
}
if (finish) {
[myself showStart];
}
return;
}
取消识别
[_nui nui_file_trans_cancel:[task_id UTF8String] asyncCallback:nullptr];
在文档使用中是否遇到以下问题
更多建议
匿名提交