Speech Recognition Java /Processing

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Hab mal kurz in das Processing-Tutorial geschaut.


    Die draw-Methode schein wohl das Herzstück zu sein und wird autom. von diesem System aufgerufen.


    Wenn Du in der draw-Methode die msg-Nachricht der websocketOnMessage-Methode verwenden willst, dann muss das so aussehen...


    Code
    void draw() {
        if (msg != null) {
            if (msg.contains("hello")) background(250);
        }
    }
    void websocketOnMessage(WebSocketConnection con, String msg){
        this.msg = msg;
    }

    Edith an @SwissCH: Öhm - danke für den Daumen. Aber funktioniert es auch? Habe es nur nach Überfliegen der Referenz geschlussfolgert...

  • suuupii danke euch allen Klasse :love:<3<3<3<3


    Ihr helft mir damit echt ich habe es zum laufen gekriegt ist echt toll nun habe ich bereits das grundgerüst welches ich füpr mein Projekt brauche.





    ist nur mal testweise funktioniert noch nicht ganz wie ichs mir gedacht habe aber schon ganz okay

  • Das wird aber so nicht funktionieren: msg.contains("kreis,Kreis,ellipse,ball") ausser Processing hat eine eigene String.contains methode.


    Ich nehme an du wolltest folgendes erreichen:


    Java: test.java
    msg = msg.toLowerCase();
    if (msg.contains("kreis") || msg.contains("ellipse") || msg.contains("ball")) {
       do something;
    }

    Zeile 1: so musst du nicht auf die Gross-/Kleinschreibung achten, am besten machst du das gleich in der websocketOnMessage methode wo du die msg this.msg zuweist.
    Zeile 2: Du willst ja wenn kreis oder (||) ellipse oder ball vorkommt do something ausführen. (Für und bedingungen: &&)

  • Hallo zusammen ich habe nun ein weiteres kleineres Problem.


    Ich möchte dass Processing nur dann zuhört, wenn ich gleichzeitig meine Mouse gedrückt halte, nun habe ich dies so versucht:

    Java
    if (msg != null&&mousePressed) {
        textAlign(CENTER);
        textSize(26); 
        background(0);
        text(msg, width/2, height/2,);


    Nun hört er aber immer noch bei allem zu was ich sage, einziger unterschied ist es dass er es erst anzeigt, wenn ich meine maus gedrückt habe. Dies ist aber nicht das Resultat welche ich erzielen möchte.


    Hier mein ganzer Code:


    Wie gesagt eigentlich möchte ch dass meine Sprache nur aufgezeichnet wird wenn ich auch noch eine Taste oder meine maus gedrückt habe.


    Gruss

  • Soweit ich Processing bis jetzt überblicke, ist die draw-Methode Dreh- und Angel-Punkt.
    Deshalb mach den Test mal in der draw-Methode (Zeile 14) in obigem Listing:


    Code
    if (msg != null && mousePressed)


    Damit wird dein Code der draw-Methode nur dann ausgeführt, wenn msg eine Nachricht enthält und eine Maustaste gedrückt ist.
    Das ist kurz und schmutzig.


    Um den ganzen Spracherkennungsklapperatismus nur aktiv zu haben, wenn eine Maustaste gedrückt wird, füge folgende zwei Methoden hinzu...


    Code
    void mousePressed() {
        socket.start()
    }
    void mouseReleased() {
        socket.stop()
    }


    ...und ändere die setup-Methode wie folgt:

    Code
    void setup() {
      socket = new WebSocketP5(this, 8080);
      socket.stop(); // DIESE ZEILE HINZUFÜGEN !!!
      fullScreen();
      // size(900, 100);
      background(0);
    }

    Dann kannst Du die draw-Methode so lassen, wie sie ist...


    PS: Du kannst in der websocketOnMessage-Methode bis auf Zeile 36. this.msg = msg; momentan im Prinzip alles dem Orkus überantworten...


    Edith hat Tom's Getippsel korrigiert und noch folgende Anmerkung:
    Unter der Annahme, dass die draw-Methode kontinuierlich von Processing aufgerufen wird, wird dein "Hello World"-Befehl nach der ersten Erkennung in der
    draw-Mehtode immer wieder ausgeführt - bis Du den Stecker ziehst.
    Soll der Code für eine Nachricht nur einmalig ausgeführt werden, muss ein msg = null; an des Ende der draw-Methode...

BlueBrixx