Logo Helden des Bildschirms

Twitch-Nachrichten vorlesen















Liste von Namen die erlaubt sind

Tutorial: https://youtu.be/CT_BSBgXtyQ
Unterstützen Sie das Projekt mit einem Pull Request oder Bug Report auf GitHub: https://github.com/JanisPlayer/chatspeaker

Informationen für Benutzer:
Es handelt sich bisher noch um eine Testanwendung:
Mit 'Login' kannst du dich anmelden. Die Informationen für Benutzername, Token und Kanal werden automatisch ausgefüllt, können jedoch auf Wunsch geändert werden. Danach musst du dich nur noch mit 'Connect' verbinden.
Über das HeldendesBildschirms TTS kannst du täglich 1000 Nachrichten und 50.000 Zeichen senden. Es wird jedoch empfohlen, ein eigenes TTS zu nutzen, wie im Tutorial gezeigt, da sich dies wahrscheinlich ändern wird und viel Leistung kosten kann.
Wenn du * hinzugefügt wirst, werden dir Nachrichten von allen Nutzern vorgelesen.
Du kannst Nutzer blockieren, indem du sie hinzufügst und auf ++ klickst, damit es sich zu einem -- ändert.
Mod-Entscheidungen sollten berücksichtigt werden.
Mit 'Pause' kannst du eine gerade gesprochene Nachricht abbrechen.
'Alle geplanten Nachrichten abbrechen' beendet alle Nachrichten mit Zeitverzögerung oder in der Warteschlange.
Bei der TTS-Auswahl kannst du dein Browser-TTS (nur für Chrome) oder das HeldendesBildschirms TTS oder dein eigenes TTS nutzen. Hierbei solltest du jedoch HTTPS-Proxys für Chrome verwenden oder für Firefox HTTP nutzen, aufgrund von Google-Sicherheitsfunktionen.
Google Übersetzer oder Google TTS dienen derzeit mehr zum Testen, da die Google TTS API nicht mehr verfügbar ist.

Informationen für Entwickler:
Beim erneuten Klicken auf einen Nutzer diesen - zu blockieren und nicht nur zu entfernen.
Die Bedienung der Benutzeroberfläche.
Daten exportieren über JSON oder Server.
Ein WS- oder PHP-Server für die Steuerung in OBS mit dem dazugehörigen Client.
Über eine PHP-Lösung mit Long Polling wäre eine getData.php nötig oder eine Integration in die bettervoice.php?getData&UserID&AudioToken&getFile.
Es muss in dem Fall die user_data in ein nicht zugängliches Verzeichnis verschoben werden, damit weiterhin Statistiken genutzt abgerufen werden können. Wäre auch hier eine API nötig: bettervoice.php?getData&stats.
Damit ein anderer Client wie ein Mod die Kontrolle über das, was als Audio generiert wird, übernehmen kann, ist ein weiterer ModToken nötig und eine Überarbeitung der bisherigen index.php.
Veränderungen wären ein Mod-Modus und eine Eingabe für den Schlüssel, sodass für den Nutzer Audio-Dateien generiert werden können. Eine Möglichkeit, Nachrichten von Chattern zu bearbeiten, wäre hier dann auch sinnvoll, da ein Mod mehr Zeit als ein Streamer hat.
Damit OBS auch noch die Nachrichten abspielt, muss beim Aufruf von getData jede Sekunde geprüft werden, ob für den Nutzer eine neue Audio im Ordner user_data/audio/UserID_AudioID.* liegt, vielleicht auch mit Index-Datei, um Nachrichten besser zu identifizieren bei Abbrüchen.
Was die Identifikation betrifft, wäre das nötig entweder über eine ID, die vom Server generiert wird beim Erstellen einer Audio und an den Client zurückgegeben wird, oder ineffizient eine JSON, die Text und Audio-ID enthält – wäre leichter auf mehreren Clients.
Nachteil bei dieser Lösung: OBS ist nicht autonom, weil es nur die Datei anfordert und abspielt, aber das wäre bei dem, was als Steuerung für die Moderation nötig ist, sowieso immer mit einem Browser-Tab verbunden.
Was die Limits angeht, müsste man das Sekundenlimit für Audios in eine Warteschlange umwandeln, damit nicht bei zu vielen generierten Nachrichten nur eine Audio mit einer Fehlermeldung erstellt wird.
Das System in der index.php kann dann auch langsam an getData angepasst werden. Das hat Vorteile, da so keine Abspielwarteschlange mehr nötig ist wie vorher. Allerdings muss das ganze System für Nachrichten-Stoppen überarbeitet werden.
Der Mod müsste mit dieser Lösung noch mit seinem eigenen Account die Nachrichten empfangen, also sich anmelden. Vom Server wird weiterhin nicht kontrolliert, ob eine Nachricht legitim ist, dafür können Nachrichten aber auch vollständig bearbeitet werden, um Rechtschreibung zu korrigieren.
Das wäre bei einem serverseitigen Abgleich nur prozentual möglich, um Missbrauch der API zu verhindern. Da der Dienst aber aktuell sowieso von den Nutzern auch ein eigenes TTS erfordert, ist das aktuell nicht relevant.
Eine Umstellung auf NodeJS mit SW wäre ab mehr Nutzern sinnvoll, wenn PHP an seine Grenzen stößt und es auch sicherer vor DoS-Angriffen gemacht werden muss.
Eine Möglichkeit, um Token zu widerrufen, muss natürlich auch in der GUI geschaffen werden. Die Token stehen dann sicher in der hiddenfile/user_data/user_data.json.
Dazu sollte ein WebSocket-Server noch hinzugefügt werden, der die Client-Informationen validiert. Das bedeutet, er prüft, ob eine Nachricht existiert, wie viele Zeichen verwendet werden dürfen und ob der Inhalt korrekt ist, um einen Missbrauch der API zu vermeiden. Der Server erstellt dann einfach die Nachricht mit seinen Informationen.
Warnung: Momentan noch ohne csrf_token; die Anfrage ist somit noch nicht vor Man-in-the-Middle-Angriffen sicher. Bitte achten Sie darauf, sich in einem sicheren Netzwerk zu befinden.
Die Sitzung wird nun testweise durch einen csrf_token geschützt.
100% sicher ist das Ganze jedoch nicht, weil ich es gerade noch der Einfachheit halber in einem Cookie speichere. Über eine HTTP-Verbindung kann dieser gestohlen werden. Akzeptieren Sie bitte bis zu einer Verbesserung keine HTTP-Verbindungen zu meiner Seite.
Es fehlt - Benutzername, um auch mit * alle vorherigen Nachrichten zu blockieren.
Hinweis: Das Google TTS verursacht API-Kosten, die ich mir als Hobby-Entwickler nicht leisten kann. Falls dies gewünscht ist, empfehle ich die Lösung, ein eigenes TTS zu nutzen. Hier könnt ihr bettervoice.php als Vorlage verwenden und den Regler auf "Eigenes TTS" setzen. Fügt eure URL wie im Tutorial gezeigt ein.
https://cloud.google.com/text-to-speech/pricing?hl=de
8 USD kosten 1000 Nachrichten mit 537 Zeichen (500 TSD Zeichen).
Die Frage ist halt, was ist realistisch. :D Und ja, jeder, der sich über die Seite anmeldet, hat jetzt für 24 Stunden 1000 Nachrichten und maximal 1000 Zeichen zum Verbrauchen. Die Nachricht darf 500 + 25 Zeichen für Namen + 12 notwendige Zeichen umfassen.
Und maximal 1 Nachricht pro Sekunde.
Für alle anderen gilt das normale Limit: 10 Nachrichten pro Minute mit maximal 200 Zeichen.
Ein Emotefilter ist hinzugefügt, aber es braucht noch weitere Filter, die auf ausgewählte Zeichen beschränken und vielleicht Spam besser erkennen.
Nachrichten-Cache für die letzten 500 Namen und letzten 30 Nachrichten (serverseitig).
Nachrichtenlimit pro Benutzer.
Chatbefehl fürs Sprechen (optional).
Das Mikrofon verwenden, um herauszufinden, ob eine Person spricht. Anstatt nur zu fragen, ob das Audio gerade nicht abgespielt wird, die Nachricht in die Warteschlange hinzufügen, wenn es abgespielt wird.