(部署实战-2)昉·星光 2 + debian +HA+ESPHome语音控制家居

分享作者:tgcevgdf_7889
作者昵称:阿峰不坏
评测品牌:赛昉科技
评测型号:VF202080-A0
发布时间:2026-10-09 13:25:53
1
概要
Starfive2 RICS-V开发板编译部署+HA+ESPHome+语音助手
开源口碑分享内容

ESP32-C3 语音助手 + StarFive 2 上的 Home Assistant
控制灯具的实践

从硬件接线、离线 STT/TTS 部署,到唤醒词方案选型与踩坑记录

一路摸索下来,试过不少坑,解决问题的最终办法基本上都是从源代码进行编译,但通过实践验证了方案的可实践性(只要是HA中的智能家居都是可以控制的),Starfive2这块小开发板还是挺好用的。

有图有真相:

测试环境: Starfive2 厂家官方Debian, Home Assistant 2024.7 Core容器(较旧,勉强能用),ESP Home2025.5

数据流说明

  1. 采集:INMP441 通过 I2S 接口将 16kHz / 16bit / 单声道 PCM 音频送入 ESP32-C3。
  2. 传输:ESP32-C3 通过 ESPHome 的 voice_assistant 组件,把音频流经 Wi-Fi 发送到 Home Assistant。
  3. 识别:HA 将音频转发给 Wyoming STT 服务(sherpa-ncnn),得到文本指令。
  4. 理解:HA 的对话代理(Intent)解析文本,匹配到"打开/关闭客厅的灯"意图。
  5. 执行:HA 调用灯具实体服务,通过 MQTT 或局域网协议控制灯。
  6. 反馈:HA 生成响应文本,经 Wyoming TTS(Piper)合成语音(可选播放)。

cmake .. -DCMAKE_BUILD_TYPE=Release \
  -DGGML_RVV=OFF \
  -DGGML_RV_ZFH=OFF \
  -DGGML_RV_ZICBOP=OFF \
  -DGGML_RV_ZIHINTPAUSE=OFF \
  -DCMAKE_C_FLAGS="-march=rv64gc" \
  -DCMAKE_CXX_FLAGS="-march=rv64gc"

编写了一个 Wyoming 协议服务脚本 wyoming_sherpa_ncnn.py,通过 subprocess 调用 sherpa-ncnn 二进制完成识别,并用 systemd 管理为开机自启服务。

4.4 阶段四:离线 TTS(Piper)部署

  • 从源码安装 wyoming-piper,依赖 onnxruntime 需手动安装 RISC-V wheel。
  • 系统 Python 受 PEP 668 保护,必须使用虚拟环境。
  • NumPy 2.x 与旧版 onnxruntime 不兼容,需 pip install "numpy<2"。
  • 中文语音模型使用 zh_CN-huayan-medium。

4.5 阶段五:ESP32-C3 语音采集端配置

esp32:
  board: esp32-c3-devkitm-1
  variant: ESP32C3
  framework:
    type: esp-idf        # 语音助手必须用 esp-idf,Arduino 不支持

i2s_audio:
  - id: i2s_mic
    i2s_lrclk_pin: GPIO6
    i2s_bclk_pin: GPIO7

microphone:
  - platform: i2s_audio
    id: mic
    adc_type: external
    i2s_din_pin: GPIO5
    channel: left
    sample_rate: 16000
    bits_per_sample: 32bit
    pdm: false

voice_assistant:
  microphone: mic
  use_wake_word: false
  noise_suppression_level: 2
  auto_gain: 31dBFS

4.6 阶段六:HA Assist Pipeline 配置

  1. 进入 设置 → 语音助手,创建管道。
  2. STT 选择 Wyoming Protocol(sherpa_ncnn)。
  3. TTS 选择 Piper(必须配置,否则 Pipeline 验证失败)。
  4. 对话代理选择 Home Assistant。
  5. 在 ESP32 设备页面绑定该管道。

6.5 一点心得

StarFive 2 是一块"性能跑起来还不错但需要一些折腾精神"的 RISC-V 开发板。它的价值不在于开箱即用的体验,低功耗和四核CPU、4/8G内存,RISC-V架构上可以稳定的运行Debian,在安装了128G NVME SSD后加载运行速度停不错的。一定不要裸奔,安装上散热片,有风扇就更好;

部分安装过程:

sudo apt update
sudo apt install -y curl build-essential libssl-dev pkg-config
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
rustup target add riscv64gc-unknown-linux-gnu
sudo apt install -y libffi-dev

python环境和rust编译环境准备好了,才能正常安装esphome(过程需要编译,等待了好一伙,好在成功了。)

source ~/esphome-venv/bin/activate
(esphome-venv) user@starfive:~$ dpkg -L libffi-dev | grep ffi.h
/usr/include/riscv64-linux-gnu/ffi.h
/usr/share/doc/libffi8/html/Using-libffi.html
(esphome-venv) user@starfive:~$ pip install esphome

🚀 启动 ESPHome Dashboard

1. 确保虚拟环境已激活(如果已经退出,需要重新激活):(我提前建好了config目录,)

source ~/esphome-venv/bin/activate
esphome dashboard /data/esphome/config/


7小部分

全部评论
暂无评论
0/144