国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
C++ SDK 2.0

本文檔中的SDK只適用于7月5日新發(fā)布的2.0版語音服務(wù),如果您是之前開通的,要使用此SDK需要新開通2.0版服務(wù)。否則請(qǐng)繼續(xù)使用舊版SDK,并按照1.0版文檔對(duì)接。

C++ SDK 2.0實(shí)時(shí)語音識(shí)別提供了異步識(shí)別方式同步識(shí)別方式。異步識(shí)別方式通過設(shè)置回調(diào)函數(shù)來獲取識(shí)別結(jié)果,數(shù)據(jù)的發(fā)送和識(shí)別結(jié)果的獲取運(yùn)行在不同的線程中;同步識(shí)別方式通過get接口即可獲取識(shí)別結(jié)果,數(shù)據(jù)的發(fā)送和識(shí)別結(jié)果的獲取可以運(yùn)行在同一個(gè)線程中。

下載安裝

SDK 下載

C++ SDK 可從CppSdk2.0中下載,壓縮文件包含以下幾個(gè)部分:

  • CMakeLists.txt demo工程的CMakeList文件。
  • build 編譯目錄。
  • demo 包含demo.cpp,各語音服務(wù)配置文件。各文件描述見下表:
文件名描述
sdkDemo.cppwindows專用,默認(rèn)為一句話識(shí)別功能demo,如需可自行替換成其它功能(編碼格式:UTF-8 代簽名)
speechRecognizerDemo.cpp一句話異步識(shí)別demo
speechRecognizerSyncDemo.cpp一句話同步識(shí)別demo
speechSynthesizerDemo.cpp語音合成demo
speechTranscriberDemo.cpp實(shí)時(shí)語音異步識(shí)別demo
speechTranscriberSyncDemo.cpp實(shí)時(shí)語音同步識(shí)別demo
testX.wav測(cè)試音頻
  • include 包含sdk頭文件,以及部分第三方頭文件。各文件描述見下表
文件名描述
opensslopenssl
pthreadpthread線(windows下使用)
uuiduuid(linux下使用)
opusopus
jsoncppjsoncpp
nlsClient.hSDK實(shí)例
nlsEvent.h事件說明
speechRecognizerRequest.h一句話異步識(shí)別接口
speechRecognizerSyncRequest.h一句話同步識(shí)別接口
speechSynthesizerRequest.h語音合成接口
speechTranscriberRequest.h實(shí)時(shí)語音異步識(shí)別接口
speechTranscriberSyncRequest.h實(shí)時(shí)語音同步識(shí)別接口
iNlsRequest.hRequest基礎(chǔ)
  • lib 包含sdk,以及第三方依賴庫。linux.tar.gz為linux平臺(tái)lib壓縮包。windows.zip為windows平臺(tái)lib壓縮包。其中根據(jù)平臺(tái)不同,可以選擇linux版本32/64位libnlsCppSdk.so(glibc2.5及以上, Gcc4, Gcc5), windows版本32/64位nlsCppSdk.dll(VS2013、VS2015)。
  • readme.txt SDK說明。
  • release.log 版本說明。
  • version 版本號(hào)。
  • build.sh demo編譯腳本。

依賴庫:

SDK 依賴 openssl(l-1.0.2j),opus(1.2.1),jsoncpp(0.10.6),uuid(1.0.3),pthread(2.9.1)。依賴庫放置在 path/to/sdk/lib 下。

注意:path/to/sdk/lib/linux/uuid僅在linux下使用。path/to/sdk/lib/windwos/1x.0/pthread僅在windows下使用。SDK壓縮包內(nèi)提供的依賴庫為64位,不提供32位。在32位下,需要用戶自行編譯。

編譯運(yùn)行

  1. Linux平臺(tái)下cmake編譯:
  2. 1: 請(qǐng)確認(rèn)本地系統(tǒng)以安裝Cmake,最低版本2.6
  3. 2: cd path/to/sdk/lib
  4. 3: tar -zxvpf linux.tar.gz
  5. 4: cd path/to/sdk
  6. 3: 執(zhí)行[./build.sh]編譯demo
  7. 4: 編譯完畢,cd path/to/sdk/demo,執(zhí)行[./stDemo your-token your-appkey]
  8. 如果不支持cmake,可嘗試手動(dòng)編譯:
  9. 1: cd path/to/sdk/lib
  10. 2: tar -zxvpf linux.tar.gz
  11. 3: cd path/to/sdk/demo
  12. 4: g++ -o stDemo speechTranscriberDemo.cpp -I./path/to/sdk/include -L./path/to/sdk/lib/linux -lnlsCppSdk -lssl -lcrypto -lopus -luuid -lpthread -ljsoncpp -D_GLIBCXX_USE_CXX11_ABI=0
  13. 5: export LD_LIBRARY_PATH=path/to/sdk/lib/linux/
  14. 6: ./stDemo your-token your-appkey
  15. Windows平臺(tái)需要用戶自己搭建工程。

Token獲取方式可見鏈接:獲取訪問令牌

注意:

  1. linux環(huán)境下,運(yùn)行環(huán)境最低要求:Glibc 2.5及以上, Gcc4、Gcc5
  2. windows下,目前支持VS2013,VS2015

關(guān)鍵接口

基礎(chǔ)接口

  • NlsClient:語音處理Client,相當(dāng)于所有語音相關(guān)處理類的Factory,全局創(chuàng)建一個(gè)實(shí)例即可。
  • NlsEvent:事件對(duì)象,用戶可以從中獲取Request狀態(tài)碼、云端返回結(jié)果、失敗信息等。

異步識(shí)別接口

  • SpeechTranscriberRequest:實(shí)時(shí)音頻流識(shí)別請(qǐng)求對(duì)象。
  • SpeechTranscriberCallback:回調(diào)事件函數(shù)集合的對(duì)象,語音結(jié)果、異常等回調(diào)的統(tǒng)一入口。

同步識(shí)別接口

  • SpeechTranscriberSyncRequest: 一句話識(shí)別同步請(qǐng)求對(duì)象。

更多介紹參見api文檔鏈接:C++ API接口說明

C++ SDK自定義錯(cuò)誤碼

錯(cuò)誤碼錯(cuò)誤描述解決方案
10000001SSL: couldn’t create a ……!建議重試
10000002openssl官方錯(cuò)誤描述根據(jù)描述提示處理之后,建議重試
10000003系統(tǒng)錯(cuò)誤描述根據(jù)系統(tǒng)錯(cuò)誤描述提示處理
10000004URL: The url is empty.檢查是否設(shè)置 云端URL地址
10000005URL: Could not parse WebSocket url檢查是否正確設(shè)置 云端URL地址
10000006MODE: unsupport mode.檢查時(shí)都正確設(shè)置了語音功能模式
10000007JSON: Json parse failed.服務(wù)端發(fā)送錯(cuò)誤響應(yīng)內(nèi)容,請(qǐng)?zhí)峁﹖ask_id,并反饋給阿里云
10000008WEBSOCKET: unkown head type.服務(wù)端發(fā)送錯(cuò)誤WebSocket類型,請(qǐng)?zhí)峁﹖ask_id,并反饋給阿里云
10000009HTTP: connect failed.與云端連接失敗,請(qǐng)檢查網(wǎng)絡(luò),在重試
HTTP協(xié)議官方狀態(tài)碼HTTP: Got bad status.根據(jù)HTTP協(xié)議官方描述提示處理
系統(tǒng)錯(cuò)誤碼IP: ip address is not valid.根據(jù)系統(tǒng)錯(cuò)誤描述提示處理
系統(tǒng)錯(cuò)誤碼ENCODE: convert to utf8 error.根據(jù)系統(tǒng)錯(cuò)誤描述提示處理
10000010please check if the memory is enough內(nèi)存不足. 請(qǐng)檢查本地機(jī)器內(nèi)存
10000011Please check the order of execution接口調(diào)用順序錯(cuò)誤(接收到Failed/complete事件時(shí),SDK內(nèi)部會(huì)關(guān)閉連接。此時(shí)在調(diào)用send會(huì)上報(bào)錯(cuò)誤。)
10000012StartCommand/StopCommand Send failed參數(shù)錯(cuò)誤. 請(qǐng)檢查參數(shù)設(shè)置是否正確
10000013The sent data is null or dataSize <= 0.發(fā)送錯(cuò)誤. 請(qǐng)檢查發(fā)送參數(shù)是否正確
10000014Start invoke failed.start超時(shí)錯(cuò)誤. 請(qǐng)調(diào)用stop,釋放資源,重新開始識(shí)別流程.
10000015connect failed等connect失敗. 釋放資源,重新開始識(shí)別流程.

代碼示例

實(shí)時(shí)語音異步識(shí)別示例

完整示例,詳見SDK壓縮包中的demo目錄speechTranscriberDemo.cpp文件。

  1. // 工作線程
  2. void* pthreadFunc(void* arg) {
  3. int sleepMs = 0;
  4. ParamCallBack cbParam;
  5. SpeechTranscriberCallback* callback = NULL;
  6. // 0: 從自定義線程參數(shù)中獲取token, 配置文件等參數(shù).
  7. ParamStruct* tst = (ParamStruct*)arg;
  8. if (tst == NULL) {
  9. cout << "arg is not valid." << endl;
  10. return NULL;
  11. }
  12. // 初始化自定義回調(diào)參數(shù), 僅作為示例表示參數(shù)傳遞, 在demo中不起任何作用
  13. cbParam.iExg = 1;
  14. cbParam.sExg = "exg.";
  15. /* 打開音頻文件, 獲取數(shù)據(jù) */
  16. ifstream fs;
  17. fs.open(tst->fileName.c_str(), ios::binary | ios::in);
  18. if (!fs) {
  19. cout << tst->fileName << " isn't exist.." << endl;
  20. return NULL;
  21. }
  22. /*
  23. * 1: 創(chuàng)建并設(shè)置回調(diào)函數(shù)
  24. */
  25. callback = new SpeechTranscriberCallback();
  26. callback->setOnTranscriptionStarted(onTranscriptionStarted, &cbParam); // 設(shè)置識(shí)別啟動(dòng)回調(diào)函數(shù)
  27. callback->setOnTranscriptionResultChanged(onTranscriptionResultChanged, &cbParam); // 設(shè)置識(shí)別結(jié)果變化回調(diào)函數(shù)
  28. callback->setOnTranscriptionCompleted(onTranscriptionCompleted, &cbParam); // 設(shè)置語音轉(zhuǎn)寫結(jié)束回調(diào)函數(shù)
  29. callback->setOnSentenceBegin(onSentenceBegin, &cbParam); // 設(shè)置一句話開始回調(diào)函數(shù)
  30. callback->setOnSentenceEnd(onSentenceEnd, &cbParam); // 設(shè)置一句話結(jié)束回調(diào)函數(shù)
  31. callback->setOnTaskFailed(onTaskFailed, &cbParam); // 設(shè)置異常識(shí)別回調(diào)函數(shù)
  32. callback->setOnChannelClosed(onChannelClosed, &cbParam); // 設(shè)置識(shí)別通道關(guān)閉回調(diào)函數(shù)
  33. /*
  34. * 創(chuàng)建實(shí)時(shí)音頻流識(shí)別SpeechTranscriberRequest對(duì)象, 參數(shù)為callback對(duì)象.
  35. * request對(duì)象在一個(gè)會(huì)話周期內(nèi)可以重復(fù)使用.
  36. * 會(huì)話周期是一個(gè)邏輯概念. 比如Demo中, 指讀取, 發(fā)送完整個(gè)音頻文件數(shù)據(jù)的時(shí)間.
  37. * 音頻文件數(shù)據(jù)發(fā)送結(jié)束時(shí), 可以releaseTranscriberRequest()釋放對(duì)象.
  38. * createTranscriberRequest(), start(), sendAudio(), stop(), releaseTranscriberRequest()請(qǐng)?jiān)?/code>
  39. * 同一線程內(nèi)完成, 跨線程使用可能會(huì)引起異常錯(cuò)誤.
  40. */
  41. /*
  42. * 2: 創(chuàng)建實(shí)時(shí)音頻流識(shí)別SpeechTranscriberRequest對(duì)象
  43. */
  44. SpeechTranscriberRequest* request = NlsClient::getInstance()->createTranscriberRequest(callback);
  45. if (request == NULL) {
  46. cout << "createTranscriberRequest failed." << endl;
  47. delete callback;
  48. callback = NULL;
  49. return NULL;
  50. }
  51. request->setAppKey(tst->appkey.c_str()); // 設(shè)置AppKey, 必填參數(shù), 請(qǐng)參照官網(wǎng)申請(qǐng)
  52. request->setFormat("pcm"); // 設(shè)置音頻數(shù)據(jù)編碼格式, 可選參數(shù),目前支持pcm, opu. 默認(rèn)是pcm
  53. request->setSampleRate(16000); // 設(shè)置音頻數(shù)據(jù)采樣率, 可選參數(shù),目前支持16000, 8000. 默認(rèn)是16000
  54. request->setIntermediateResult(false); // 設(shè)置是否返回中間識(shí)別結(jié)果, 可選參數(shù). 默認(rèn)false
  55. request->setPunctuationPrediction(false); // 設(shè)置是否在后處理中添加標(biāo)點(diǎn), 可選參數(shù). 默認(rèn)false
  56. request->setInverseTextNormalization(false); // 設(shè)置是否在后處理中執(zhí)行數(shù)字轉(zhuǎn)寫, 可選參數(shù). 默認(rèn)false
  57. request->setSemanticSentenceDetection(false); // 設(shè)置是否語義斷句, 可選參數(shù). 默認(rèn)false
  58. request->setMaxSentenceSilence(500); // 設(shè)置vad閥值, 可選參數(shù). 合法參數(shù)范圍200~2000(ms), 默認(rèn)值800ms
  59. request->setToken(tst->token.c_str()); // 設(shè)置賬號(hào)校驗(yàn)token, 必填參數(shù)
  60. /*
  61. * 3: start()為阻塞操作, 發(fā)送start指令之后, 會(huì)等待服務(wù)端響應(yīng), 或超時(shí)之后才返回
  62. */
  63. if (request->start() < 0) {
  64. cout << "start() failed." << endl;
  65. NlsClient::getInstance()->releaseTranscriberRequest(request); // start()失敗,釋放request對(duì)象
  66. delete callback;
  67. callback = NULL;
  68. return NULL;
  69. }
  70. // 文件是否讀取完畢, 或者接收到TaskFailed, closed, completed回調(diào), 終止send
  71. while (!fs.eof()) {
  72. char data[FRAME_SIZE] = {0};
  73. fs.read(data, sizeof(char) * FRAME_SIZE);
  74. int nlen = fs.gcount();
  75. /*
  76. * 4: 發(fā)送音頻數(shù)據(jù). sendAudio返回-1表示發(fā)送失敗, 需要停止發(fā)送. 對(duì)于第三個(gè)參數(shù):
  77. * request對(duì)象format參數(shù)為pcm時(shí), 使用false即可. format為opu, 使用壓縮數(shù)據(jù)時(shí), 需設(shè)置為true.
  78. */
  79. nlen = request->sendAudio(data, nlen, false);
  80. if (nlen < 0) {
  81. // 發(fā)送失敗, 退出循環(huán)數(shù)據(jù)發(fā)送
  82. cout << "send data fail." << endl;
  83. break;
  84. } else {
  85. cout << "send len:" << nlen << " ." << endl;
  86. }
  87. /*
  88. *語音數(shù)據(jù)發(fā)送控制:
  89. *語音數(shù)據(jù)是實(shí)時(shí)的, 不用sleep控制速率, 直接發(fā)送即可.
  90. *語音數(shù)據(jù)來自文件, 發(fā)送時(shí)需要控制速率, 使單位時(shí)間內(nèi)發(fā)送的數(shù)據(jù)大小接近單位時(shí)間原始語音數(shù)據(jù)存儲(chǔ)的大小.
  91. */
  92. sleepMs = getSendAudioSleepTime(6400, 16000, 1); // 根據(jù) 發(fā)送數(shù)據(jù)大小,采樣率,數(shù)據(jù)壓縮比 來獲取sleep時(shí)間
  93. /*
  94. * 5: 語音數(shù)據(jù)發(fā)送延時(shí)控制
  95. */
  96. #ifdef _WIN32
  97. Sleep(sleepMs);
  98. #else
  99. usleep(sleepMs * 1000);
  100. #endif
  101. }
  102. // 關(guān)閉音頻文件
  103. fs.close();
  104. /*
  105. * 6: 數(shù)據(jù)發(fā)送結(jié)束,關(guān)閉識(shí)別連接通道.
  106. * stop()為阻塞操作, 在接受到服務(wù)端響應(yīng), 或者超時(shí)之后, 才會(huì)返回.
  107. */
  108. request->stop();
  109. /*
  110. * 7: 識(shí)別結(jié)束, 釋放request對(duì)象
  111. */
  112. NlsClient::getInstance()->releaseTranscriberRequest(request);
  113. /*
  114. * 8: 釋放callback對(duì)象
  115. */
  116. delete callback;
  117. callback = NULL;
  118. return NULL;
  119. }

實(shí)時(shí)語音同步識(shí)別示例

完整示例,詳見SDK壓縮包中的demo目錄speechTranscriberSyncDemo.cpp文件。

  1. // 工作線程
  2. void* pthreadFunc(void* arg) {
  3. int sleepMs = 0;
  4. // 0: 從自定義線程參數(shù)中獲取token, 配置文件等參數(shù).
  5. ParamStruct* tst = (ParamStruct*)arg;
  6. if (tst == NULL) {
  7. cout << "arg is not valid." << endl;
  8. return NULL;
  9. }
  10. // 打開音頻文件, 獲取數(shù)據(jù)
  11. FILE* file = fopen(tst->fileName.c_str(), "rb");
  12. if (NULL == file) {
  13. cout << tst->fileName << " isn't exist." << endl;
  14. return NULL;
  15. }
  16. fseek(file, 0, SEEK_END);
  17. int fileSize = ftell(file); // 獲取音頻文件的長度
  18. fseek(file, 0, SEEK_SET);
  19. /*
  20. * 創(chuàng)建實(shí)時(shí)音頻流同步識(shí)別SpeechTranscriberSyncRequest對(duì)象.
  21. * request對(duì)象在一個(gè)會(huì)話周期內(nèi)可以重復(fù)使用.
  22. * 會(huì)話周期是一個(gè)邏輯概念. 比如Demo中, 指讀取, 發(fā)送完整個(gè)音頻文件數(shù)據(jù)的時(shí)間.
  23. * 音頻文件數(shù)據(jù)發(fā)送結(jié)束時(shí), 可以releaseTranscriberSyncRequest()釋放對(duì)象.
  24. * createTranscriberSyncRequest(), sendSyncAudio(), getTranscriberResult(), releaseTranscriberSyncRequest()請(qǐng)?jiān)?/code>
  25. * 同一線程內(nèi)完成, 跨線程使用可能會(huì)引起異常錯(cuò)誤.
  26. */
  27. /*
  28. * 1: 創(chuàng)建實(shí)時(shí)音頻流識(shí)別SpeechTranscriberSyncRequest對(duì)象
  29. */
  30. SpeechTranscriberSyncRequest* request = NlsClient::getInstance()->createTranscriberSyncRequest();
  31. if (request == NULL) {
  32. cout << "createTranscriberSyncRequest failed." << endl;
  33. return NULL;
  34. }
  35. request->setAppKey(tst->appkey.c_str()); // 設(shè)置AppKey, 必填參數(shù), 請(qǐng)參照官網(wǎng)申請(qǐng)
  36. request->setFormat("pcm"); // 設(shè)置音頻數(shù)據(jù)編碼格式, 可選參數(shù),目前支持pcm, opu. 默認(rèn)是pcm
  37. request->setSampleRate(16000); // 設(shè)置音頻數(shù)據(jù)采樣率, 可選參數(shù),目前支持16000, 8000. 默認(rèn)是16000
  38. request->setIntermediateResult(true); // 設(shè)置是否返回中間識(shí)別結(jié)果, 可選參數(shù). 默認(rèn)false
  39. request->setPunctuationPrediction(true); // 設(shè)置是否在后處理中添加標(biāo)點(diǎn), 可選參數(shù). 默認(rèn)false
  40. request->setInverseTextNormalization(true); // 設(shè)置是否在后處理中執(zhí)行數(shù)字轉(zhuǎn)寫, 可選參數(shù). 默認(rèn)false
  41. request->setSemanticSentenceDetection(false); // 設(shè)置是否語義斷句, 可選參數(shù). 默認(rèn)false
  42. request->setMaxSentenceSilence(500); // 設(shè)置vad閥值, 可選參數(shù). 合法參數(shù)范圍200~2000(ms), 默認(rèn)值800ms
  43. request->setToken(tst->token.c_str()); // 設(shè)置賬號(hào)校驗(yàn)token, 必填參數(shù)
  44. int sentSize = 0; // 已發(fā)送的文件數(shù)據(jù)大小
  45. while (sentSize < fileSize) {
  46. char data[FRAME_SIZE] = {0};
  47. int size = fread(data, sizeof(char), sizeof(char) * FRAME_SIZE, file);
  48. AudioDataStatus status;
  49. if (sentSize == 0) {
  50. status = AUDIO_FIRST; // 發(fā)送第一塊音頻數(shù)據(jù)
  51. }
  52. else if (sentSize + size < fileSize) {
  53. status = AUDIO_MIDDLE; // 發(fā)送中間音頻數(shù)據(jù)
  54. }
  55. else if (sentSize + size == fileSize) {
  56. status = AUDIO_LAST; // 發(fā)送最后一塊音頻數(shù)據(jù)
  57. }
  58. sentSize += size;
  59. /*
  60. * 2: 發(fā)送音頻數(shù)據(jù). sendAudio返回-1表示發(fā)送失敗, 可在getTranscriberResult函數(shù)中獲得失敗的具體信息
  61. * 對(duì)于第四個(gè)參數(shù), request對(duì)象format參數(shù)為pcm時(shí), 使用false即可. format為opu, 使用壓縮數(shù)據(jù)時(shí), 需設(shè)置為true.
  62. */
  63. request->sendSyncAudio(data, size, status);
  64. /*
  65. *語音數(shù)據(jù)發(fā)送控制:
  66. *語音數(shù)據(jù)是實(shí)時(shí)的, 不用sleep控制速率, 直接發(fā)送即可.
  67. *語音數(shù)據(jù)來自文件, 發(fā)送時(shí)需要控制速率, 使單位時(shí)間內(nèi)發(fā)送的數(shù)據(jù)大小接近單位時(shí)間原始語音數(shù)據(jù)存儲(chǔ)的大小.
  68. */
  69. sleepMs = getSendAudioSleepTime(6400, 16000, 1); // 根據(jù) 發(fā)送數(shù)據(jù)大小,采樣率,數(shù)據(jù)壓縮比 來獲取sleep時(shí)間
  70. /*
  71. * 3: 語音數(shù)據(jù)發(fā)送延時(shí)控制
  72. */
  73. #ifdef _WIN32
  74. Sleep(sleepMs);
  75. #else
  76. usleep(sleepMs * 1000);
  77. #endif
  78. /*
  79. * 4: 獲取識(shí)別結(jié)果
  80. * 接收到EventType為TaskFailed, closed, completed事件類型時(shí),停止發(fā)送數(shù)據(jù)
  81. * 部分錯(cuò)誤可收到多次TaskFailed事件,只要發(fā)生TaskFailed事件,請(qǐng)停止發(fā)送數(shù)據(jù)
  82. */
  83. bool isFinished = false;
  84. std::queue<NlsEvent> eventQueue;
  85. request->getTranscriberResult(&eventQueue);
  86. while (!eventQueue.empty()) {
  87. NlsEvent _event = eventQueue.front();
  88. eventQueue.pop();
  89. NlsEvent::EventType type = _event.getMsgType();
  90. switch (type)
  91. {
  92. case NlsEvent::TranscriptionStarted:
  93. cout << "************* Transcriber started *************" << endl;
  94. break;
  95. case NlsEvent::SentenceBegin:
  96. cout << "************* Detected sentence begin *************" << endl;
  97. cout << "sentence index: " << _event.getSentenceIndex() << endl;
  98. cout << "sentence time: " << _event.getSentenceTime() << endl;
  99. break;
  100. case NlsEvent::TranscriptionResultChanged:
  101. cout << "************* Transcriber has sentence middle result *************" << endl;
  102. cout << "sentence index: " << _event.getSentenceIndex() << endl;
  103. cout << "sentence time: " << _event.getSentenceTime() << endl;
  104. cout << "result: " << _event.getResult() << endl;
  105. break;
  106. case NlsEvent::SentenceEnd:
  107. cout << "************* Detected sentence end *************" << endl;
  108. cout << "sentence index: " << _event.getSentenceIndex() << endl;
  109. cout << "sentence time: " << _event.getSentenceTime() << endl;
  110. cout << "result: " << _event.getResult() << endl;
  111. break;
  112. case NlsEvent::TranscriptionCompleted:
  113. cout << "************* Transcriber completed *************" << endl;
  114. isFinished = true;
  115. break;
  116. case NlsEvent::TaskFailed:
  117. cout << "************* TaskFailed *************" << endl;
  118. isFinished = true;
  119. break;
  120. case NlsEvent::Close:
  121. cout << "************* Closed *************" << endl;
  122. isFinished = true;
  123. break;
  124. default:
  125. break;
  126. }
  127. cout << "allMessage: " << _event.getAllResponse() << endl;
  128. }
  129. if (isFinished) {
  130. break;
  131. }
  132. }
  133. // 關(guān)閉音頻文件
  134. fclose(file);
  135. /*
  136. * 5: 識(shí)別結(jié)束, 釋放request對(duì)象
  137. */
  138. NlsClient::getInstance()->releaseTranscriberSyncRequest(request);
  139. return NULL;
  140. }
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服