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

離線語音合成使用問題

本文為您介紹離線語音合成的常見問題和解答。

合成初始化失敗通常有哪些原因?

原因

詳述

鑒權失敗

  • 因SDK需要進行鑒權,demo默認沒有配置鑒權信息,所以需要獲取鑒權信息申請配額,詳情請參見開通授權。申請完成后將鑒權信息(ak_id、ak_secret、app_key、sdk_code)填入demo中即可調試。

  • 獲取鑒權信息需要聯網,首次使用SDK請確保網絡暢通。

資源問題

  • 資源路徑設置錯誤。

  • 資源校驗失敗:包括資源版本和引擎不兼容,資源損害等。

常見的鑒權失敗情況有哪些?

注冊失敗的原因通常包括以下情況:

  • 參數設置不正確:例如Appkey錯誤或Appkey對應的項目為設備端解決方案類型。

  • 注冊次數超過限制:管控臺對單臺設備每日注冊次數有限制。

  • 沒有配額:用戶配額超過申請上限。

  • 沒有網絡:注冊是需要聯網的。

下表給出了常見的錯誤信息(初始化失敗時,可以通過“error_msg”獲取):

日志錯誤信息

含義

register_over_frequency

注冊次數超過限額,詳情請參見一個Deviceid一天可以注冊幾次

AccessKeyId is mandatory for this action

AccessKey不正確,配置信息錯誤。

quota not-enough

配額不足。

sdk_type_err

sdk_code不正確。請確認開通的是標準版(software_nls_tts_offline_standard)還是精品版(software_nls_tts_offline)。

Specified signature is not matched with our calculation

請校驗AccessSecret是否填寫正確。

unit_not_exist

Appkey沒有申請過配額。

初始化成功但是播報失敗該如何處理?

請核對語音包名稱及路徑是否設置正確。SDK和語音包是完全獨立的,SDK里并沒有預置語音包。

回調數據長度和時間對應關系是怎樣的?

以采樣率16000的pcm,每次回調8000個字節為例,一秒鐘包含字節數:16000×sizeof(short)=32000個,所以8000個字節對應時間:8000/32000秒=250毫秒。

配額消耗的規則是什么?

設備標識(Deviceid)每發生一次變更,就會消耗一個配額。設備標識是進行管控的有效憑證,SDK使用者要保證設置的device_id有效性和唯一性,否則可能導致占用多個配額,甚至鑒權失敗。

調用者可能要考慮以下場景:

  • 起初獲取不到設備信息,后獲取權限,Deviceid變化。

  • 已獲取設備ID權限,但用戶關閉,Deviceid變化。

  • Android Q升級后,App端突然獲取不到有效設備信息,Deviceid變化。

一個Deviceid一天可以注冊幾次?

單個Deviceid每日只能注冊5次。如已注冊成功,設備卸載App并重新安裝,將消耗一次注冊機會,當5次機會消耗完后,只能等到24:00以后才能重新注冊。

如果App不卸載,第一天登錄和第二天登錄分別會注冊幾次?

App注冊成功之后,若有存儲權限,鑒權信息成功保存至本地,不需要再次聯網注冊,可以永久使用。

配額消耗耗盡還能增加嗎?

當一個Appkey對應的配額消耗完畢時,可以重新購買配額,系統將按照合同約定,增加相應的配額 。

申請離線配額后,能直接訪問在線語音服務嗎?

申請離線配額后,不關聯在線語音服務(如在線合成、在線語音識別等),如果想使用在線語音服務需要額外購買相應的服務。

已經投入使用的在線語音服務Appkey可以用于申請離線配額嗎?

除設備端解決方案外的其他Appkey可以。如果之前使用的是設備端解決方案的Appkey,需要重新申請一個僅語音合成的Appkey,詳情請參見創建項目

SDK是如何進行打點的?

  • 為什么進行打點?

    • 方便問題排查:因為上線后通常會關閉log,能獲取的信息比較有限,打點能更方便地排查問題。

    • 為發音人優化提供有效依據:例如xiaoyun這個發音人,如果大部分用戶都調音量,說明該語音包默認音量偏小。

    • 統計latency,優化設備合成速度:如latency過高,可能會出現卡頓等問題,可以給用戶提供優化方案;如大部分設備都出現卡頓,則引導調整算法等。

  • 打點會影響主流程嗎?

    不會。打點是嘗試性的,打點時機在初始化成功和初始化失敗時,沒有網絡則直接退出。為減少資源消耗,打點內容小于1 KB。

  • 打點內容包含哪些?

    本著最小資源消耗,及充分保護用戶隱私的原則,SDK打點不涉及用戶任何信息,主要內容包括:

    類別

    觸發時機

    內容

    初始化錯誤原因

    初始化失敗時

    初始化失敗詳細信息

    • errror_msg:詳細的錯誤信息

    • auth_time:鑒權耗時

    • inittime:初始化耗時

    統計信息

    初始化成功時:用戶已經開始進行合成,因此異步嘗試發送上次合成任務的統計信息

    • sdk_ver:使用的SDK版本

    • font:發音人

    • format:音頻格式

    • speed:語速

    • volume:音量

    • latency:延遲,反映設備性能

    • sample_rate:采樣率

    • length:合成長度

    • call_time:合成次數

  • 打點可以關閉嗎?

    打點默認是開啟的,SDK提供了關閉打點的接口。如果用戶認為影響了主流程或者仍然擔心隱私問題,可在生成初始化參數的時候,傳入字段enable_et,并將值設為false,即可關閉該功能。代碼如下:

    /**
       * @brief :按此方式填寫鑒權信息
       * @param assets:資源存儲路徑,指配置文件及資源存放路徑
       * @return std::string :打包成json格式的鑒權信息
       */
      std::string GenAuthInfo(const char *assets) {
        nuijson::Value root;
        std::string info;
        if (assets) {
          /*
           * 調用接口前,需配置環境變量,通過環境變量讀取訪問憑證。
           * 智能語音交互的AccessKey ID、AccessKey Secret和AppKey的環境變量名:NLS_AK_ENV、NLS_SK_ENV、NLS_APPKEY_ENV
           */
          root["ak_id"] = getenv("NLS_AK_ENV");  // ak_id也就是阿里云賬號的AccessKey ID,和ak_secret對應,請注意不要設置成阿里云主賬號ID(uid)
          root["ak_secret"] = getenv("NLS_SK_ENV");
          root["app_key"] = getenv("NLS_APPKEY_ENV");
          root["workspace"] = assets;
          root["sdk_code"] = "software_nls_tts_offline";  // 離線tts使用software_nls_tts_offline
          root["device_id"] = "012345678911a";   // 設備唯一標識,如Mac地址,cpu序列號等
          root["enable_et"] = "false";   // 打點默認是開啟的,當設為false時關閉
          nuijson::FastWriter writer;
          info = writer.write(root);
          printf("info:%s\n", info.c_str());
        }
        return info;
      }
  • 打點示例

    • 一個初始化錯誤的打點內容如下:

    {
      "common": {
        "appcode": "026",
        "funcode": "6888",  // 該SDK具備功能
        "sdk_code": "software_nls_tts_offline",
        "sdk_ver": "V2.5.14-026-20210327"  // 對應SDK版本號
      },
      "content": {
        "tts": [
          {
            "auth_time": "277",   // 鑒權花費277ms,該值為監控鑒權服務提供有效依據
            "error_msg": "(170007)Specified access key is not found.-->(170800)register-failed-->(140008)tts-auth failed",  // 詳細的錯誤信息,一目了然是用戶沒有設置appkey,加快問題排查速度
            "init_time": "277"    // 整個初始化耗時,包括“鑒權+資源加載”
          }
        ]
      }
    }
    • 一個基于統計的打點內容如下:

    {
      "common": {
        "appcode": "026",
        "funcode": "4840",
        "sdk_code": "software_nls_tts_offline",
        "sdk_ver": "V2.5.14-026-20210326"
      },
      "content": {
        "tts": [
          {
            "call_time": "1",
            "font": "xiaoyun",
            "format": "pcm",
            "latency": "6",
            "length": "168640",
            "mode": "local",
            "pitch": "0",
            "sample_rate": "16000",
            "speed": "1",
            "volume": "1"
          }
        ]
      }
    }

NTP的作用是什么?

NTP:網絡時間協議(Network Time Protocol)

TTS SDK在首次使用時,需要訪問阿里云鑒權,阿里云要求本地時間和阿里云時間差不能超過15分鐘,否則會鑒權失敗,因此SDK使用NTP模塊獲取網絡時間。

需要注意的是,因為NTP本身和阿里云交互有一定時間消耗,網絡差的時候可能長達十幾秒。因此需要業務方綜合評估,如果端側時間不會存在異常,或者概率極小的設備時間異常對業務沒有影響,可以在初始化的時候通過將enable_ntp設為false,即關閉NTP。