Browse Source

update

master
zhaohe 2 years ago
parent
commit
8fdc4e5e8f
  1. BIN
      demo/aiui_service/res/test.wav
  2. 124
      demo/aiui_service/test_aiui.cpp

BIN
demo/aiui_service/res/test.wav

124
demo/aiui_service/test_aiui.cpp

@ -0,0 +1,124 @@
#include "configs/gconfig.hpp"
#include "iflytop/components/aiui_ws/aiui_service.hpp"
#include "iflytop/components/alsaplayer/smart_soundbox_player.hpp"
#include "iflytop/core/core.hpp"
#include "iflytoplinuxsdk/src/iflytop/components/zclicpp/clipp.h"
using namespace iflytop;
using namespace core;
using namespace std;
using namespace clipp;
unique_ptr<Thread> m_thread;
/*************************************************************************************/
shared_ptr<AiuiService> aiuiService;
void processAIUIRX(json &rxjson) {
auto logger = GET_LOGGER(main);
string action = rxjson["action"];
if (action == "started") {
logger->info("rx started:{}", rxjson.dump());
}
//
else if (action == "result") {
string sub = rxjson["data"]["sub"];
if (sub == "nlp") {
logger->info("rx nlp:{}", rxjson.dump());
} else if (sub == "tts") {
logger->info("rx tts:frame {}", rxjson["data"]["json_args"]["frame_id"].get<int>());
bool isendFrame = false;
string ttsurl;
aiuiService->parseTTSContent(rxjson, isendFrame, ttsurl);
if (isendFrame) {
logger->info("rx tts end,url={}", ttsurl);
}
} else if (sub == "iat") {
logger->info("rx iat:{}", rxjson.dump());
} else if (sub == "vad") {
logger->info("rx vad:{}", rxjson.dump());
} else {
logger->info("rx {}:{}", sub, rxjson.dump());
}
}
//
else if (action == "error") {
logger->info("rx error:{}", rxjson.dump());
}
//
else if (action == "vad") {
} else {
logger->info("rx unkown:{}", rxjson.dump());
}
try {
if (rxjson["data"]["is_finish"].get<bool>()) {
logger->info("end tx");
}
} catch (...) {
}
}
int main(int argc, char *argv[]) {
spdlog::flush_on(spdlog::level::debug);
auto logger = GET_LOGGER(main);
aiuiService = make_shared<AiuiService>();
string appid;
string appkey;
string inputwav;
auto cli = ( //
(value("input wav file", inputwav)), (required("--appid") & value("aiui appid", appid)).doc("aiui appid,find it on https://aiui.xfyun.cn/"), //
(required("--appkey") & value("aiui appkey", appkey)).doc("aiui appkey,find it on https://aiui.xfyun.cn/") //
);
if (!parse(argc, argv, cli)) {
cout << make_man_page(cli, argv[0]);
return -1;
}
json paramj;
paramj["result_level"] = "plain";
paramj["auth_id"] = "ac30105366ea460f9ff08ddac0c4f71e"; // 相当于设备ID,设备唯一
paramj["data_type"] = "audio";
paramj["aue"] = "raw";
paramj["vad_info"] = "end";
paramj["cloud_vad_eos"] = "700";
paramj["close_delay"] = "200";
paramj["scene"] = "main_box";
paramj["sample_rate"] = "16000";
paramj["context"] = R"({"sdk_support":["nlp","tts","vad","iat"]})";
aiuiService->initialize(appid, appkey, paramj.dump());
aiuiService->aiuiInit();
aiuiService->onMessage.connect([&](json rxjson) { processAIUIRX(rxjson); });
/**
* @brief
*/
FILE *fp = fopen(inputwav.c_str(), "rb");
if (!fp) {
printf("cant not find test.pcm !!!\n");
exit(-1);
}
char buff[1280];
memset(buff, '\0', 1280);
fread(buff, sizeof(char), 44, fp);
while (fread(buff, sizeof(char), 1280, fp) > 0) {
logger->info("write audio data {}", 1280);
aiuiService->aiuiWrite(buff, 1280);
usleep(40 * 1000);
memset(buff, '\0', 1280);
}
logger->info("write audio data end");
aiuiService->aiuiFinished();
fclose(fp);
sleep(5);
logger->info("aiui_destroy");
aiuiService->aiuiDestroy();
logger->info("aiui_destroy end");
while (true) sleep(1000);
}
Loading…
Cancel
Save