Service Rhasspy

Hallo zusammen!

Ich arbeite gerade an der Entwicklung und speziell an der Integration von rhasspy in gladys.
(Dient zur Spracherkennung / zur Erkennung von Sätzen / zum Sprechen)

Kontext

Dafür müssen einige Änderungen in Gladys vorgenommen werden. Derzeit ist es notwendig, über die Chatbox mit Gladys zu kommunizieren, um mit ihr zu sprechen und Gladys antwortet dem Benutzer über ein WebSocket.

Der Dienst rhasspy wird also einen Docker starten, Nachrichten über WebSocket abrufen und sie an Gladys senden. Das Problem ist, dass man ein Benutzer sein muss, um Nachrichten an Gladys zu senden. Allerdings muss die Antwort an den Dienst rhasspy zurückgegeben werden.

Funktionale Spezifikation

Als Benutzer möchte ich:

  • mit Gladys sprechen und eine mündliche Antwort erhalten.
  • Sicher mit Gladys sprechen und alle Daten lokal speichern
  • Einen Verlauf aller durchgeführten Anfragen haben

Erstellung eines Anwendungsbenutzers

Bei Beibehaltung der Funktionsweise von Gladys Chat kann man darüber nachdenken, einen Anwendungsbenutzer zu erstellen, der mit dem Dienst Rhasspy verbunden ist. Dieser Benutzer kann mit Gladys kommunizieren und die Antworten von Gladys erhalten, ohne dass dies in einer Chatbox erscheint. (Denn die Zuordnung einer Stimme zu einem Benutzer ist derzeit kaum vorstellbar).

Der Anwendungsbenutzer wird ein „versteckter“ Benutzer sein, der nicht die gleichen Rechte wie ein Standardbenutzer hat. Er wird nur mit dem System kommunizieren, um Aktionen auszuführen.

Funktionsweise des Dienstes

Das System wird transparent einen Container mit allen notwendigen Konfigurationen für den reibungslosen Betrieb der Dienste zur Spracherkennung / Sprachausgabe installieren.

Ein Anwendungsbenutzer wird vom Dienst erstellt und dem Dienst zugewiesen.

Der Dienst wird über WebSocket mit rhasspy verbunden sein. Wenn eine Nachricht empfangen wird, wird diese an Gladys gesendet, Gladys interpretiert diese Nachricht und gibt eine Antwort zurück. Diese Antwort wird an rhasspy weitergeleitet, damit sie mündlich ausgeführt werden kann.

Feedback?

Ich würde gerne eure Meinung zu dem kleinen Text hören, den ich gerade oben geschrieben habe. Habt ihr noch andere Ideen zur Funktionsweise? Danke :slight_smile:

Ich bin nicht sehr begeistert von dem Anwendungsbenutzer, das ist ein « Hack » und passt nicht so ganz zur Philosophie der v4 :slight_smile:

Ich weiß nicht, wie Rhasppy funktioniert, aber ich bin sicher, dass es einen anderen Weg gibt, mit Gladys zu kommunizieren, als mit einem gefälschten Benutzer.

MQTT? HTTP?

Meiner Meinung nach wäre das wahrscheinlich einfacher umzusetzen.

Das Problem ist nicht Rhasspy. Der Rhasspy-Dienst (auf Gladys basierend) empfängt problemlos die Informationen vom Rhasspy-Container. Das Problem ist Gladys Core. Grundsätzlich muss ich die Funktion, die du entwickelt hast, aufrufen, um mit Gladys zu sprechen. Aber diese Funktion benötigt einen Benutzer.

Also entweder ändern wir nichts an dieser Funktion, oder wir erstellen etwas Separates, das es ermöglicht, mit Gladys zu kommunizieren, ohne einen Benutzer zu benötigen.

Hier ist die Funktion für meinen Anwendungsfall zu restriktiv. Ich bräuchte eher eine Funktion, bei der ich die Nachricht sende und Gladys die Antwortnachricht zurücksendet.

Es spricht nichts dagegen, eine weitere Funktion zu erstellen, das haben wir im anderen Thema schon besprochen :slight_smile:

Die Verwendung ist völlig unterschiedlich, hier geht es um einen anonymen Sprachbefehl, die andere Funktion ist für authentifizierte Textaufrufe.

Ah ja, das passt mir auch völlig! :smiley:

Allerdings empfehle ich dir, bevor du mit der Entwicklung beginnst, eine funktionale und technische Spezifikation zu erstellen. Das ist wirklich die beste Methode, um vor dem Codieren zu klären, was man erreichen möchte.

Beispiel einer Spezifikation: Multi-utilisateurs - #6 par pierre-gilles

Ich persönlich nutze https://whimsical.com für Mockups, finde ich praktisch. Der Sinn ist nicht, ein Pixel-perfektes Design zu erstellen, sondern gemeinsam zu sehen, was zur UI hinzugefügt wird, um eine Vorstellung davon zu bekommen, was wir tun, bevor wir mit der Entwicklung beginnen.

Der Vorteil von Whimsical ist, dass es einfach ist und dich nicht dazu drängt, eine überladene UI zu erstellen.

Bei der technischen Spezifikation geht es darum, technisch zu erklären, was wir tun werden, bevor wir es tun (Datenbankmodellierung, API-Routen usw.).

Danke für den Tipp mit dem Modell, ich wusste nicht, was ich verwenden sollte.

Aktuell mache ich einen POC, um Ideen zu sammeln, was ich planen sollte. Aber ja, ich verbringe nicht zu viel Zeit damit, etwas Ordentliches zu erstellen, und parallel dazu arbeite ich am Spec :slight_smile:

Bei dieser etwas besonderen Art von Entwicklung finde ich es wichtig, genau zu verstehen, wie der Container funktioniert :slight_smile:

Okay, ich versuche es, aber ich bin nicht nur schlecht, ich bin überhaupt kein Designer. Gibt es Leute, die UX machen können? (eine Webseite grob entwerfen, damit ich mich daran orientieren kann?) :smiley:

Was brauchst du?

Eigentlich habe ich schon eine Idee, was ich auf der Backend-Seite entwickeln muss. Aber was UI/UX angeht, bin ich wirklich, wirklich schlecht. Und die Mockups, die ich gemacht habe, sind einfach nur hässlich :smiley:

Deshalb wäre es super, wenn jemand, der nicht unbedingt Entwickler ist und Zeit hat, das gerne machen würde :smiley:

Also so eine Art Mockup der Rhasspy-Ansicht. Ich schaue mir mit ihm an, was der Service kann, damit er etwas daraus machen kann.