当前位置: 首页 > news >正文

在Luckfox上使用EdgeVoice语音助手

本文主要介绍如何使用百元级开发板 Luckfox Pico Ultra W 安装 EdgeVoice ,通过 Azure OpenAI 打造一个实时语音助手,实现媲美商业产品的交互体验。

1. 硬件准备

EdgeVoice 项目地址:https://github.com/sangyuxiaowu/EdgeVoice?wt.mc_id=DT-MVP-5005195

1.1 核心硬件

  • Luckfox Pico Ultra W(约120):板载贴片麦克风,支持蓝牙、Wi-Fi 6、摄像头接入等
  • MX1.25 2P 接线的 8Ω 1W 喇叭(约5):播放语音
  • 1.5寸 NV3030B 显示屏(约50,可选):显示交互界面

请添加图片描述

选用这个开发板的原因是因为它的性价比很高,同时支持蓝牙、Wi-Fi 6、摄像头接入等,并直接提供了板载贴片麦克风和喇叭接口,非常适合用来做语音助手。同时,它的体积小巧,携带方便,可以后期设计 3D 打印外壳,做成一个小巧的语音助手。

1.2 系统准备

需要根据 Luckfox 官方文档,烧录好最新的 Ubuntu 系统固件,具体操作可参考官方文档。同时需要安装好 .NET 环境,可以自行安装或使用项目中的doc/install_dotnet_sdk_9.sh脚本安装。

1.3 显示器连接

显示器是可选项,你也可以更改项目源码,使用其他显示器。下图展示了如何使用 Luckfox 接入 1.5寸 NV3030B 显示屏,具体接线可参考该图:

请添加图片描述

在 LuckFox 上使用时,需要先用 luckfox-config 开启 SPI 和 PWM,注意:需要先关闭 LCD 和 I2C4,否则会占用 SPI 引脚。需要一个支持 PWM 的 GPIO 引脚,可以自己选一个,上图使用的是 40,即 PWM3_M1

开启 SPI 时需要选择启用 MOSICS 并设置 SPI 速率为 40000000,即4后面七个零。

2. 软件准备

2.1 创建 Azure 服务

在开始之前,我们需要准备好服务,在 Azure AI Foundry | Azure OpenAI 服务 部署一个实时语音服务。这里我们使用 gpt-4o-realtime-preview,它提供了一套完整的语音交互服务,包括语音识别、语音合成、语音对话等功能。

请添加图片描述

创建完成后即可获取到服务的服务地址和密钥信息:

请添加图片描述

2.2 音频调整

在使用项目之前,需要调整音频配置,可以直接使用 doc/audioset.sh 脚本。主要调整了麦克风增益、喇叭音量(稍微调小了一些,设置为20,最大可以为30)、开启HPF。

amixer cset name='ADC ALC Left Volume' 26
amixer cset name='ADC ALC Right Volume' 6
amixer cset name='ADC Digital Left Volume' 195
amixer cset name='ADC Digital Right Volume' 195
amixer cset name='ADC MIC Left Gain' 3
amixer cset name='ADC MICBIAS Voltage' 'VREFx0_975'
amixer cset name='ADC Mode' 'SingadcL'
amixer cset name='ADC HPF Cut-off' 'On'
amixer cset name='DAC LINEOUT Volume' 20

另外,当前程序的音频使用了 Alsa 库,需要安装 libasound2-dev,可以使用以下命令安装:

sudo apt-get -y install libasound2-dev

2.3 部署 EdgeVoice

在 Luckfox 上部署 EdgeVoice 项目,可以选择直接下载已经编译好的 EdgeVoice 项目,也可以自行编译。

dotnet publish ./src/EdgeVoice.csproj -r linux-arm -p:PublishSingleFile=true -f net9.0 --self-contained=false -o ./publish/linux-arm
  • 树莓派需要修改 linux-armlinux-arm64
  • 如果需要框架依赖,删除 --self-contained=false 参数即可
  • 使用的库 Alsa 不支持 Windows,所以 Windows 下无法运行

在 Release 中提供了框架依赖的版本 linux-armlinux-arm64,可以直接下载使用。

2.4 配置 EdgeVoice

在部署好 EdgeVoice 项目后,需要配置好服务地址和密钥信息,修改appsettings.jsonRealtimeAPI 配置。

{
    "Endpoint": "you.openai.azure.com",
    "ApiVersion": "2024-10-01-preview",
    "Deployment": "gpt-4o-realtime-preview",
    "ApiKey": "you-key"
}

注意:这里的 EndpointDeploymentApiKey 需要替换为你自己的服务地址和密钥信息。同时需要注意保护好这些信息,避免泄露。

如果没有显示器或不想启用的话,可以修改 appsettings.jsonLcdSettings 节点中的 SpiBus-1 即可。

另外,需要准备一个 TTF 字体文件,放在项目中,并配置到 appsettings.jsonLcdSettings 节点中的 FontPath 中。

当然,也可以使用默认的字体,这样则需要安装 ttf-wqy-zenhei

sudo apt-get -y install fonts-wqy-microhei

3. 运行 EdgeVoice

在配置好 EdgeVoice 项目后,即可运行项目:

chmod +x EdgeVoice
sudo -E ./EdgeVoice

运行后即可看到 EdgeVoice 的启动界面,同时可以通过麦克风说话,EdgeVoice 会实时识别语音并返回结果。这里需要注意的是,因为使用了音频和GPIO,所以需要使用 sudo 权限运行,同时需要使用 -E 参数保留环境变量。

请添加图片描述

请添加图片描述

4. 总结

通过本文的介绍,你可以在 Luckfox 上使用 EdgeVoice 语音助手,实现媲美商业产品的交互体验。同时,你也可以根据自己的需求,自定义 EdgeVoice 的功能,实现更多有趣的功能。后续我们还会继续优化 EdgeVoice 项目,增加更多的功能,如小智接入和智能家居控制等,敬请期待。

相关文章:

  • 欢迎来到未来:探索 Dify 开源大语言模型应用开发平台
  • Flutter项目升级到指定版本的详细步骤指南
  • 解决IDEA中maven找不到依赖项的问题
  • TCP传输---计算机网络
  • 【C/C++算法】从浅到深学习--- 简单模拟算法(图文兼备 + 源码详解)
  • 基于深度学习的图片识别系统(上)
  • 数据库分类、存储引擎、介绍、Mysql、SQL分类
  • SpringBoot接口防抖(防重复提交)的一些实现方案
  • 【开源宝藏】30天学会CSS - DAY7 第七课 CSS 关键帧打造Preloader 追逐动画
  • search_fields与filterset_fields的使用
  • Linux fority source和__builtin_xxx
  • 每日一题-力扣-2116. 判断括号字符串是否可以变为有效-20250323
  • C语言指针
  • 云原生 | 下一代CI/CD工具,Tekton入门部署指南
  • C++学习:六个月从基础到就业——C++基础语法回顾:控制流语句
  • Spark2 之 Expression/Functions
  • Simple-BEV的bilinear_sample 作为view_transformer的解析,核心是3D-2D关联点生成
  • 穿越之程序员周树人的狂人日记Part3__人机共生纪元
  • Extend module 01:Keyboard
  • 具身系列——NLP工程师切入机器人和具身智能方向
  • 五一首日出沪高峰,G1503高东收费站上午车速约30公里/小时
  • 经营业绩持续稳中向好,国铁集团2024年度和2025年一季度财务决算公布
  • 陈文清:推进扫黑除恶常态化走深走实,有力回应人民群众对安居乐业的新期待
  • 浙江官宣:五一假期,没电、没气、没油车辆全部免费拖离高速
  • 呼伦贝尔市委常委、组织部长闫轶圣调任内蒙古交通集团党委副书记
  • 广西干旱程度有所缓解,未来一周旱情偏重地区降水量仍不足