# WebrtcAudioProcessing **Repository Path**: shunzi20220/WebrtcAudioProcessing ## Basic Information - **Project Name**: WebrtcAudioProcessing - **Description**: WebRTC 音频3A算法模块移植到RV1126开发板上测试 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-01-23 - **Last Updated**: 2025-10-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## webrtc 音频3A算法测试 ### 安装依赖abseil-cpp CMakeLists.txt 添加 ```cmake set(CMAKE_SYSTEM_NAME Linux) SET(CMAKE_BUILD_TYPE "Release") SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") set(BUILD_SHARED_LIBS ON) set(CMAKE_CROSSCOMPILING ON) set(ABSL_PROPAGATE_CXX_STD ON) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -fPIC") # arm 32 # SET(CMAKE_C_COMPILER /work/xxx/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc) # SET(CMAKE_CXX_COMPILER /work/xxx/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++) # SET(CMAKE_FIND_ROOT_PATH /work/xxx/ramdisk/sysroot/sysroot-glibc-linaro-2.23-2017.05-arm-linux-gnueabihf/) set(TOOLCHAIN_DIR /opt/atk-dlrv1126-toolchain) set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/usr/bin/arm-linux-gnueabihf-g++) set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/usr/bin/arm-linux-gnueabihf-gcc) set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR}/arm-buildroot-linux-gnueabihf/sysroot) set(CMAKE_SYSTEM_PROCESSOR arm.v7) # aarch64 #SET(CMAKE_C_COMPILER /work/xxx/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc) #SET(CMAKE_CXX_COMPILER /work/xxx/host-tools/gcc/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++) #SET(CMAKE_FIND_ROOT_PATH /work/xxx/ramdisk/sysroot/sysroot-glibc-linaro-2.23-2017.05-aarch64-linux-gnu/) #set(CMAKE_SYSTEM_PROCESSOR aarch64) ``` 交叉编译 ```sh cd abseil-cpp-lts_2023_01_25 mkdir build mkdir abseil-cpp cd build cmake .. -DCMAKE_INSTALL_PREFIX=../abseil-cpp -DGFLAGS=OFF -DMINIGLOG=ON -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DABSL_PROPAGATE_CXX_STD=ON -DCMAKE_CXX_FLAGS=-fPIC make -j8 make install ``` ### 编译webrtc-audio-processing gitlab地址:https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing 修改为cmake工程 交叉编译 ```sh export CC=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-gcc export CXX=/opt/atk-dlrv1126-toolchain/usr/bin/arm-linux-gnueabihf-g++ mkdir build cd build cmake .. make -j8 # 或者 sh build.sh ``` ### 测试 ```sh # 编译 cd test sh build.sh #把链接的so拷贝到开发板 #export LD_LIBRARY_PATH=/demo/bin/abseil-cpp/lib adb push libabsl_* /oem/usr/lib adb push libwebrtc_audio_processing.so /oem/usr/lib # 在开发板播放pcm rkmedia_ao_test -c 2 -s 1152 -v 100 -i ./3a.pcm # ffplay播放pcm ffplay -ar 16000 -ch_layout stereo -f s16le ./3a.pcm ``` 1. 经过3A算法后,消音 2. 3A算法 6ms/次 ### 参考资料 《实时语音处理实践指南》葛世超等著 [webrtc 3A移植以及实时处理](https://blog.csdn.net/qq_42956179/article/details/143912034) [webrtc-audio-processing pulseaudio最新版本1.0交叉编译到ARM](https://blog.csdn.net/longruic/article/details/119787659) https://github.com/shichaog/WebRTC-audio-processing https://github.com/jiemojiemo/webrtc-audio-processing-cmake SpeexDSP:https://blog.csdn.net/weixin_40355471/article/details/126198285