69 lines
1.7 KiB
Markdown
69 lines
1.7 KiB
Markdown
# EVS - Embedded Voice System
|
|
|
|
ESP32-basierter Voice-Client mit:
|
|
- `INMP441` als Mikrofon (I2S)
|
|
- `PAM8403` als Verstärker (PWM-Audio vom ESP32)
|
|
- WebSocket-Audio-Streaming zur zentralen Bridge
|
|
- optionaler Home-Assistant/MQTT-Integration
|
|
|
|
## Ziel
|
|
|
|
Dieses Projekt bildet die Basis für eine lokale "Echo-Alternative":
|
|
- Audioaufnahme am ESP32
|
|
- Verarbeitung zentral (z. B. Home Assistant / Container)
|
|
- Audioantwort zurück an den ESP32-Lautsprecher
|
|
|
|
## Projektstruktur
|
|
|
|
- `src/main.cpp`: Firmware (Audio, WiFi, WebSocket, Modi)
|
|
- `include/secrets.h`: lokale Umgebungswerte (nicht versioniert)
|
|
- `include/secrets.example.h`: Vorlage für `secrets.h`
|
|
- `bridge/`: Dockerisierte EVS-Bridge (WebSocket + MQTT + HA-Hooks)
|
|
|
|
## Firmware-Modi
|
|
|
|
Serielle Kommandos (`115200 Baud`):
|
|
- `l` = Local Loopback (Mic direkt auf Speaker)
|
|
- `s` = Stream to Server (Audio zur Bridge)
|
|
- `i` = Idle
|
|
- `p` = Netzwerkstatus
|
|
- `h` = Hilfe
|
|
|
|
## Setup (ESP32)
|
|
|
|
1. `include/secrets.example.h` nach `include/secrets.h` kopieren.
|
|
2. In `include/secrets.h` setzen:
|
|
- WiFi-Zugang
|
|
- `EVS_BRIDGE_HOST`
|
|
- `EVS_WS_PORT`, `EVS_WS_PATH`
|
|
- `EVS_DEVICE_ID`
|
|
3. Firmware bauen/flashen:
|
|
```bash
|
|
pio run -e esp32dev_core2 -t upload
|
|
pio device monitor -b 115200
|
|
```
|
|
|
|
## Setup (Bridge)
|
|
|
|
1. In `bridge/` wechseln.
|
|
2. `.env.example` nach `.env` kopieren und Werte setzen.
|
|
3. Bridge starten:
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|
|
|
|
Standard-WebSocket-Endpunkt:
|
|
- `ws://<bridge-host>:8765/audio`
|
|
|
|
## Audioformat
|
|
|
|
- PCM16LE
|
|
- Mono
|
|
- 16 kHz
|
|
|
|
## Hinweise
|
|
|
|
- `include/secrets.h` ist absichtlich in `.gitignore`.
|
|
- Für den Core-3-Test ist in `platformio.ini` eine eigene Environment vorbereitet.
|
|
- Details zur Bridge findest du in `bridge/README.md`.
|