RK3568笔记八十: Linux 小智AI环境搭建

若该文为原创文章,转载请注明原文出处。

最近小智AI火了,韦老师出了 Linux 小智 AI 聊天机器人 版本,想移植到 RK3568上,

由于和韦老师硬件不同,所以需要交叉编译一些库,为后续移植做准备。

一、环境

1、硬件: 正点原子ATK-DLRK3568

2、环境:buildroot

3、虚拟机:正点原子自带

二、源码

100askTeam/xiaozhi-linux: Embedded Linux AI Xiaozhi Intelligent voice dialogue.

根据源码,需要编译的库有:speexdsp, websocketpp, boost, curl, opensll,opus等。

三、交叉编译

1、speexdsp编译

1)、下载代码

https://www.speex.org/downloads/

2)、编译

tar xvf speexdsp-1.2.1.tar.gz
 cd speexdsp-1.2.1/
export CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc
./configure --prefix=/opt/arm_libspeexdsp --host=arm-linux   --disable-oggtest
make
sudo make install

为了方便,所以编译出来的include和lib文件全部拷贝到工具链下,不用在指定include和lib位置

2、boost编译

使用websocketpp此库需要使用boost库进行编译

编译参考:websocketpp的使用和boost库的交叉编译_websocke交叉编译-CSDN博客

cd boost_1_73_0
export CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc
./bootstrap.sh --show-libraries  //查看当前boost库中已经包含的库
/bootstrap.sh --prefix=/opt/lib_boost # 使用此命令可以指定boost库的安装如果不使用默认路径是/usr/local/include 和 /usr/local/lib,分别存放头文件和各种库

# 需要修改文件“project-config.jam”
找到并修改:
if ! gcc in [ feature.values <toolset> ]
{
    using gcc : : /opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-g++ ;
}

./b2
./b2 install

编译会出错,但库有编译出来,同样把include和lib拷贝到atk-dlrk356x-toolchain的对应目录下

3、libopenssl编译

网上直接下载源码

编译过程:

export CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc
./config no-asm -shared --prefix=/opt/arm_openssl
make 
sudo make install


出错: arm-linux-gnueabihf-gcc: error: unrecognized command line option '-m64 ”-m64“错误,原因是虚拟机是64位,要编译的是32位。 处理: 进入makefile,删除文件里所有-m64,在重新编译。 为什么要编译ssl,编译srt时需要用到 。

4、curl编译

cd curl-7.85.0

CPPFLAGS="-I/opt/arm_openssl/include" \
LDFLAGS="-L/opt/arm_openssl/lib" \
LIBS="-ldl" \
./configure --host=arm-linux \
CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc \
CXX=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-g++ \
--with-ssl \
--enable-shared \
--enable-static \
--disable-dict \
--disable-ftp \
--disable-imap \
--disable-ldap \
--disable-ldaps \
--disable-pop3 \
--disable-proxy \
--disable-rtsp \
--disable-smtp \
--disable-telnet \
--disable-tftp \
--disable-zlib \
--without-ca-bundle \
--without-gnutls \
--without-libidn \
--without-librtmp \
--without-libssh2 \
--without-nss \
--prefix=/opt/arm_libcurl

make 

sudo make install

5、文件拷贝

把编译后的include和lib拷贝到atk-dlrk356x-toolchain的对应目录下

/opt/atk-dlrk356x-toolchain/aarch64-buildroot-linux-gnu/sysroot/usr/include

/opt/atk-dlrk356x-toolchain/aarch64-buildroot-linux-gnu/sysroot/usr/lib

6、websocketapp库

下载https://github.com/zaphoyd/websocketpp

下载后,把websocketpp目录下的文件全部拷贝到/opt/atk-dlrk356x-toolchain/aarch64-buildroot-linux-gnu/sysroot/usr/include

对接WebSocket时会用到。

至此,所有的库都编译完成了,接下来是编译xiaozhi-linux源码和测试。

移植编译过程中还用到了opus库,但在工具链里已经有了库文件,所以没重新交叉编译。

把编译好的库也需要拷贝到开发板上。

如有侵权,或需要完整代码,请及时联系博。

### 小 AI 语音控制功能实现 为了实现小 AI 的语音控制功能,可以参考以下方法和技术路径: #### 1. 硬件准备 硬件部分主要依赖于支持 Wi-Fi 和蓝牙的微控制器单元(MCU),例如 ESP32。ESP32 是一款高性能、低成本的双核 MCU,适合用于物联网项目[^1]。它可以通过外接麦克风阵列或其他音频输入设备捕获用户的语音指令。 #### 2. 集成小 AI SDK 小 AI 提供了专门的 SDK 来帮助开发者快速集成其语音识别和自然语言处理能力。以下是具体步骤: - **获取 API Key** 访问小 AI 官方网站并注册账户,在个人中心页面找到对应的 API 密钥。此密钥将被用来验证请求的身份合法性[^3]。 - **下载官方文档与示例代码** 前往小 AI 的开发者门户下载最新版本的 SDK 文档及配套示例程序。这些资源通常会包含详细的接口说明以及如何初始化服务的指导。 #### 3. 软件开发环境搭建 推荐使用 Visual Studio Code (VSCode) 并安装 ESP-IDF 插件来构建应用程序。确保所选工具链兼容当前项目的架构需求,并且建议运行在 Linux 操作系统下以获得更优性能表现。 #### 4. 编写核心逻辑 下面是一个简单的 Python 示例脚本展示如何利用 RESTful 接口向小服务器发送待解析的声音数据片段: ```python import requests import json def send_voice_to_xiaozhi(api_key, audio_data): url = "https://api.xiaozhi.ai/v1/recognize" headers = { 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json' } payload = { 'audio_content': audio_data.decode('utf-8'), # Assuming binary data is base64 encoded string here. 'language_code': 'zh-CN', 'sample_rate_hertz': 16000, 'encoding': 'LINEAR16' } response = requests.post(url=url, headers=headers, data=json.dumps(payload)) result = response.json() return result['text'] if __name__ == "__main__": api_key = "<your_api_key>" with open("test_audio.wav", "rb") as file: audio_bytes = file.read() recognized_text = send_voice_to_xiaozhi(api_key=api_key, audio_data=audio_bytes) print(f"Recognized Text: {recognized_text}") ``` 上述代码展示了怎样通过 POST 请求把录制好的 WAV 文件上传至云端进行分析处理。 #### 5. 测试与优化 完成初步编码之后,需反复测试整个流程直至达到预期效果为止。注意调整参数比如采样率(sample rate),声道数(channels count)等可能影响最终准确性的重要因素。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷忆枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值