Browse Source

add wakeup_processer

master
zhaohe 2 years ago
parent
commit
8226125840
  1. 9
      CMakeLists.txt
  2. 0
      src/service/voiceprocess/asr_service.cpp
  3. 0
      src/service/voiceprocess/asr_service.hpp
  4. 0
      src/service/voiceprocess/beforeasr_voiceprocesser.cpp
  5. 0
      src/service/voiceprocess/beforeasr_voiceprocesser.hpp
  6. 0
      src/service/voiceprocess/beforewakeup_voiceprocesser.cpp
  7. 0
      src/service/voiceprocess/beforewakeup_voiceprocesser.hpp
  8. 0
      src/service/voiceprocess/voiceprocess_service.cpp
  9. 0
      src/service/voiceprocess/voiceprocess_service.hpp
  10. 53
      src/service/voiceprocess/wakeup_processer.cpp
  11. 57
      src/service/voiceprocess/wakeup_processer.hpp

9
CMakeLists.txt

@ -78,9 +78,14 @@ zadd_executable_simple(
src/service/device_io_service_mock.cpp src/service/device_io_service_mock.cpp
src/service/main_control_service.cpp src/service/main_control_service.cpp
src/service/light_control_service.cpp src/service/light_control_service.cpp
src/service/report_service.cpp)
src/service/report_service.cpp
src/service/voiceprocess/asr_service.cpp
src/service/voiceprocess/beforeasr_voiceprocesser.cpp
src/service/voiceprocess/beforewakeup_voiceprocesser.cpp
src/service/voiceprocess/voiceprocess_service.cpp
src/service/voiceprocess/wakeup_processer.cpp)
zadd_executable_simple(TARGET alsaplayer_main.out SRC zadd_executable_simple(TARGET alsaplayer_main.out SRC
dep/zlinuxcomponents/alsaplayer/alsaplayer_main.cpp) dep/zlinuxcomponents/alsaplayer/alsaplayer_main.cpp)
zadd_executable_simple(TARGET audio_recorder_main.out SRC zadd_executable_simple(TARGET audio_recorder_main.out SRC
dep/zlinuxcomponents/audio/audio_recorder_main.cpp)
dep/zlinuxcomponents/audio/audio_recorder_main.cpp)

0
src/service/voiceprocess/asr_service.cpp

0
src/service/voiceprocess/asr_service.hpp

0
src/service/voiceprocess/beforeasr_voiceprocesser.cpp

0
src/service/voiceprocess/beforeasr_voiceprocesser.hpp

0
src/service/voiceprocess/beforewakeup_voiceprocesser.cpp

0
src/service/voiceprocess/beforewakeup_voiceprocesser.hpp

0
src/service/voiceprocess/voiceprocess_service.cpp

0
src/service/voiceprocess/voiceprocess_service.hpp

53
src/service/voiceprocess/wakeup_processer.cpp

@ -0,0 +1,53 @@
#include "wakeup_processer.hpp"
using namespace std;
using namespace iflytop;
using namespace core;
#define ORDER_PATH "precise-engine/precise-engine"
#define WAKEUP_MODULE_PATH "module/wakeup.pb"
#define CHUNK_SIZE "2048"
void WakeupProcesser::initialize() {
wakeupProcesser.reset(new MycroftPreciseWapper());
wakeupProcesser->initialize(ORDER_PATH, WAKEUP_MODULE_PATH, CHUNK_SIZE);
}
void WakeupProcesser::dumpwakeup_info(float source) {
if (source > 0.9) {
logger->info("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++{}", source);
} else if (source > 0.8) {
logger->info("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ {}", source);
} else if (source > 0.7) {
logger->info("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ {}", source);
} else if (source > 0.6) {
logger->info("++++++++++++++++++++++++++++++++++++++++++++++++++ {}", source);
} else if (source > 0.4) {
logger->info("++++++++++++++++++++++++++++++++++++++++ {}", source);
} else if (source > 0.3) {
logger->info("++++++++++++++++++++++++++++++ {}", source);
} else if (source > 0.2) {
logger->info("++++++++++++++++++++ {}", source);
} else if (source > 0.1) {
logger->info("++++++++++ {}", source);
}
}
void WakeupProcesser::processVoice(uint8_t* voice, size_t voiceLen) {
wakeupProcesser->processVoice(voice, voiceLen);
wakeupProcesser->regWakeupCB([&](float wakeupscore) {
if (!wakeupflag) {
if (wakeupscore > 0.1) {
dumpwakeup_info(wakeupscore);
}
if (!wakeupflag && wakeupscore > 0.60) {
wakeupflag = true;
logger->info("detect wakeup signal {}", wakeupscore);
last_wakeup_timepoint = tu_steady().now();
onWakeupSignal(wakeupscore);
}
} else {
if (wakeupscore < 0.5 && tu_steady().elapsedTimeMs(last_wakeup_timepoint) >= 1500) {
wakeupflag = false;
}
}
});
}

57
src/service/voiceprocess/wakeup_processer.hpp

@ -0,0 +1,57 @@
//
// Created by zwsd
//
#pragma once
#include <fstream>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
#include "iflytopcpp/core/basic/nod/nod.hpp"
#include "iflytopcpp/core/components/time_util.hpp"
#include "iflytopcpp/core/spdlogfactory/logger.hpp"
#include "iflytopcpp/core/thread/thread.hpp"
#include "zlinuxcomponents/mycroft_precise/mycroft_precise_wapper.hpp"
/**
* @brief
*
* service: WakeupProcesser
*
* :
* :
* :
* :
*
*/
namespace iflytop {
using namespace std;
using namespace core;
class WakeupProcesser : public enable_shared_from_this<WakeupProcesser> {
ENABLE_LOGGER(WakeupProcesser);
shared_ptr<MycroftPreciseWapper> wakeupProcesser;
bool wakeupflag = false;
tp_steady last_wakeup_timepoint;
function<void(float wakeup_score)> m_cbfunc;
public:
nod::signal<void(float wakeup_score)> onWakeupSignal;
public:
WakeupProcesser(){};
void initialize();
void processVoice(uint8_t* voice, size_t voiceLen);
private:
void dumpwakeup_info(float source);
};
} // namespace iflytop
Loading…
Cancel
Save