# Pi Zero 2W + ReSpeaker - OPTIMIERT FÜR 3 KOMMANDOS
## Lightweight Keyword Spotting statt vollständiges Sprachmodell

---

## TEIL 1-3: Basis-Installation (wie vorher)

Die Schritte zur OS-Installation, SSH-Verbindung und ReSpeaker-Treiber bleiben identisch:

1. **Raspberry Pi OS (Bullseye 32-bit) installieren** (TEIL 1)
2. **SSH-Verbindung + raspi-config** (TEIL 2)
3. **seeed-voicecard Treiber installieren** (TEIL 3)

Folge dazu der ursprünglichen Anleitung bis einschließlich TEIL 3.

---

## TEIL 1: HARDWARE-VORBEREITUNG UND OS-INSTALLATION

### 1.1 Hardware-Anforderungen

Du benötigst folgende Komponenten:

- **Raspberry Pi Zero 2W** (nicht Zero oder Zero W!)
- **Seed Studio ReSpeaker Pi Hat v1.2** mit 2 Mikrofonen
- **microSD-Karte**: mindestens 16GB (Class 10 empfohlen)
- **USB-Stromversorgung**: 2A Netzteil mit Micro-USB
- **SD-Kartenleser** zum Flashen auf deinem PC
- **Computer mit Internetverbindung**
- *Optional*: HDMI-Monitor, USB-Tastatur/Maus zur Direktverbindung

### 1.2 Raspberry Pi OS Installation

#### Schritt 1: Raspberry Pi Imager herunterladen

1. Öffne [https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/)
2. Lade **Raspberry Pi Imager** für dein Betriebssystem herunter
3. Installiere die Anwendung

#### Schritt 2: SD-Karte flashen

1. Stecke die microSD-Karte in deinen Kartenleser und verbinde ihn mit dem PC
2. Öffne Raspberry Pi Imager
3. Klicke auf **"Gerät auswählen"** und wähle **"Raspberry Pi Zero 2"**
4. Klicke auf **"Betriebssystem auswählen"** und wähle:
   - **Raspberry Pi OS (Legacy, 32-Bit) - Bullseye**
   - *Hinweis: v1.2 des ReSpeaker-Hats ist am besten mit Bullseye kompatibel*
5. Klicke auf **"Speicher auswählen"** und wähle deine microSD-Karte
6. Klicke auf das **Zahnrad-Symbol (Erweiterte Optionen)** und konfiguriere:
   - **Hostname**: `respeaker-pi` (oder ein beliebiger Name)
   - **SSH aktivieren**: Ja (mit Passwort)
   - **Benutzername**: `pi`
   - **Passwort**: Ein sicheres Passwort deiner Wahl (aufschreiben!)
   - **WLAN konfigurieren**: 
     - SSID: Dein WiFi-Netzwerk
     - Passwort: Dein WiFi-Passwort
     - Land: `DE` (Deutschland)
   - **Zeitzone**: `Europe/Berlin`
7. Klicke **"Speichern"** und dann **"Schreiben"**
8. Warte bis zum Abschluss (5-10 Minuten)
9. Entnehme die SD-Karte

#### Schritt 3: Erster Start

1. Stecke die SD-Karte in den **Pi Zero 2W** ein
2. Verbinde den ReSpeaker Hat mit dem Pi:
   - Ausrichten der GPIO-Pins (40-polige Reihe)
   - ReSpeaker sollte fest aufgesetzt sein
3. Verbinde die USB-Stromversorgung
4. Warte 1-2 Minuten für den ersten Start

#### Schritt 4: IP-Adresse ermitteln

Methode A (über Router):
1. Öffne die Verwaltungsoberfläche deines WLAN-Routers
2. Suche nach verbundenen Geräten
3. Notiere die IP-Adresse von `respeaker-pi`

Methode B (mit arp-scan auf Linux/Mac):
```bash
sudo arp-scan -l | grep -i "raspberry\|b8:27"
```

Methode C (mit Advanced IP Scanner auf Windows):
1. Lade [Advanced IP Scanner](https://www.advanced-ip-scanner.com/) herunter
2. Scanne dein Netzwerk
3. Suche nach `respeaker-pi`

Beispiel-IP: `192.168.1.100`

---

## TEIL 2: RASPBERRY PI KONFIGURATION

### 2.1 SSH-Verbindung herstellen

Auf Linux/Mac (Terminal):
```bash
ssh pi@192.168.1.100
# Gib dein Passwort ein
```

Auf Windows: Nutze PuTTY
1. Lade [PuTTY](https://www.putty.org/) herunter
2. Öffne PuTTY
3. Host: `192.168.1.100`
4. Port: `22`
5. Klicke "Open"
6. Login: `pi`
7. Passwort: (dein gesetztes Passwort)

### 2.2 System aktualisieren

```bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y git python3-pip python3-dev libatlas-base-dev
```

Dieser Prozess dauert 10-15 Minuten. Warte ab.

### 2.3 Audio- und I2C-Konfiguration

```bash
sudo raspi-config
```

Navigiere zu:
1. **Schnittstellen** → **I2C** → **Aktivieren**
2. **Schnittstellen** → **SPI** → **Aktivieren**
3. **Lokalisierungsoptionen** → **Zeitzone** → **Europa** → **Berlin**
4. **Lokalisierungsoptionen** → **Sprache** → **de_DE.UTF-8**
5. Bestätige alle Änderungen und **Starten Sie neu**.

Nach dem Reboot erneut verbinden:
```bash
ssh pi@192.168.1.100
```

---

## TEIL 3: RESPEAKER HAT INSTALLATION

### 3.1 seeed-voicecard Treiber installieren

Der ReSpeaker benötigt die speziellen Seeed-Treiber. Diese können aus dem Rhasspy-Repo gezogen werden oder als install-respeaker-drivers.sh dieses Verzeichnisses genutzt werden.

```bash
cd ~
wget 'https://raw.githubusercontent.com/rhasspy/wyoming-satellite/refs/heads/master/etc/install-respeaker-drivers.sh'
sudo chmod 755 install-respeaker-drivers.sh
sudo ./install-respeaker-drivers.sh
sudo apt-get install libportaudio2
pip3 install sounddevice --break-system-packages
```

Dies dauert 5-10 Minuten. Wenn es fertig ist:

```bash
sudo reboot now
```

Nach dem Reboot wieder verbinden:
```bash
ssh pi@192.168.1.100
```

### 3.2 ReSpeaker-Installation verifizieren

Überprüfe, ob die Sound-Karte erkannt wurde:

```bash
aplay -l
```

Du solltest eine ähnliche Ausgabe sehen:
```
**** PLAYBACK hardware devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
card 1: seeed2miccard [seeed-2mic-voicecard], device 0: ...
```

Überprüfe auch die Aufnahmegeräte:
```bash
arecord -l
```

Du solltest auch hier `seeed-2mic-voicecard` sehen.

### 3.3 Ton-Tests

**Lautsprecher testen:**
```bash
speaker-test -l 1 -c 2 -t sine -f 1000 -r 48000
```
Du solltest einen Ton hören (drücke Ctrl+C zum Beenden).

**Mikrofon testen:**
```bash
arecord -D hw:1,0 -f S16_LE -c 2 -r 48000 test_recording.wav
```
Hierbei sind hw:1,0 so zu wählen, dass 1 für die Karte steht - kann auch 3 o.Ä. sein und 0 der Device-Index der Karte.

---

# installieren mit lokalem Modell:
```bash
pip3 install vosk --break-system-packages

mkdir ~/vosk-models
cd ~/vosk-models
wget https://alphacephei.com/vosk/models/vosk-model-small-de-0.15.zip
unzip vosk-model-small-de-0.15.zip
mv vosk-model-small-de-0.15 model
```

# aufnehmen mit
arecord -D plughw:1,0 --format S16_LE --rate 16000 --channels 1 --duration 5 test_mono.wav
# ausfuehren mit
python3 test_simple.py test_mono.wav

# vorbereitungen
```
mkdir ~/vosk-models
```
Dort alle `*.py`-Dateien und die per `chmod 755` ausführbar gemachte `start_voice.sh` aus diesem Repo einfügen.
Damit ohne weitere Interaktion gestartet wird, muss außerdem per `sudo nano /etc/systemd/system/voicerec.service` ein Service angelegt und wie folgt befüllt werden:
```
[Unit]
Description=starten der services fuer die spracherkennung
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=pi
Restart=always
RestartSec=10
StartLimitBurst=10000
WorkingDirectory=/home/pi
ExecStart=/home/pi/vosk-models/start_voice.sh

[Install]
WantedBy=multi-user.target
EOF
```

Außerdem wird ein WIFI-Reconnect Service mit Timer eingerichtet, der alle 5min zur Not die WLAN Verbindung neu aufbaut. 
Der Service führt die ebenfalls in `~/vosk-models/` abgelegte `wifi-reconnect.sh` aus, die hier ebenfalls im Repository liegt und wiederum zunächst mit `chmod 755 wifi-reconnect.sh` ausführbar gemacht werden muss.
Für den Timer wird `sudo nano /etc/systemd/system/wifi-reconnect.timer` mit folgendem Inhalt befüllt:
```
[Unit]
Description=WiFi Reconnect Timer

[Timer]
OnBootSec=1min
OnUnitActiveSec=5min

[Install]
WantedBy=timers.target
```
Für den zugehörigen, zu startenden Service mittels `sudo nano /etc/systemd/system/wifi-reconnect.service`:
```
[Unit]
Description=WiFi Auto-Reconnect Service

[Service]
Type=oneshot
ExecStart=/home/pi/vosk-models/wifi-reconnect.sh
```
Anschließend muss folgende Befehlskette ausgeführt werden:
```
sudo systemctl daemon-reload
sudo systemctl enable wifi-reconnect.timer
sudo systemctl start wifi-reconnect.timer
sudo systemctl enable voicerec.service
sudo systemctl start voicerec.service
```
Prüfen lässt sich der aktuelle Zustand per: `sudo systemctl status wifi-reconnect.timer`



# oder installation mit Speach-To-Text auf Server (dort Docker:)
```
docker run -d -p 2700:2700 -v /opt/model:/opt/vosk-model-en/model alphacep/kaldi-de:latest
```
wenn der Server Beispielsweise die IP 192.168.213.45 hat, dann muss diese in der `server_microphone.py` eingetragen werden.

Je nachdem, ob `local_microphone.py` oder `server_microphone.py` genutzt werden soll, muss die `start_voice.sh`-Datei entsprechend angepasst werden.

# tagesschau news abspielen
Zunächst muss per `sudo apt install mpg123` der entsprechende Codec für MP3s installiert werden. Danach wird das Verzeichnis `~/tagesschau` angelegt, das für die tagesschau-100-sekunden MP3s als Speicherort dient. 
in diesen ordner kommen entsprechend auch die `start_news.sh` und `end_news.sh`-Skripte, die vorher ausführbar gemacht werden müssen.
abgespielt werden die nachrichten mit "nachrichten hex hex".
# dlf & nova abspiele
anlegen eines verzeichnis `~/radio` und dort die `start_dlf/nova.sh` Skripte ablegen, welche dann mit "nova hex hex" oder "funk hex hex" abgespielt werden. zum beenden wieder "ruhe hex hex"
