Sprachausgabe in Sprachsteuerung integrieren

  • Hallo Leute,


    ich probiere einen Infoscreen mit Sprachsteuerung zu erstellen. Als kleine Spielerei habe ich mir ausgedacht, den Raspberry auch in Worten antworten zu lassen. Leider bin ich absoluter Neuling in Sachen Javascript und scheitere schon daran, den Sprachausgabebefehl in die Spracheingabe zu integrieren. Die Suche nach der "Integration von Befehlen in Javascript" hat mir alles Mögliche gezeigt, aber nicht, das was ich brauche.


    Hier der Code für Annyangs Sprachsteuerung (funktioniert)


    Hier der Code für die Sprachausgabe (funktioniert)

    Code
    pico2wave --lang=de-DE --wave=/tmp/test.wav "Hallo Welt"; play /tmp/test.wav;rm /tmp/test.wav


    Ein Bekannter, der von sich sagt, dass er sich mit Javascript auskennt, meinte "einfach den Beispielbefehl mit deinem eigenen ersetzen". Das klang logisch, aber mein laienhafter Versuch beides zu verbinden, funktioniert natürlich nicht


    Wäre nett wenn mir jemand zeigen könnte, wie man Ein- und Ausgabe richtig verbindet. Muss ich den Ausgabebefehl erst in Javascript "übersetzen"?

  • Hallo,


    was du vorhast geht IMHO so nicht. Grund: JavaScript im Browser ist stark eingeschränkt. Eingeschränkt nicht im Sinne von der Mächtigkeit der Sprache, sondern im Sinne von Zugriff auf das System - was auch gut so ist. Heißt, Shell-Befehle ausführen, so wie du es vor hast, geht nicht.


    Was gehen sollte ist, dass als Server-Client Applikation zu schreiben. Heißt:


    * die Webseite nimmt eine Texteingabe als Befehl entgegen
    * die Webseite sendet diese z.B. als AJAX-Request oder über einen Websocket an den Server
    * der Server analysiert den Text und sendet die passende Audio-Datei zurück
    * die spielt der Browser dann ab


    Gruß, noisefloor

  • Danke noisefloor, auf diese Einschränkung hätte ich natürlich auch selbst kommen müssen. Spezifische Ausnahmen oder Rechte kann man da nicht vergeben, oder?


    Ich weiß nicht (sorry, bin auf diesem Gebiet wirklich Anfänger), ob ich dich richtig verstanden habe:
    Ich soll die Sprachausgabe in verschiedenen Audiodateien hinterlegen und auf Sprachbefehl, die "richtige Antwortdatei" direkt im Browser abspielen lassen? Müsste ich dann an die entsprechende Stelle einfach den Javascript Code zum Audio abspielen setzen?


    Also so? (Komme erst morgen zum ausprobieren)

  • Vielen Dank trotzdem, aber das hat leider auch nicht geklappt.


    Das Mikrofon wird garnicht erst aktiviert, wenn ich den Code wie oben benutze. Habe es alternativ auch so versucht:


    Hat aber auch nur dazu geführt, dass das Mikrofon garnicht erst aktiviert wird. Hat vielleicht noch jemand eine andere Idee, oder sieht den Fehler? Ich hab das Gefühl ich bin nah dran haha

  • Hallo, wollte nur abschließend sagen: habs endlich hinbekommen.


    Für alle, die es interessiert, hier der vollständige Browsercode. Den Raspberry Pi antworten zu lassen erscheint zunächst als sinnlose Spielerei, aber könnte in verschiedenen Projekten auch nützlich sein.


    An sich ist es selbsterklärend. Natürlich muss die Antwort erst mit einem Programm erstellt und (browserabhängig) in mp3 umgewandelt werden. Für die Erstellung empfehle ich "SVOX-pico", zum Umwandeln "lame". Falls es jemand gebrauchen kann, viel Spaß damit!