Ein Sprachassistent mit Gesichtserkennung und GPT-3 als Prototyp
OpenCV-Gesichtserkennung, Azure Speech Recognition und GPT-3-Textgenerierung zu einem sprechenden Desktop-Begleiter verbunden, an einem Wochenende 2022 in Python.
Ein Sprachassistent mit Gesichtserkennung und GPT-3 als Prototyp
Das war ein Wochenendprojekt von Ende 2022, genau als GPT-3 für Hobbyentwickler greifbar wurde. Die Frage: Kann ich in einem einzigen Python-Skript etwas bauen, das einen sieht, einem zuhört und antwortet?
Der Stack bestand am Ende aus drei zusammengeklebten APIs:
- OpenCV für den Webcam-Zugriff und die Gesichtserkennung über Haar-Kaskaden
- Azure Cognitive Services Speech für Speech-to-Text
- OpenAI GPT-3 (damals text-davinci-003), um eine Antwort zu erzeugen
- gTTS + VLC, um die Antwort wieder in Audio umzuwandeln
Die Hauptschleife liest Webcam-Frames, zeichnet ein Rechteck, wenn ein Gesicht erkannt wird, und wartet auf Sprache. Sobald etwas erkannt wurde, geht es an GPT, und die Antwort wird laut vorgelesen. Ein kleines tkinter-Fenster zeigt das Transkript und hat Buttons für Englisch und Deutsch, um die Erkennungssprache umzuschalten.
Die Gesichtserkennung ist rein kosmetisch, sie beeinflusst nicht, was GPT bekommt. Ich habe sie vor allem eingebaut, weil es das Ganze lebendiger wirken lässt, wenn man beim Sprechen sieht, wie der Rahmen reagiert.
Rückblickend ist es ein Kind seiner Zeit: Die text-davinci-003-Aufrufe müsste man heute anpassen, und die Latenz war deutlich spürbar. Als Proof of Concept hat es aber überraschend gut funktioniert, und es war wirklich das erste Mal, dass ich etwas gebaut habe, das sich anfühlte, als würde es zuhören. Code auf GitHub.