Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
wiki:software:beuthbot:berichte:ws2020:zwischen:aktueller-stand [18.11.2020 15:53] Robert Xaver Halwaß angelegt |
wiki:software:beuthbot:berichte:ws2020:zwischen:aktueller-stand [24.11.2020 14:16] (aktuell) Robert Xaver Halwaß [DokuWiki Plugins] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | Aktueller Stand | + | ===== Aktueller Stand ===== |
- | Problem 1: Der Bot war ständig nicht erreichbar | + | ==== Der Bot war ständig nicht erreichbar |
+ | Der Bot läuft via docker-compose in einer VM. Immer wenn der Bot nicht erreichbar war, startete er neu sobald sich jemand in die VM einloggte und war dann auch wieder erreichbar. Der Grund dafür war, dass docker-compose so konfiguriert war, dass die Container zwar neu starten sollten, aber nicht sofort wenn sie abstürzten (sondern in diesem fall dann eben beim Login durch einen docker-user). | ||
- | Der Bot läuft via docker-compose | + | Der Lösung bestand entsprechend |
+ | |||
+ | ==== Gateway funktionierte nicht ohne Telegram-ID ==== | ||
+ | Bei ersten Experimenten ist aufgefallen, | ||
+ | |||
+ | Durch eine Anpassung des Gateways bei der User-Abfrage wird eine valide Telegram-ID | ||
+ | |||
+ | ==== Continous Deployment ==== | ||
+ | Continous Integration & Deployment ist ein wichtiger Pfeiler für ein stabiles Production Environment. Durch eine CI/CD Pipeline kann sichergestellt werden, dass das Deployment nachvollziehbar, | ||
+ | |||
+ | Zu Beginn des Semesters wurde das Deployment manuell ausgelöst. Es gab mehrere Scripte, | ||
+ | |||
+ | Hinzu kam das Problem, dass die Ordnerstruktur unterschiedlichen Usern gehörte, immer denjenigen, die das Update ausgeführt haben, bei dem die Dateien erstmals im Repository auftauchten. Dadurch scheiterten Updates zusätzlich, | ||
+ | |||
+ | Wir haben via Github-Actions eine CI/CD Pipeline erstellt, die den Deployment Prozess in 3 Stages ausführt: Build, Test, Deploy. Die Test-Stage ist via Makefile angebunden, so dass EntwicklerInnen neue Tests simpel in eine zentrale Stelle eintragen können. Das Makefile ist nun Single Point of Truth. Die teilweise widersprüchlichen Scripte von vorher wurden aufgeräumt | ||
+ | |||
+ | Code Änderungen im Repo (Pull Request): https:// | ||
+ | |||
+ | Mithilfe eines Selfhosted-Runners welcher auf dem BeuthBot-Server installiert wurde, ist es jetzt möglich diesen Prozess zu automatisieren. Sobald ein Git-Commit mit einem Versions-Tag gepusht wird, wird dies vom Runner erkannt und der Deploy-Prozess wird angestoßen. Der Runner führt die Aktualisierung auf der VM des Bot durch. | ||
+ | |||
+ | Doku zur Runner Config: https:// | ||
+ | |||
+ | ==== Public Domain ==== | ||
+ | Es gab keine Public Domain zum Telegram Gateway. Diese brauchen wir aber um a) eine Landing Page für den Bot zu hosten und b) das Gateway von Chatbots ansprechen zu können, die nicht in der VM gehosted sind. Damit dies funktioniert wurde ein Proxy-Pass für die Default-Domain von **https:// | ||
+ | //$ curl https:// | ||
+ | |||
+ | |||
+ | ==== Text To Speech Recherche ==== | ||
+ | * Say.js | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Web Speech API | ||
+ | * https:// | ||
+ | * Text2Speech | ||
+ | * https:// | ||
+ | |||
+ | ==== Speech To Text Recherche ==== | ||
+ | |||
+ | In diesem | ||
+ | Der Recherche ergab eine Vielzahl an Lösungen, jedoch sind nur drei für das Projekt geeignet, da nur für diese ein vortrainiertes Modell für die deutschen Sprache verfügbar ist. Diese sind: | ||
+ | |||
+ | === Mozilla Voice STT (DeepSpeech) === | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Entwickler: Mozilla | ||
+ | * Opensource | ||
+ | * Offline nutzbar | ||
+ | * Viel Dokumentation | ||
+ | * Deutsches Modell | ||
+ | * WER: 15% | ||
+ | * Zukunft ungewiss (https:// | ||
+ | |||
+ | === Kaldi === | ||
+ | * https:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * Entwickler: Kaldi | ||
+ | * Opensource | ||
+ | * Offline nutzbar | ||
+ | * Deutsche Modelle | ||
+ | * WER: 8,44% | ||
+ | |||
+ | === Wav2Letter === | ||
+ | * https:// | ||
+ | * http:// | ||
+ | * Entwickler: Facebook Research | ||
+ | * Opensource | ||
+ | * Offline nutzbar | ||
+ | * Deutsche Modelle | ||
+ | * WER: 3,97% | ||
+ | |||
+ | Während des Projekts gilt es, diese drei Lösungen zu testen, miteinander zu vergleichen und darauf basierend die beste Lösung auszuwählen und im BeuthBot zu implementieren. | ||
+ | |||
+ | Die STT-Programme ohne verfügbares deutsches Modell sind folgende: | ||
+ | |||
+ | === Espresso === | ||
+ | * https:// | ||
+ | * Entwickler: Freewym | ||
+ | * Opensource | ||
+ | * Offline nutzbar | ||
+ | * Kein deutsches Modell | ||
+ | |||
+ | === OpenSeq2Seq === | ||
+ | * https:// | ||
+ | * Entwickler: NVIDIA | ||
+ | * Opensource | ||
+ | * Offline nutzbar | ||
+ | * Kein Deutsches Modell | ||
+ | |||
+ | |||
+ | === Word Error Rate (WER) === | ||
+ | |||
+ | Um die Qualität eines STT-Modells zu messen, wird der sogenannte Word Error Rate (WER) Wert verwendet. Dieser Wert gibt an, basierend auf dem Testdatensatz, | ||
+ | |||
+ | Unten befindet sich eine Auflistung von WER-Werten von kommerziellen STT-Diensten für die englische Sprache aus dem Jahre 2017. Darunter befindet sich ebenfalls die WER-Werte der recherchierten OpenSoruce-Lösungen. Da alle Dienste unterschiedliche Datensätze zum Training und Test verwenden, sind diese Ergebnisse nicht komplett vergleichbar, | ||
+ | * Google (8%) | ||
+ | * Microsoft (5.9%) | ||
+ | * IBM (5.5%) | ||
+ | * Apple (5%) | ||
+ | * Baidu (16%) | ||
+ | * Hound (5%) | ||
+ | |||
+ | * Mozilla Voice STT (15%) | ||
+ | * Kaldi (8,44%) | ||
+ | * Wav2Letter (3,97%) | ||
+ | |||
+ | Quelle: | ||
+ | https:// | ||
+ | |||
+ | |||
+ | ==== DokuWiki Plugins ==== | ||
+ | |||
+ | === edittable === | ||
+ | Standartmäßig werden im Ziemer' | ||
+ | |||
+ | === PageBreak === | ||
+ | Die finale Abgabe des Zwischenberichtes sollte in Form eines PDFs abgeben werden. Das Ziemer' | ||
+ | mitzuteilen wann ein Seitenumbruch passieren. Damit konnten wir nach jedem Kapitel und Feature-Tabelle einen Seitenumbruch hinzufügen. Dies hat die Übersichtlichkeit des Zwischenberichtes deutlich erhöht. https:// | ||
- | Der Fix bestand entsprechend in der Änderung der Configuration nach „restart-always“: | ||
- | Problem 2: Das Gateway funktionierte nicht ohne Telegram-ID |