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

Android SDK

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

前提條件

下載安裝

  1. 下載SDK。

    對象

    說明

    SDK名稱

    智能語音交互移動端SDK

    開發者

    阿里云計算有限公司

    SDK版本

    2.6.3-01B

    SDK包名

    com.alibaba.idst.nui

    SDK更新時間

    2024-12-19

    SDK大小

    MinSizeRel/nuisdk-release.aar

    7.2MB

    RelWithDebugInfo/nuisdk-release.aar

    9.7MB

    SDK MD5值

    MinSizeRel/nuisdk-release.aar

    c8e84d882a776797179b07cb55325a17

    RelWithDebugInfo/nuisdk-release.aar

    3bd1e2c2423c23e6522b7bc3ac072ec9

    隱私政策

    智能語音交互產品隱私政策

    SDK整合包下載

    下載Android SDK

  2. 解壓ZIP包,在app/libs目錄下獲取AAR格式的SDK包,將AAR包集成到您的工程項目中進行依賴。

  3. 使用Android Studio打開此工程查看參考代碼實現,其中示例代碼為FileTranscriberActivity.java文件,替換Appkey和Token后可直接運行。

SDK關鍵接口

  • initialize:初始化SDK。

    /**
     * 初始化SDK,SDK為單例,請先釋放后再次進行初始化。請勿在UI線程調用,可能會引起阻塞
     * @param callback: 事件監聽回調,參見下文回調說明
     * @param parameters: 初始化參數,參見接口說明
     * @param level: log打印級別,值越小打印越多
     * @return: 參見錯誤碼
     */
    public synchronized int initialize(final INativeFileTransCallback callback,
                                       String parameters,
                                       final Constants.LogLevel level)

    其中,INativeFileTransCallback類型需要實現的回調是onFileTransEventCallback。

    onFileTransEventCallback:文件識別事件回調。

    /**
         * SDK主要事件回調
         * @param event: 回調事件,參見如下事件列表
         * @param resultCode: 參見錯誤碼,在出現EVENT_ASR_ERROR事件時有效
         * @param arg2: 保留參數
         * @param asrResult: 語音識別結果
         * @param taskId: 轉寫任務ID
         */
        void onFileTransEventCallback(NuiEvent event, final int resultCode, final int arg2, AsrResult asrResult, String taskId);

    事件列表:

    名稱

    說明

    EVENT_FILE_TRANS_CONNECTED

    連接文件識別服務成功

    EVENT_FILE_TRANS_UPLOADED

    上傳文件成功

    EVENT_FILE_TRANS_RESULT

    識別最終結果

    EVENT_ASR_ERROR

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

  • setParams:以JSON格式設置SDK參數。

    /**
     * 以JSON格式設置參數
     * @param params: 參見接口說明
     * @return: 參見錯誤碼
     */
    public synchronized int setParams(String params)
  • startFileTranscriber:開始文件識別。

    /**
     * 開始識別
     * @param params: 識別參數,參見接口說明
     * @param taskId: 開始轉寫的任務ID,SDK生成隨機字符串
     * @return: 參見錯誤碼
     */
    public synchronized int startFileTranscriber(String params, byte[] taskId)
  • stopFileTranscriber:結束識別。

    /**
     * 結束識別
     * @return: 參見錯誤碼
     */
    public synchronized int stopFileTranscriber(String taskId)
  • release:釋放SDK。

    /**
     * 釋放SDK資源
     * @return: 參見錯誤碼
     */
    public synchronized int release()

調用步驟

  1. 初始化SDK。

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

  3. 調用startFileTranscriber開始識別。

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

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

Proguard配置

如果代碼使用了混淆,請在proguard-rules.pro中配置:

-keep class com.alibaba.idst.nui.*{*;}

代碼示例

說明

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

NUI SDK初始化

//這里主動調用完成SDK配置文件的拷貝
CommonUtils.copyAssetsData(this);
//獲取工作路徑
String assets_path = CommonUtils.getModelPath(this);
Log.i(TAG, "use workspace " + assets_path);

int ret = nui_instance.initialize(this, genInitParams(assets_path, debug_path), Constants.LogLevel.LOG_LEVEL_VERBOSE);

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

private String genInitParams(String workpath, String debugpath) {
    String str = "";
    try{
        //獲取token方式:
        JSONObject object = new JSONObject();

        //賬號和項目創建
        //  ak_id ak_secret app_key如何獲得,請查看http://bestwisewords.com/document_detail/72138.html
        object.put("app_key", "<您申請創建的app_key>"); // 必填

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

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

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

        object.put("url", "https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/FlashRecognizer"); // 必填

        object.put("device_id", Utils.getDeviceId()); // 必填, 推薦填入具有唯一性的id, 方便定位問題。也可用提供Utils.getDeviceId()
        //工作目錄路徑,SDK從該路徑讀取配置文件
        object.put("workspace", workpath); // 必填, 且需要有讀寫權限
        //debug目錄。當初始化SDK時的save_log參數取值為true時,該目錄用于保存中間音頻文件
        object.put("debug_path", debugpath);

        // FullMix = 0   // 選用此模式開啟本地功能并需要進行鑒權注冊
        // FullCloud = 1
        // FullLocal = 2 // 選用此模式開啟本地功能并需要進行鑒權注冊
        // AsrMix = 3    // 選用此模式開啟本地功能并需要進行鑒權注冊
        // AsrCloud = 4
        // AsrLocal = 5  // 選用此模式開啟本地功能并需要進行鑒權注冊
        // 這里只能選擇FullMix和FullCloud
        object.put("service_mode", Constants.ModeFullCloud); // 必填

        str = object.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return str;
}

開始識別

調用startFileTranscriber方法開啟識別。

byte[] task_id = new byte[32];
NativeNui.GetInstance().startFileTranscriber(genDialogParams(), taskId);

private String genDialogParams() {
    String params = "";
    try {
        JSONObject dialog_param = new JSONObject();
        //若想在運行時切換app_key
        //dialog_param.put("app_key", "");
        dialog_param.put("file_path", "/sdcard/test.wav");

        JSONObject nls_config = new JSONObject();
        nls_config.put("format", "wav");

        dialog_param.put("nls_config", nls_config);
        params = dialog_param.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }

    Log.i(TAG, "dialog params: " + params);
    return params;
}

回調處理

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

public void onFileTransEventCallback(Constants.NuiEvent event, final int resultCode, final int arg2, AsrResult asrResult, String taskId) {
        Log.i(TAG, "event=" + event);
    	if (event == Constants.NuiEvent.EVENT_FILE_TRANS_RESULT) {
            showText(asrView, asrResult.asrResult);
        } else if (event == Constants.NuiEvent.EVENT_ASR_ERROR) {
            ;
        }
    }

常見問題

Android SDK調用文件上傳轉寫極速版,調用int startFileTranscriber(String params, byte[] task_id)后無法收到回調,報錯提示“EventE/iDST::NativeNui: no java instance, maybe already released”。

您需要核實:

  • 資源文件是否復制成功。

  • CommonUtils.copyAssetsData函數是否已調用。

Android SDK錄音文件識別極速版,通過任務ID查詢任務狀態用哪個API?

不支持通過任務ID查詢任務狀態,任務中處理安卓端回調就是當前任務的狀態。

Android SDK是否可以上傳OPUS音頻數據,實現實時語音轉文字?

ASR中一句話識別和錄音文件極速版支持OPUS數據,實時語音轉文字僅支持PCM編碼、16 bit采樣位數、單聲道(mono)。具體詳情,請參見接口說明

調用Android SDK時,手機報錯提示“audio recoder not init”如何解決?

您可以通過以下方式排查:

  • 檢查AudioRecord是否初始化正常。

  • 檢查語音播放器是否有問題。

  • 系統的錄音模塊代碼如下,也可單獨編寫AudioRecord錄音代碼,測試是否正常。編寫AudioRecord錄音代碼