Browse Source

修改编译脚本,支持编译PC版本的程序

master
zhaohe 2 years ago
parent
commit
04375c8a5a
  1. 1
      .gitignore
  2. 4
      .vscode/settings.json
  3. 8
      CMakeLists.txt
  4. 4
      README.md
  5. 61
      cmakepc.cmake
  6. 2
      dep/zlinuxcomponents
  7. 10
      sh/envsetup.sh
  8. 5
      sh/envsetup_pc.sh
  9. 11
      sh/envsetuppc.sh
  10. 24
      sh/iflytool.sh
  11. 4
      sh/packet.sh
  12. 53
      src/service/voiceprocess/asr_service.hpp

1
.gitignore

@ -4,3 +4,4 @@ out
.cache
./libs
libs/
buildpc

4
.vscode/settings.json

@ -95,6 +95,8 @@
"rope": "cpp",
"slist": "cpp",
"scoped_allocator": "cpp",
"netdb.h": "c"
"netdb.h": "c",
"aiui_cjson.h": "c",
"string.h": "c"
}
}

8
CMakeLists.txt

@ -14,6 +14,12 @@ project(app)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
# BUILD_FOR_TEST_ON_PC == true, include cmakepc.cmake
if(BUILD_FOR_TEST_ON_PC)
include(cmakepc.cmake)
return()
endif()
#
set(C_CPP_FLAGS "${C_CPP_FLAGS} ")
set(C_CPP_FLAGS
@ -91,7 +97,7 @@ zadd_executable_simple(
src/service/voiceprocess/beforewakeup_voiceprocesser.cpp
src/service/voiceprocess/voiceprocess_service.cpp
src/service/voiceprocess/wakeup_processer.cpp
#aiui
# aiui
)
zadd_executable_simple(TARGET alsaplayer_main.out SRC

4
README.md

@ -12,10 +12,12 @@ build/ 应用程序编译目录
## 编译RK3328
```bash
# 初始化环境
./sh/iflytool.sh envsetup rk3328
./sh/iflytool.sh envsetup
# 仅编译
./sh/iflytool.sh build
# 编译调试版本,Cmake使用的是cmakepc.cmake
./sh/iflytool.sh buildpc
# 编译打包部署(整包)
./sh/iflytool.sh --ip <ip> flash

61
cmakepc.cmake

@ -0,0 +1,61 @@
#
set(C_CPP_FLAGS "${C_CPP_FLAGS} ")
set(C_CPP_FLAGS
"${C_CPP_FLAGS} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-unused-variable"
)
set(C_CPP_FLAGS
"${C_CPP_FLAGS} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-unused-variable"
)
set(C_CPP_FLAGS
"${C_CPP_FLAGS} -Werror=return-type -Werror=parentheses -Wfatal-errors -Wno-comment"
)
set(C_CPP_FLAGS "${C_CPP_FLAGS} -Wno-format-overflow")
set(C_CPP_FLAGS "${C_CPP_FLAGS} -O0 -g3 -fPIC -Wall")
# C
set(CMAKE_C_FLAGS "${C_CPP_FLAGS}")
message("CMAKE_C_FLAGS : ${CMAKE_C_FLAGS}")
# CPP
set(CMAKE_CXX_FLAGS "${C_CPP_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pessimizing-move -Wno-reorder")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
message("PROJECT_NAME: ${PROJECT_NAME}")
message("PUBLIC_LINK_DIRECTORIES: ${PUBLIC_LINK_DIRECTORIES}")
message("PUBLIC_INCLUDE_DIRECTORIES: ${PUBLIC_INCLUDE_DIRECTORIES}")
#
include(dep/iflytopcpp/module.cmake)
include(dep/asio1.12.2/module.cmake)
include(dep/websocketpp/module.cmake)
include(dep/zservice_container/module.cmake)
include(dep/zwebservice/module.cmake)
include(dep/zlinuxcomponents/alsaplayer/module.cmake)
include(dep/zlinuxcomponents/rootfs_auto_update/module.cmake)
include(dep/zlinuxcomponents/mycroft_precise/module.cmake)
include(dep/zlinuxcomponents/audio/module.cmake)
include(dep/zlinuxcomponents/aiui_ws/module.cmake)
#
set(DEP_LINK_LIBRARIES
${DEP_LINK_LIBRARIES}
# ffmpeg
avcodec
avdevice
avfilter
avformat
avutil
swresample
swscale
m
# sys
asound
pthread
#
# curlpp curl
)
zadd_executable_simple(TARGET alsaplayer_main.out SRC
dep/zlinuxcomponents/alsaplayer/alsaplayer_main.cpp)
zadd_executable_simple(TARGET audio_recorder_main.out SRC
dep/zlinuxcomponents/audio/audio_recorder_main.cpp)

2
dep/zlinuxcomponents

@ -1 +1 @@
Subproject commit f7277b52ca5ec37ca4de55ac44c8f2d8a5be61ae
Subproject commit cc20701d9b4e719524821a98fb7b0a8334fbe3f9

10
sh/envsetup_rk3328.sh → sh/envsetup.sh

@ -57,8 +57,16 @@ fi
echo "PUBLIC_LINK_DIRECTORIES=${PUBLIC_LINK_DIRECTORIES}"
echo "PUBLIC_INCLUDE_DIRECTORIES=${PUBLIC_INCLUDE_DIRECTORIES}"
# 构造build.sh
# 构造build/build.sh
echo "${CMAKE_BIN} ../ \\" >${PROJECT_PATH}/build/build.sh
echo "-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DPUBLIC_LINK_DIRECTORIES='${PUBLIC_LINK_DIRECTORIES}' \\" >>${PROJECT_PATH}/build/build.sh
echo "-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DPUBLIC_INCLUDE_DIRECTORIES='${PUBLIC_INCLUDE_DIRECTORIES}' \\" >>${PROJECT_PATH}/build/build.sh
chmod +x ${PROJECT_PATH}/build/build.sh
#
# BUILDFORPC
#
# 构造buildpc/build.sh
echo "${CMAKE_BIN} ../ -DBUILD_FOR_TEST_ON_PC=true \\" >${PROJECT_PATH}/buildpc/build.sh
chmod +x ${PROJECT_PATH}/buildpc/build.sh

5
sh/envsetup_pc.sh

@ -1,5 +0,0 @@
# 构造build.sh
echo "cmake ../ \\" >${PROJECT_PATH}/build/build.sh
echo "-DCMAKE_C_COMPILER=gcc \\" >>${PROJECT_PATH}/build/build.sh
echo "-DCMAKE_CXX_COMPILER=g++ \\" >>${PROJECT_PATH}/build/build.sh
chmod +x ${PROJECT_PATH}/build/build.sh

11
sh/envsetuppc.sh

@ -0,0 +1,11 @@
cd ${PROJECT_PATH}/buildpc
wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/cmake-3.13.0-Linux-x86_64.tar.gz"
rm -rf cmake-3.13.0-Linux-x86_64
tar -xvf cmake-3.13.0-Linux-x86_64.tar.gz
mv cmake-3.13.0-Linux-x86_64 cmake
CMAKE_BIN=${PROJECT_PATH}/buildpc/cmake/bin/cmake
# 构造buildpc/build.sh
echo "${CMAKE_BIN} ../ -DBUILD_FOR_TEST_ON_PC=true " >${PROJECT_PATH}/buildpc/build.sh
chmod +x ${PROJECT_PATH}/buildpc/build.sh

24
sh/iflytool.sh

@ -68,14 +68,13 @@ is_build=false
is_flash=false
is_reboot=false
is_envsetup=false
is_buildpc=false
export PROJECT_PATH=$(pwd)
for i in "$@"; do
case $i in
envsetup)
shift # past argument=value
BUILDFOR=$1
is_envsetup=true
shift
;;
@ -121,20 +120,25 @@ for i in "$@"; do
IP=$1
shift
;;
buildpc)
is_buildpc=true
shift
;;
*)
# unknown option
;;
esac
done
# 判断是否是envsetup
if [ "$is_envsetup" = true ]; then
echo "envsetup $BUILDFOR"
echo "mkdir -p ${PROJECT_PATH}/build"
echo "mkdir -p ${PROJECT_PATH}/buildpc"
mkdir -p ${PROJECT_PATH}/build
mkdir -p ${PROJECT_PATH}/buildpc
# 构造环境变量
echo "BUILDFOR=$BUILDFOR" >${PROJECT_PATH}/build/buildenv
#从CmakeLists.txt中读取项目名称 project(app)
PROJECT_NAME=$(grep "project(" ${PROJECT_PATH}/CMakeLists.txt)
@ -147,8 +151,10 @@ if [ "$is_envsetup" = true ]; then
PROJECT_NAME=${PROJECT_NAME%\)*}
echo "PROJECT_NAME=$PROJECT_NAME" >>${PROJECT_PATH}/build/buildenv
echo "PROJECT_NAME=$PROJECT_NAME" >>${PROJECT_PATH}/buildpc/buildenv
${PROJECT_PATH}/sh/envsetup_${BUILDFOR}.sh
${PROJECT_PATH}/sh/envsetup.sh
${PROJECT_PATH}/sh/envsetuppc.sh
echo "envsetup success !"
exit 0
@ -196,9 +202,15 @@ if [ "$is_build" = true ]; then
./build.sh && make -j$(nproc) install
fi
if [ "$is_buildpc" = true ]; then
echo "buildpc"
cd ${PROJECT_PATH}/buildpc
# 根据当前电脑线程数,调用make
./build.sh && make -j$(nproc) install
fi
# 打包
if [ "$is_packet" = true ]; then
echo "packet for ${BUILDFOR}"
cd ${PROJECT_PATH}
${PROJECT_PATH}/sh/packet.sh
fi

4
sh/packet.sh

@ -58,9 +58,7 @@ cd $PROJECT_PATH/env/ && cp --path -rf ./* $PACKET_DIR/
wget_and_unzip xiaomaoxiaomao ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/manufacturer_mycroft/hotworld/xiaomaoxiaomao/xiaomaoxiaomao_module_20220519.tar.gz
mv $PACKET_DIR/xiaomaoxiaomao $PACKET_DIR/wakeupmodule
# 下载唤醒词引擎
if [ "$BUILDFOR" == "rk3328" ]; then
wget_and_unzip precise 192.168.1.2:8021/manufacturer_mycroft/mycroft-precise-release/precise-all_0.3.0_aarch64.tar.gz
fi
wget_and_unzip precise 192.168.1.2:8021/manufacturer_mycroft/mycroft-precise-release/precise-all_0.3.0_aarch64.tar.gz
# 下载唤醒词语音
wget_and_cpy 192.168.1.2:8021/manufacturer_mycroft/hotworld/xiaomaoxiaomao/test_xiaomaoxiaomao.wav

53
src/service/voiceprocess/asr_service.hpp

@ -0,0 +1,53 @@
//
// 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/nlohmann/json.hpp"
#include "iflytopcpp/core/basic/nod/nod.hpp"
#include "iflytopcpp/core/spdlogfactory/logger.hpp"
#include "iflytopcpp/core/thread/thread.hpp"
/**
* @brief
*
* service: AsrService
*
* :
* :
* :
* :
*
*/
namespace iflytop {
using namespace std;
using namespace core;
using namespace nlohmann;
class AsrService : public enable_shared_from_this<AsrService> {
ENABLE_LOGGER(AsrService);
public:
nod::signal<void(json& asrResult)> onAsrResult;
nod::signal<void()> onVoiceEnd;
private:
//
public:
AsrService(){};
void initialize(string appid, string key);
void writeVoice(uint16_t* voice, size_t voiceLen);
void writeVoiceEnd();
};
} // namespace iflytop
Loading…
Cancel
Save