2016-09-28 7 views
0

Ich arbeite an einer persönlichen Voice Assistant App mit Python, und ich möchte eine Web-Schnittstelle hinzufügen, um es von jedem Gerät aus der Ferne zu ermöglichen. Ich habe bereits eine Python-Seite davon, und ich möchte es mit Web-Interface mischen. Vielleicht indem man auf einen Sockel in einem Thread hört. Ich habe Erfahrung mit Python, aber nicht so sehr mit JS.Wie Daten zwischen laufenden Python-Prozess und Javascript übergeben werden

Was ich im Idealfall brauche, ist ein laufender Python-Prozess. Dann nimmt der HTML JS-Client die Stimme des Benutzers auf, konvertiert sie in Text und sendet sie an den Python-Server. Python-Server empfängt den Befehl und führt eine Funktion ein, und gibt ein JSON-Daten wie:

{ 
'reply':'All done, here is your result', 
'data':someBigHTMLoutput, 
'audio':path to generated mp3 audio file of speech using customized voice 
} 

Html ein großer Tisch mit gefundenen Büchern oder Filmen sein kann, zum Beispiel, oder einen anderen Bericht. Oder es kann leer sein, wenn der Befehl das Licht ausschalten soll.

Dann JS muss diese Daten erhalten, ersetzen "Inhalt" Div mit HTML-Daten, AI Antwort Text anzeigen und TTS-Audiodatei vom Server generiert. Und warte auf den nächsten Befehl.

Also von all dem möchte ich wissen, wie man js Client und Python-Server-Datenaustausch ohne Seitenaktualisierung zu nähern?

Wird es genug sein, nur auf einen Socket mit Python zu hören? Aber wie gebe ich Daten zurück an JS?

Und eine weitere Frage ist: Ist es möglich, einige Daten vor und während der Ausführung der Funktion zu pushen? Derzeit kann mein Python-Sprachassistent manchmal Dinge vor, während und nach der Ausführung der Funktion sagen. Gibt es eine Möglichkeit, diesen Sound auch an die HTML-Seite zu senden? Wenn nicht, werde ich die Logik der KI-Antworten überdenken, damit sie erst antworten, wenn die Arbeit erledigt ist.

Ich verbrachte viel Zeit damit, zu googeln, aber ich war nur mit einer riesigen Auswahl an Frameworks verwirrt, während ich nicht einmal sicher bin, ob ich irgendwelche von ihnen für diese relativ einfache Aufgabe brauche.

Danke! Python 3.4

+1

Wenn Sie einen einfachen Rahmen möchten, schauen Sie sich die Flasche oder den Kolben an. Aber ja, Sie wollen einen Rahmen, auch wenn es nur ein "Mikrorahmen" ist. Arbeiten auf Sockelebene bringt nur Schmerzen. – BrenBarn

Antwort

0

Ich endete mit Flask, Flask-SocketIO und JavaScript mit socketio.

Funktioniert wie ein Charme. Vielen Dank. Dadurch kann ich jederzeit Ereignisse ausgeben, was es sehr einfach macht, eine HTML + JS-basierte Benutzeroberfläche zu erstellen, die in Echtzeit mit dem Python-Server interagiert.

Verwandte Themen