日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

iOS SDK

本文介紹了如何使用阿里云智能語音服務提供的iOS SDK,包括SDK下載安裝、關鍵接口及代碼示例。

前提條件

下載安裝

  1. 下載SDK和示例代碼

    重要

    請下載后在樣例初始化代碼中替換您的阿里云賬號信息、Appkey和Token才可運行。為方便集成,2.5.14版本后iOS接口使用純Object-C接口,不再使用C++混合接口。

  2. 解壓ZIP包,將zip包中的nuisdk.framework添加到您的工程中,并在工程Build Phases的Link Binary With Libraries中添加nuisdk.framework。請確保在編譯配置的General > Frameworks, Libraries, and Embedded Content中配置nuisdk.framework為Embed & Sign。

  3. 使用Xcode打開此工程,工程中提供了參考代碼以及一些直接可使用的工具類,例如音頻播放錄制和文件操作,您可以直接復制源碼到您的實際工程進行使用。其中錄音文件識別極速版示例代碼在FileTranscriberViewController類中。

SDK關鍵接口

  • nui_initialize:初始化SDK。

      /**
       * 初始化SDK,SDK為單例,請先釋放后再次進行初始化。請勿在UI線程調用,可能引起阻塞。
       * @param parameters: 初始化參數,參見接口說明文檔
       * @param level: log打印級別,值越小打印越多
       * @param save_log: 是否保存log為文件,存儲目錄為parameter中的debug_path字段值
       * @return 參見錯誤碼
       */
    -(NuiResultCode) nui_initialize:(const char *)parameters
                           logLevel:(NuiSdkLogLevel)level
                            saveLog:(BOOL)save_log;
  • nui_set_params:以JSON格式設置SDK參數。

    /**
     * 以JSON格式設置參數
     * @param params: 參數信息請參見接口說明文檔
     * @return 參見錯誤碼
     */
    -(NuiResultCode) nui_set_params:(const char *)params;
  • nui_file_trans_start:發起文件識別請求。

    /**
     * 開始識別
     * @param params:設置識別參數,參考接口說明。
     * @param task_id:開始轉寫的任務ID,SDK生成隨機字符串。
     * @return:參見錯誤碼。
     */
    NuiResultCode nui_file_trans_start(const char *params, char *task_id);
  • nui_file_trans_cancel:取消正在工作的識別任務。

    /**
     * 結束識別
     * @param task_id:需要結束的轉寫任務ID。
     * @return:參見錯誤碼
     */                    
    NuiResultCode nui_file_trans_cancel(const char *task_id);
  • nui_release:釋放SDK。

    /**
     * 釋放SDK資源
     * @return 參見錯誤碼
     */
    -(NuiResultCode) nui_release;
  • NeoNuiSdkDelegate事件代理

    onFileTransEventCallback:SDK轉寫事件回調。

    /**
     * SDK主要事件回調
     * @param nuiEvent: 回調事件,參見如下事件列表
     * @param asrResult: 語音識別結果
     * @param taskId: 一個任務對應的唯一id
     * @param ifFinish: 本輪識別是否結束標志
     * @param retCode: 參見錯誤碼,在出現EVENT_ASR_ERROR事件時有效
     */
    -(void) onFileTransEventCallback:(NuiCallbackEvent)nuiEvent
                           asrResult:(const char *)asr_result
                              taskId:(const char *)task_id
                            ifFinish:(BOOL)finish
                             retCode:(int)code;

    NuiCallbackEvent事件列表:

    名稱

    說明

    EVENT_FILE_TRANS_CONNECTED

    連接文件轉寫服務成功

    EVENT_FILE_TRANS_UPLOADED

    上傳文件成功

    EVENT_FILE_TRANS_RESULT

    識別最終結果

    EVENT_ASR_ERROR

    根據錯誤碼信息判斷出錯原因

調用步驟

  1. 初始化SDK。

  2. 根據業務需求設置參數。

  3. 調用nui_file_trans_start開始識別。

  4. 在EVENT_FILE_TRANS_RESULT事件中獲取最終識別結果。

  5. 結束調用,使用release接口釋放SDK資源。

代碼示例

說明

接口默認采用get_instance方式獲得單例,您如果有多例需求,也可以直接alloc對象進行使用。

NUI SDK初始化

//請注意此處的參數配置,其中賬號相關需要按照genInitParams的說明填入后才可訪問服務
NSString * initParam = [self genInitParams];

[_nui nui_initialize:[initParam UTF8String] logLevel:LOG_LEVEL_VERBOSE saveLog:save_log];

其中,genInitParams生成為String JSON字符串,包含資源目錄和用戶信息。主要包含如下字段。

-(NSString*) genInitParams {
    NSString *strResourcesBundle = [[NSBundle mainBundle] pathForResource:@"Resources" ofType:@"bundle"];
    NSString *bundlePath = [[NSBundle bundleWithPath:strResourcesBundle] resourcePath];
    NSString *id_string = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    NSString *debug_path = [_utils createDir];
    TLog(@"id: %s", [id_string UTF8String]);

    //獲取token方式:
    NSMutableDictionary *dictM = [NSMutableDictionary dictionary];

    //賬號和項目創建
    //  ak_id ak_secret app_key如何獲得,請查看http://m.bestwisewords.com/document_detail/72138.html
    [dictM setObject:@"<您申請創建的app_key>" forKey:@"app_key"]; // 必填

    //方法1:
    //  首先ak_id ak_secret app_key如何獲得,請查看http://m.bestwisewords.com/document_detail/72138.html
    //  然后請看 http://m.bestwisewords.com/document_detail/466615.html 使用其中方案一獲取臨時憑證
    //  此方案簡介: 遠端服務器使用以下方法獲得有效時限的臨時憑證, 下發給移動端進行使用, 保證賬號信息ak_id和ak_secret不被泄露
    //  獲得Token方法(運行在APP服務端): http://m.bestwisewords.com/document_detail/450255.html?spm=a2c4g.72153.0.0.79176297EyBj4k
    [dictM setObject:@"<服務器生成的具有時效性的臨時憑證>" forKey:@"token"]; // 必填

    //方法2:
    //  STS獲取臨時憑證方法暫不支持

    //方法3:(強烈不推薦,存在阿里云賬號泄露風險)
    //  參考NuiSdkUtils類的實現在端上訪問阿里云Token服務獲取SDK進行獲取。請勿將ak/sk存在本地或端側環境。
    //  此方法優點: 端側獲得Token, 無需搭建APP服務器。
    //  此方法缺點: 端側獲得ak/sk賬號信息, 極易泄露。
    //    [_utils getTicket:dictM];

    //工作目錄路徑,SDK從該路徑讀取配置文件
    [dictM setObject:bundlePath forKey:@"workspace"]; // 必填
    //debug目錄。當初始化SDK時的save_log參數取值為true時,該目錄用于保存中間音頻文件
    [dictM setObject:debug_path forKey:@"debug_path"];
    [dictM setObject:id_string forKey:@"device_id"]; // 必填, 推薦填入具有唯一性的id, 方便定位問題
    [dictM setObject:@"https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/FlashRecognizer" forKey:@"url"]; // 必填

    //FullMix = 0   // 選用此模式開啟本地功能并需要進行鑒權注冊
    //FullCloud = 1 // 在線實時語音識別可以選這個
    //FullLocal = 2 // 選用此模式開啟本地功能并需要進行鑒權注冊
    //AsrMix = 3    // 選用此模式開啟本地功能并需要進行鑒權注冊
    //AsrCloud = 4  // 在線一句話識別可以選這個
    //AsrLocal = 5  // 選用此模式開啟本地功能并需要進行鑒權注冊
    [dictM setObject:@"1" forKey:@"service_mode"]; // 必填

    NSData *data = [NSJSONSerialization dataWithJSONObject:dictM options:NSJSONWritingPrettyPrinted error:nil];
    NSString * jsonStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    return jsonStr;
}

開始識別

調用nui_file_trans_start接口開啟識別。

char task_id[33] = {0};
[_nui nui_file_trans_start:param:[param_string UTF8String] taskId:task_id];

回調處理

onFileTransEventCallback:文件識別事件回調,請勿在事件回調中調用SDK的接口,可能引起死鎖。

-(void)onFileTransEventCallback:(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 == EVENT_FILE_TRANS_CONNECTED) {
        [myself showAsrResult:@"連接成功,正在上傳..."];
    } else if (nuiEvent == EVENT_FILE_TRANS_UPLOADED) {
        [myself showAsrResult:@"完成上傳,正在轉寫..."];
    } else if (nuiEvent == EVENT_FILE_TRANS_RESULT) {
        NSString *result = [NSString stringWithUTF8String:asr_result];
        [myself showAsrResult:result];
    } else if (nuiEvent == EVENT_ASR_ERROR) {
        TLog(@"EVENT_ASR_ERROR error[%d]", code);
        NSString *result = [NSString stringWithUTF8String:asr_result];
        [myself showAsrResult:result];
    }

    if (finish) {
        // 任務完成
        [myself showStart];
    }
    return;
}      

取消識別

[_nui nui_file_trans_cancel:[task_id UTF8String]];

常見問題

iOS是否支持后臺處理?

SDK本身不限制前后臺,iOS SDK的樣例工程默認僅支持前臺處理,如果您需要支持后臺處理,可以做如下修改:

  1. 在工程Info.list中添加Required background modes配置,并在該配置下添加Item,Value設置為App plays audio or streams audio/video using AirPlayios導入頭部文件失敗

  2. 在錄音模塊中進入后臺時,不停止錄音。亦即NLSVoiceRecorder.m中_appResignActive接口中不做停止錄音調用。iOS是否支持后臺處理

下載語音交互iOS SDK至本地靜態庫,運行Demo程序測試代碼時,模擬器可以正常運行,真機無法運行,報錯“Reason: no suitable image found. Did find:xxx”如何解決?

建議您刪除手機上對應的APP后,執行xcode clean,并重新嘗試運行。除此以外,還需檢查簽名的正確性,如果簽名不正確,需撤銷原來的inHouse證書,重新制作新的證書和provisioning profile,并將代碼重新簽名,再次打包。

iOS端集成nuisdk運行報mic錯誤如何處理?

請檢查當前錄音設備是否被占用。

使用智能語音服務集成iOS SDK,接入nuisdk.framework后,導入頭文件#import "nuisdk.framework/Headers/NeoNui.h"后項目報錯如何解決?

一般情況下是SDK導入有問題導致,請您確認下圖參數是否已勾選,如果已勾選,建議您將頭文件導入方式換為#import <nuisdk/NeoNui.h>ios導入頭部文件失敗

按照文檔使用SDK接入后報錯“/Users/admin/FlashTranscription_iOS/Fc_ASR.xcodeproj Building for iOS, but the linked and embedded framework 'nuisdk.framework' was built for iOS + iOS Simulator."”如何解決?

可能因為版本過高導致,建議您修改項目配置Validate WorkspaceYes后,重新編譯。按照文檔使用SDK接入后報錯

使用集成語音服務iOS SDK,集成flutter_plugin時報錯“Undefined symbols for architecture arm64: "std::__1::mutex::~mutex()", referenced from: ___cxx_global_var_init in libflutter_tts.a(ringBuf.o)”如何解決?

您可以打開iOS工程下的Podfile文件,修改post_install do |installer|部分的代碼,再次執行構建即可成功。集成語音服務報錯

TRTC實時音視頻和語音識別結合,當同時調用麥克風時可能會發生沖突,導致有一方沒有聲音如何解決?

建議嘗試TRTC的音視頻流,然后使用localStream.getAudioTrack獲取MediaStreamTrack對象,并轉換為符合ASR標準的音頻流,然后通過語音識別SDK發起請求。

使用App集成iOS SDK,提交到App store失敗,提示“Unsupported Architectures. The executable for AliYunSmart.app/Frameworks/nuisdk.framework contains unsupported architectures '[x86_ _64, i386]'. With error code”如何解決?

可能是模擬器架構影響,您可以參考如下方法查看framework版本并移除framework模擬器架構。

  1. 進入到framework目錄。

  2. 輸入命令lipo -info xxxFramework,查看framework的架構版本,如果含有模擬器打包需要把模擬器架構移除。

使用集成語音服務iOS SDK,接入nuisdk.framework后報錯,要修改Legacy Build system才可以運行,如何解決?

建議您修改項目配置Validate WorkspaceYes后,重新編譯。按照文檔使用SDK接入后報錯