项目介绍

wilbowes/EchoMuse 是一个托管在 GitHub 上的开源项目,主要使用 C 编写,目前获得 1.4k 个 Star、110 次 Fork。

仓库全名
wilbowes/EchoMuse
Star 数
1.4k
Fork 数
110
未关闭 Issue
159

README 摘要

EchoMuse Give your Amazon Echo Dot 2nd Generation a second life as an open source voice assistant satellite. EchoMuse replaces the Alexa firmware with a lightweight Go server that streams audio to and from a backend controller of your choosing. The LED ring, microphone array, buttons, and speaker remain fully accessible via HTTP API. Pair it with Home Assistant, a local LLM pipeline, or any backend you like. This is…

完整内容见 GitHub 原始 README 或本页 。

常见问题

EchoMuse 用什么语言开发?

主要使用 C 编写,目前有 1.4k 个 Star。

如何获取 EchoMuse 的源码?

可以直接克隆仓库:git clone https://github.com/wilbowes/EchoMuse.git,默认分支为 main;安装与运行步骤见仓库 README。

EchoMuse 最近还在维护吗?

仓库最近一次更新为 4 天前,当前有 159 个未关闭 Issue;Star 数为 1.4k,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Alexa replacement and controller for Echo Dot 2nd Generation device.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
1637
价值分
867
活跃状态
活跃
暂无主题

语言占比

C
Dockerfile
Go
HTML
JavaScript
Python
Shell

Release

README

EchoMuse

Give your Amazon Echo Dot 2nd Generation a second life as an open source voice assistant satellite.

EchoMuse replaces the Alexa firmware with a lightweight Go server that streams audio to and from a backend controller of your choosing. The LED ring, microphone array, buttons, and speaker remain fully accessible via HTTP API. Pair it with Home Assistant, a local LLM pipeline, or any backend you like.

This is a significant fork of EchoGo by Binozo — the original SDK that made this hardware accessible. Substantial modifications have been made including client-side VAD, mute button handling, volume control, and audio fixes specific to the biscuit hardware.


Before you start

Your Echo Dot must be rooted with persistent root before EchoMuse is useful. The full rooting and setup guide — including SELinux bypass, Alexa removal, audio configuration, VAD, and wake word detection — is in SETUP.md.

The short version:

  • Persistent unlock via amonet-biscuit (R0rt1z2)
  • FireOS 5 (Android 5.1, API 22)
  • Magisk 17.3
  • Alexa voice stack disabled

Building

The Echo Dot runs FireOS 5 (API 22). A custom Docker build environment is required — standard Go cross-compilation won’t produce a compatible binary.

Prerequisites:

  • Docker
  • Go 1.24+
  • GoTinyAlsa cloned to ~/GoTinyAlsa

Build the compiler image:

docker build -t echomuse-compiler compiler/

Compile:

docker run --rm \
  -e CGO_LDFLAGS="-Wl,--hash-style=both" \
  -v "$(pwd)":/sdk \
  -v ~/GoTinyAlsa:/GoTinyAlsa \
  echomuse-compiler

Output: build/server


Audio processing pipeline

Each 32ms period of microphone audio passes through a processing chain before VAD gating and transmission:

raw 9ch S24_3LE → beamformer (mic selection) → RNNoise NS → AGC → mono S16_LE → VAD gate

Beamformer locks to the perimeter mic with the highest onset energy ratio at voice turn start. Onset ratio (fast/slow EWMA) is robust to continuous background noise — it picks the direction that just got louder, not the loudest direction overall.

RNNoise (xiph/rnnoise v0.1) suppresses background noise. Vendored C source compiled via cgo — no external library or system dependency required.

AGC normalises level for consistent wake word and STT input. Release is frozen during silence to prevent noise floor amplification past the VAD threshold.

VAD runs on pre-NS/AGC audio to keep threshold calibrated to mic sensitivity rather than processed level.


VAD configuration

Tunable via environment variables on the device (overridden by controller config push):

Variable Default Description
VAD_CHANNEL 0 Mic channel for vad_stream endpoint (0–8)
VAD_THRESHOLD 0.015 RMS threshold 0.0–1.0 (controller pushes 0.003)
VAD_SPEECH_MS 80 Ms of speech to open the gate
VAD_SILENCE_MS 600 Ms of silence to close the gate

Acknowledgements


License

MIT

评论

暂无评论