No description https://studio-umzu.de
  • Python 52.5%
  • JavaScript 20.3%
  • Shell 10.7%
  • HTML 8.9%
  • CSS 7.3%
  • Other 0.3%
Find a file
2026-06-17 11:12:39 +02:00
diy-ai deploy: auto commit 2026-06-17 11:12:39 2026-06-17 11:12:39 +02:00
flasher docs: refresh all READMEs and align button behavior notes 2026-04-01 21:10:18 +02:00
hub fix synchrony 2026-04-02 14:31:29 +02:00
scripts gemma 4 2026-04-23 14:38:11 +02:00
setup docs(setup): align setup URLs and remote TTS endpoint 2026-04-02 16:01:34 +02:00
shared/tts-service Expose mac premium voice names and always include premium voices in UI 2026-04-02 19:14:28 +02:00
.env.example gemma 4 2026-04-23 14:38:11 +02:00
.gitignore working machine 2025-12-05 16:07:47 +01:00
.python-version working machine 2025-12-05 16:07:47 +01:00
aiy_compat.py Add GLOBAL_VOLUME env option, apply in aiy_compat.py and document in README 2025-12-11 10:53:55 +01:00
deploy.sh deploy: auto commit 2026-06-17 10:26:27 2026-06-17 10:26:27 +02:00
main.py Fix audio interruption: debounce button, serialize server playback, and sequence web TTS queue 2026-04-02 16:36:30 +02:00
README.md gemma 4 2026-04-23 14:38:11 +02:00
requirements.txt Unified setup: merged launcher, flasher UI, and shared TTS service 2026-04-01 11:27:10 +02:00
setup.sh Unified setup: merged launcher, flasher UI, and shared TTS service 2026-04-01 11:27:10 +02:00
voicebot.service service: allow binding landing to port 80 2026-04-01 19:06:14 +02:00

Voicebot Monorepo

Diese Repo enthält zwei aktive Projekte für den Unterricht mit Raspberry Pi, Calliope und lokaler KI.

Projekte

  1. Calliope Flasher + Voicebot (calliope-flasher)

    • Flash-Weboberfläche für .hex Dateien (iPad/Safari)
    • Voicebot mit Calliope-Serial-Eingaben und TTS-Ausgabe
    • Projekt-README: flasher/README.md
  2. DIY-AI Werkstatt (diy-ai)

    • Prompt-Workshop mit Live-Streaming + Sprache
    • Orchestrator + TTS-Service + Ollama
    • Projekt-README: diy-ai/README.md

Teaching-Material

Knopf-Verhalten (Voicebot)

  • 1x drücken: kurzer KI-Kommentar
  • 2x drücken: laufende Audioausgabe sofort stoppen
  • 3x drücken: Presence Protocol auslösen

Schnellstart (alles zusammen)

Für den Betrieb auf einem Gerät mit Landing-Page und Slug-Routing:

./setup.sh --all
python3 hub/run_merged.py

Dann öffnen:

  • Landing: http://voicepi-2.local/
  • Calliope Flasher: http://voicepi-2.local/calliope-flasher/
  • DIY-AI Werkstatt: http://voicepi-2.local/diy-ai/

Wichtige URLs lokal

Bei lokalem Start auf einem Rechner ohne Reverse-Proxy:

  • Flasher direkt: http://localhost:1024
  • DIY-AI direkt: http://localhost:8000
  • TTS Health: http://localhost:8088/health

Konfiguration (Kurzüberblick)

Die zentrale Konfiguration liegt in .env im Repo-Root.

Wichtige Variablen:

  • OLLAMA_SERVER Ollama Endpoint (z. B. Mac im LAN)
  • OLLAMA_MODEL Modellname (z. B. gemma4:e4b)
  • GLOBAL_VOLUME globale Lautstärkeobergrenze
  • REMOTE_TTS_ENABLED + REMOTE_TTS_URL + REMOTE_TTS_VOICE steuern die Stimme für Button-/Joke-Ausgaben; für Anna muss Remote-TTS aktiv sein und REMOTE_TTS_VOICE=Anna gesetzt sein
  • TTS_VOICE lokale Fallback-Stimme (wenn Remote-TTS ausfällt oder deaktiviert ist, z. B. mb-de7 auf dem Pi)
  • WORKSHOP_SERVER_TTS_PLAYBACK false: Audio nur am Client, true: zusätzlich Pi-Lautsprecher (DIY-AI)
  • HUB_VOICEBOT_SLUG Standard: calliope-flasher
  • HUB_WORKSHOP_SLUG Standard: diy-ai

Startpunkt für Defaults: .env.example

Betrieb als Service (Pi)

sudo systemctl restart voicebot
sudo systemctl status voicebot

Service-Definition: voicebot.service

Repository-Struktur

voicebot/
├── README.md
├── main.py
├── flasher/                 # Calliope-Flasher + Voicebot-nahe Weboberfläche
├── diy-ai/                  # DIY-AI Workshop
├── hub/                     # Merged runner + Landing/Proxy
├── shared/tts-service/      # Gemeinsamer TTS-Service
├── setup/                   # Setup-Logik und Guides
├── examples/
│   ├── schueler/
│   └── lehrer/
├── requirements.txt
└── voicebot.service

Nächster Schritt

Für projekt-spezifische Details direkt in die jeweiligen READMEs gehen: