From 98b90bd2c1653e7b71d8fdb0ab47c99e34df2e8c Mon Sep 17 00:00:00 2001 From: Hui Zhang Date: Fri, 10 Mar 2023 08:52:45 +0000 Subject: [PATCH] fix glog --- runtime/build.sh | 8 +++- runtime/cmake/glog.cmake | 13 ++++++ runtime/engine/common/base/log_impl.cc | 10 +++++ runtime/engine/common/base/log_impl.h | 47 ++++++++++++++------- runtime/engine/vad/interface/CMakeLists.txt | 2 +- runtime/engine/vad/nnet/CMakeLists.txt | 2 +- runtime/engine/vad/nnet/vad.cc | 41 ++++++++---------- 7 files changed, 81 insertions(+), 42 deletions(-) diff --git a/runtime/build.sh b/runtime/build.sh index f2686c598..7d777fe40 100755 --- a/runtime/build.sh +++ b/runtime/build.sh @@ -10,5 +10,11 @@ mkdir -p ${BUILD_DIR} # please follow the instruction below to install PaddlePaddle image. # https://www.paddlepaddle.org.cn/documentation/docs/zh/install/docker/linux-docker.html #cmake -B build -DBUILD_SHARED_LIBS=OFF -DWITH_ASR=OFF -DWITH_CLS=OFF -DWITH_VAD=ON -DFASTDEPLOY_INSTALL_DIR=/workspace/zhanghui/paddle/FastDeploy/build/Android/arm64-v8a-api-21/install -cmake -B ${BUILD_DIR} -DBUILD_SHARED_LIBS=OFF -DWITH_ASR=OFF -DWITH_CLS=OFF -DWITH_VAD=ON -DFASTDEPLOY_INSTALL_DIR=/workspace/zhanghui/paddle/FastDeploy/build/Linux/x86_64/install +cmake -B ${BUILD_DIR} \ + -DCMAKE_BUILD_TYPE=Debug \ + -DBUILD_SHARED_LIBS=OFF \ + -DWITH_ASR=OFF \ + -DWITH_CLS=OFF \ + -DWITH_VAD=ON \ + -DFASTDEPLOY_INSTALL_DIR=/workspace/zhanghui/paddle/FastDeploy/build/Linux/x86_64/install cmake --build ${BUILD_DIR} -j diff --git a/runtime/cmake/glog.cmake b/runtime/cmake/glog.cmake index cbb97d2d3..60bd3725d 100644 --- a/runtime/cmake/glog.cmake +++ b/runtime/cmake/glog.cmake @@ -7,6 +7,19 @@ else() # UNIX glog URL https://paddleaudio.bj.bcebos.com/build/glog-0.4.0.zip URL_HASH SHA256=9e1b54eb2782f53cd8af107ecf08d2ab64b8d0dc2b7f5594472f3bd63ca85cdc + CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + -DCMAKE_CXX_FLAGS=${GLOG_CMAKE_CXX_FLAGS} + -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} + -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} + -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} + -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG} + -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON + -DWITH_GFLAGS=OFF + -DBUILD_TESTING=OFF + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + ${EXTERNAL_OPTIONAL_ARGS} ) FetchContent_MakeAvailable(glog) include_directories(${glog_BINARY_DIR} ${glog_SOURCE_DIR}/src) diff --git a/runtime/engine/common/base/log_impl.cc b/runtime/engine/common/base/log_impl.cc index ec58917d7..d82955905 100644 --- a/runtime/engine/common/base/log_impl.cc +++ b/runtime/engine/common/base/log_impl.cc @@ -51,6 +51,16 @@ LogMessage::~LogMessage() { } } +std::ostream* LogMessage::nullstream() { + thread_local static std::ofstream os; + thread_local static bool flag_set = false; + if (!flag_set) { + os.setstate(std::ios_base::badbit); + flag_set = true; + } + return &os; +} + void LogMessage::init(const char* file, int line) { time_t t = time(0); char tmp[100]; diff --git a/runtime/engine/common/base/log_impl.h b/runtime/engine/common/base/log_impl.h index 10a6bfe30..2cc96c45c 100644 --- a/runtime/engine/common/base/log_impl.h +++ b/runtime/engine/common/base/log_impl.h @@ -61,13 +61,15 @@ class LogMessage { ~LogMessage(); - std::ostream& stream() { return *stream_; } + std::ostream& stream() { return verbose_ ? *stream_ : *nullstream(); } private: void init(const char* file, int line); + std::ostream* nullstream(); private: std::ostream* stream_; + std::ostream* null_stream_; Severity level_; bool verbose_; bool out_to_file_; @@ -88,14 +90,16 @@ class LogMessage { } // namespace ppspeech -#ifndef NDEBUG -#define DLOG_DEBUG \ - ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::DEBUG, false) +#ifdef NDEBUG +#define DLOG_INFO \ + ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::INFO, false) +#define DLOG_WARNING \ + ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::WARNING, false) +#define DLOG_ERROR \ + ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::ERROR, false) +#define DLOG_FATAL \ + ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::FATAL, false) #else -#define DLOG_DEBUG \ - ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::DEBUG, true) -#endif - #define DLOG_INFO \ ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::INFO, true) #define DLOG_WARNING \ @@ -104,17 +108,30 @@ class LogMessage { ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::ERROR, true) #define DLOG_FATAL \ ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::FATAL, true) +#endif -#define DLOG_0 DLOG_DEBUG -#define DLOG_1 DLOG_INFO -#define DLOG_2 DLOG_WARNING -#define DLOG_3 DLOG_ERROR -#define DLOG_4 DLOG_FATAL -#define LOG(level) DLOG_##level.stream() +#define LOG_INFO \ + ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::INFO, true) +#define LOG_WARNING \ + ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::WARNING, true) +#define LOG_ERROR \ + ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::ERROR, true) +#define LOG_FATAL \ + ppspeech::log::LogMessage(__FILE__, __LINE__, ppspeech::log::FATAL, true) -#define VLOG(verboselevel) LOG(verboselevel) +#define LOG_0 LOG_DEBUG +#define LOG_1 LOG_INFO +#define LOG_2 LOG_WARNING +#define LOG_3 LOG_ERROR +#define LOG_4 LOG_FATAL + +#define LOG(level) LOG_##level.stream() + +#define DLOG(level) DLOG_##level.stream() + +#define VLOG(verboselevel) LOG(verboselevel) #define CHECK(exp) \ ppspeech::log::LogMessage( \ diff --git a/runtime/engine/vad/interface/CMakeLists.txt b/runtime/engine/vad/interface/CMakeLists.txt index 4c3f56740..307000279 100644 --- a/runtime/engine/vad/interface/CMakeLists.txt +++ b/runtime/engine/vad/interface/CMakeLists.txt @@ -3,7 +3,7 @@ set(srcs ) add_library(pps_vad_interface ${srcs}) -target_link_libraries(pps_vad_interface PUBLIC pps_vad) +target_link_libraries(pps_vad_interface PUBLIC pps_vad extern_glog) set(bin_name vad_interface_main) diff --git a/runtime/engine/vad/nnet/CMakeLists.txt b/runtime/engine/vad/nnet/CMakeLists.txt index 7195c21bd..aad5e3475 100644 --- a/runtime/engine/vad/nnet/CMakeLists.txt +++ b/runtime/engine/vad/nnet/CMakeLists.txt @@ -3,7 +3,7 @@ set(srcs ) add_library(pps_vad ${srcs}) -target_link_libraries(pps_vad PUBLIC ${FASTDEPLOY_LIBS} common) +target_link_libraries(pps_vad PUBLIC ${FASTDEPLOY_LIBS} common extern_glog) set(bin_name vad_nnet_main) diff --git a/runtime/engine/vad/nnet/vad.cc b/runtime/engine/vad/nnet/vad.cc index efb2a2bf4..0b77e632a 100644 --- a/runtime/engine/vad/nnet/vad.cc +++ b/runtime/engine/vad/nnet/vad.cc @@ -17,16 +17,8 @@ #include #include +#include "common/base/common.h" -#ifdef NDEBUG -#define LOG_DEBUG \ - ::fastdeploy::FDLogger(true, "[DEBUG]") \ - << __REL_FILE__ << "(" << __LINE__ << ")::" << __FUNCTION__ << "\t" -#else -#define LOG_DEBUG \ - ::fastdeploy::FDLogger(false, "[DEBUG]") \ - << __REL_FILE__ << "(" << __LINE__ << ")::" << __FUNCTION__ << "\t" -#endif namespace ppspeech { @@ -184,8 +176,8 @@ const Vad::State& Vad::Postprocess() { if (outputProb_ < threshold_ && !triggerd_) { // 1. Silence - LOG_DEBUG << "{ silence: " << 1.0 * current_sample_ / sample_rate_ - << " s; prob: " << outputProb_ << " }"; + DLOG(INFO) << "{ silence: " << 1.0 * current_sample_ / sample_rate_ + << " s; prob: " << outputProb_ << " }"; states_.emplace_back(Vad::State::SIL); } else if (outputProb_ >= threshold_ && !triggerd_) { // 2. Start @@ -194,23 +186,24 @@ const Vad::State& Vad::Postprocess() { current_sample_ - current_chunk_size_ - speech_pad_left_samples_; float start_sec = 1.0 * speech_start_ / sample_rate_; speakStart_.emplace_back(start_sec); - LOG_DEBUG << "{ speech start: " << start_sec - << " s; prob: " << outputProb_ << " }"; + DLOG(INFO) << "{ speech start: " << start_sec + << " s; prob: " << outputProb_ << " }"; states_.emplace_back(Vad::State::START); } else if (outputProb_ >= threshold_ - beam_ && triggerd_) { // 3. Continue if (temp_end_ != 0) { // speech prob relaxation, speech continues again - LOG_DEBUG << "{ speech fake end(sil < min_silence_ms) to continue: " - << 1.0 * current_sample_ / sample_rate_ - << " s; prob: " << outputProb_ << " }"; + DLOG(INFO) + << "{ speech fake end(sil < min_silence_ms) to continue: " + << 1.0 * current_sample_ / sample_rate_ + << " s; prob: " << outputProb_ << " }"; temp_end_ = 0; } else { // speech prob relaxation, keep tracking speech - LOG_DEBUG << "{ speech continue: " - << 1.0 * current_sample_ / sample_rate_ - << " s; prob: " << outputProb_ << " }"; + DLOG(INFO) << "{ speech continue: " + << 1.0 * current_sample_ / sample_rate_ + << " s; prob: " << outputProb_ << " }"; } states_.emplace_back(Vad::State::SPEECH); @@ -223,9 +216,9 @@ const Vad::State& Vad::Postprocess() { // check possible speech end if (current_sample_ - temp_end_ < min_silence_samples_) { // a. silence < min_slience_samples, continue speaking - LOG_DEBUG << "{ speech fake end(sil < min_silence_ms): " - << 1.0 * current_sample_ / sample_rate_ - << " s; prob: " << outputProb_ << " }"; + DLOG(INFO) << "{ speech fake end(sil < min_silence_ms): " + << 1.0 * current_sample_ / sample_rate_ + << " s; prob: " << outputProb_ << " }"; states_.emplace_back(Vad::State::SIL); } else { // b. silence >= min_slience_samples, end speaking @@ -234,8 +227,8 @@ const Vad::State& Vad::Postprocess() { triggerd_ = false; auto end_sec = 1.0 * speech_end_ / sample_rate_; speakEnd_.emplace_back(end_sec); - LOG_DEBUG << "{ speech end: " << end_sec - << " s; prob: " << outputProb_ << " }"; + DLOG(INFO) << "{ speech end: " << end_sec + << " s; prob: " << outputProb_ << " }"; states_.emplace_back(Vad::State::END); } }