From 8fdc4e5e8f5491b0e3f88144fc831eb4acfe2b05 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Mon, 11 Sep 2023 22:06:44 +0800 Subject: [PATCH] update --- demo/aiui_service/res/test.wav | Bin 0 -> 48044 bytes demo/aiui_service/test_aiui.cpp | 124 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 demo/aiui_service/res/test.wav create mode 100644 demo/aiui_service/test_aiui.cpp diff --git a/demo/aiui_service/res/test.wav b/demo/aiui_service/res/test.wav new file mode 100644 index 0000000000000000000000000000000000000000..b4fecd6c9eb2d12eba218809c7ec3a8966af9567 GIT binary patch literal 48044 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 literal 0 HcmV?d00001 diff --git a/demo/aiui_service/test_aiui.cpp b/demo/aiui_service/test_aiui.cpp new file mode 100644 index 0000000..dc8e839 --- /dev/null +++ b/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 m_thread; +/*************************************************************************************/ +shared_ptr 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()); + 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()) { + 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(); + + 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); +} \ No newline at end of file