本文主要介绍如何使用百元级开发板 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 时需要选择启用 MOSI
和 CS
并设置 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-arm
为linux-arm64
- 如果需要框架依赖,删除
--self-contained=false
参数即可 - 使用的库 Alsa 不支持 Windows,所以 Windows 下无法运行
在 Release 中提供了框架依赖的版本 linux-arm
和 linux-arm64
,可以直接下载使用。
2.4 配置 EdgeVoice
在部署好 EdgeVoice 项目后,需要配置好服务地址和密钥信息,修改appsettings.json
的 RealtimeAPI
配置。
{
"Endpoint": "you.openai.azure.com",
"ApiVersion": "2024-10-01-preview",
"Deployment": "gpt-4o-realtime-preview",
"ApiKey": "you-key"
}
注意:这里的
Endpoint
、Deployment
和ApiKey
需要替换为你自己的服务地址和密钥信息。同时需要注意保护好这些信息,避免泄露。
如果没有显示器或不想启用的话,可以修改 appsettings.json
的 LcdSettings
节点中的 SpiBus
为 -1
即可。
另外,需要准备一个 TTF 字体文件,放在项目中,并配置到 appsettings.json
的 LcdSettings
节点中的 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 项目,增加更多的功能,如小智接入和智能家居控制等,敬请期待。