#include #include #include #include "zlinuxcomponents/aiui_ws/aiui_service.hpp" #include "zlinuxcomponents/alsaplayer/AudioPlayerAlsaImpl.hpp" #include "zlinuxcomponents/alsaplayer/smart_soundbox_player.hpp" #include "zlinuxcomponents/zmainhelper.hpp" // #include "configs/config.hpp" #include "iflytopcpp/core/spdlogfactory/logger.hpp" #include "iflytopcpp/core/thread/thread.hpp" #include "version.hpp" #include "zlinuxcomponents/rootfs_auto_update/rootfs_auto_update.hpp" #include "zservice_container/zservice_container.hpp" #include "zwebservice/zwebservice.hpp" // #include "service/device_io_service.hpp" #include "service/device_io_service_mock.hpp" #include "service/light_control_service.hpp" #include "service/main_control_service.hpp" #include "service/report_service.hpp" #include "service/voiceprocess/audio_recoder_service.hpp" #include "service/voiceprocess/beforeasr_voiceprocesser.hpp" #include "service/voiceprocess/beforewakeup_voiceprocesser.hpp" #include "service/voiceprocess/voiceprocess_service.hpp" #include "service/voiceprocess/wakeup_processer.hpp" // using namespace iflytop; using namespace core; using namespace std; using namespace clipp; ZMAIN(); /*********************************************************************************************************************** * =======================================================Main======================================================== * ***********************************************************************************************************************/ void Main::onSIGINT() { exit(0); } int Main::main(int argc, char *argv[]) { string g_host_server_ip; string g_device_id; #if 0 auto cli = ( // (required("-device_id") & value("device_id", g_device_id)).doc("device_id") // ); if (!parse(argc, argv, cli)) { cout << make_man_page(cli, argv[0]); exit(-1); } #endif logger->info("system setup start."); spdlog::flush_on(spdlog::level::debug); logger->info("#"); logger->info("# company:{}", "ifytop"); logger->info("# version:{}", VERSION); logger->info("#"); // BUILD_AND_REG_SERRVICE(Config); logger->info("build {}.....", "Config"); shared_ptr Config_val(new iflytop::Config()); ServiceContrainer::get().regService(Config_val); GET_SERVICE(iflytop::Config)->initialize(); if (!g_device_id.empty()) GET_SERVICE(iflytop::Config)->set_deviceId(g_device_id); /** * @brief 比较rootfs目录中的文件和系统中对应路径的文件是否一致,如果不一致则替换 * * 例如 * ./rootfs/etc/asound.conf 和 /etc/asound.conf 不一致,则替换 * */ auto rootfsAutoUpdate = make_shared(); rootfsAutoUpdate->compareAndReplace(); logger->info("rootfs changed:{}", rootfsAutoUpdate->isChanged() ? "yes" : "no"); if (rootfsAutoUpdate->isChanged()) { logger->info("reboot system."); logger->warn("not auto reboot, please reboot manually."); // system("reboot"); } /** * @brief DeviceIOService初始化 */ #if 0 BUILD_AND_REG_SERRVICE(DeviceIOService); #else BUILD_AND_REG_MOCK_SERRVICE(DeviceIOService, DeviceIOServiceMock); #endif GET_SERVICE(DeviceIOService)->initialize(); /** * @brief 音频处理相关组建初始化 */ // 音频采集 BUILD_AND_REG_SERRVICE(AudioRecoderService); GET_SERVICE(AudioRecoderService)->initialize("recorder", 5, 16000, SND_PCM_FORMAT_S16_LE); // BeforeWakeupVoiceProcesser BUILD_AND_REG_SERRVICE(BeforeWakeupVoiceProcesser); GET_SERVICE(BeforeWakeupVoiceProcesser)->initialize(); // BeforeAsrVoiceProcesser BUILD_AND_REG_SERRVICE(BeforeasrVoiceProcesser); GET_SERVICE(BeforeasrVoiceProcesser)->initialize(); // WakeupProcesser BUILD_AND_REG_SERRVICE(WakeupProcesser); GET_SERVICE(WakeupProcesser)->initialize("xiaomaoxiaomao/xiaomaoxiaomao.pb"); // AsrProcesser const char *appid = "5938b7c7"; // 应用ID,在AIUI开放平台创建并设置 const char *key = "19c1f7becc78eedc7826b485aabe30de"; // 接口密钥,在AIUI开放平台查看 json paramj; paramj["result_level"] = "plain"; paramj["auth_id"] = "ac30105366ea460f9ff08ddac0c4f71e"; paramj["data_type"] = "text"; paramj["scene"] = "main_box"; paramj["sample_rate"] = "16000"; paramj["context"] = R"({"sdk_support":["nlp","tts","vad","iat"]})"; BUILD_AND_REG_SERRVICE(AiuiService); GET_SERVICE(AiuiService)->initialize(appid, key, paramj.dump()); // 播放器-SmartSoundBoxPlayer BUILD_AND_REG_SERRVICE(SmartSoundBoxPlayer); // GET_SERVICE(SmartSoundBoxPlayer)->initialize(80); // VoiceProcessService BUILD_AND_REG_SERRVICE(VoiceProcessService); GET_SERVICE(VoiceProcessService)->initialize(); /** * @brief 其他服务 */ BUILD_AND_REG_SERRVICE(ZWebService); GET_SERVICE(ZWebService)->initialize(); BUILD_AND_REG_SERRVICE(LightControlService); GET_SERVICE(LightControlService)->initialize(); GET_SERVICE(LightControlService)->start(); BUILD_AND_REG_SERRVICE(ReportService); GET_SERVICE(ReportService)->initialize(); GET_SERVICE(ReportService)->start(); BUILD_AND_REG_SERRVICE(MainControlService); GET_SERVICE(MainControlService)->initialize(); logger->info("system setup end."); while (true) sleep(1000); }