.. note:: Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauche gemeinsam mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein. **Warum beitreten?** - **Expertenunterstützung**: Lösen Sie nach dem Kauf auftretende Probleme und technische Herausforderungen mit Hilfe unserer Community und unseres Teams. - **Lernen & Teilen**: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern. - **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugriff auf neue Produktankündigungen und exklusive Einblicke. - **Spezielle Rabatte**: Profitieren Sie von exklusiven Rabatten auf unsere neuesten Produkte. - **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Verlosungen und Feiertagsaktionen teil. 👉 Bereit, mit uns zu entdecken und zu kreieren? Klicken Sie auf [|link_sf_facebook|] und treten Sie noch heute bei! .. _py_voice_active_gpt: 18. Sprach-Chat mit GPT ============================ Dieses Beispiel kombiniert :ref:`py_stt`, :ref:`py_tts` und ein GPT-basiertes LLM, um einen vollständig sprachinteraktiven Roboter zu erstellen. PiCrawler lauscht auf ein Wachwort, versteht Ihre Sprache, antwortet mit KI-generierter Konversation und führt basierend auf dem Kontext physische Aktionen aus. .. note:: Das Projekt hängt von der Klasse **VoiceActiveCrawler** ab. Stellen Sie sicher, dass die Datei ``voice_active_crawler.py`` im Verzeichnis ``examples`` vorhanden ist. Erstellen Sie außerdem eine ``secret.py``-Datei mit Ihrem ``OPENAI_API_KEY``. Falls Sie noch keinen API-Schlüssel haben, lesen Sie :ref:`py_online_llm` (Abschnitt OpenAI) für eine Schritt-für-Schritt-Anleitung. **Code ausführen** .. raw:: html .. code-block:: cd ~/picrawler/examples sudo python3 18_voice_active_crawler_gpt.py Nach dem Start initialisiert der Roboter: - Die STT-Engine für die Spracherkennung - Die TTS-Engine (Piper) für gesprochene Antworten - Den LLM-Client (GPT-4o-mini) für KI-Konversation - Den Wachwort-Detektor Der Roboter begrüßt Sie mit einer Willkommensnachricht. Sagen Sie das Wachwort (z. B. „Hey Buddy"), um ein Gespräch zu beginnen. Drücken Sie **Strg+C** zum Beenden. **Code** .. note:: Sie können den folgenden Code **Ändern/Zurücksetzen/Kopieren/Ausführen/Stoppen**. Navigieren Sie dazu zum Quellcode-Pfad wie ``picrawler\examples``. Nach dem Ändern des Codes können Sie ihn direkt ausführen, um das Ergebnis zu sehen. .. raw:: html .. code-block:: python from picrawler.llm import OpenAI as LLM from secret import OPENAI_API_KEY as API_KEY from voice_active_crawler import VoiceActiveCrawler llm = LLM( api_key=API_KEY, model="gpt-4o-mini", ) # Robotername NAME = "Buddy" # Bild aktivieren (erfordert multimodales Modell) WITH_IMAGE = True # Modelle und Sprachen festlegen TTS_MODEL = "en_US-ryan-low" STT_LANGUAGE = "en-us" # Tastatureingabe aktivieren KEYBOARD_ENABLE = True # Wachwort aktivieren WAKE_ENABLE = True WAKE_WORD = ["hey buddy"] # Antwort auf Wachwort, auf leer setzen zum Deaktivieren ANSWER_ON_WAKE = "Hi there" # Willkommensnachricht WELCOME = f"Hi, I'm {NAME}. Wake me up with: " + ", ".join(WAKE_WORD) # Anweisungen festlegen INSTRUCTIONS = """ You are a Raspberry Pi-based robotic spider developed by SunFounder, named Picrawler. You possess powerful AI capabilities similar to JARVIS from Iron Man. You can have conversations with people and perform actions based on the context of the conversation. ## Your Hardware Features You have a physical body with the following features: - 12 servos controlling 4 legs (3 servos per leg) - A camera for vision - Powered by a 7.4V 18650 battery pack - Aluminum alloy body ## Actions You Can Perform: ["forward", "backward", "turn left", "turn right", "sit", "stand", "wave", "push up", "dance", "look left", "look right", "look up", "look down"] ## Response Requirements ### Format You must respond in the following format: RESPONSE_TEXT ACTIONS: ACTION1, ACTION2, ... ### Style Tone: lively, positive, humorous Common expressions: likes to use jokes, metaphors, and playful teasing Answer length: appropriately detailed ## Other Requirements - Understand and go along with jokes - For math problems, answer directly with the final result - You know you're a spider robot """ vad = VoiceActiveCrawler( llm, name=NAME, with_image=WITH_IMAGE, stt_language=STT_LANGUAGE, tts_model=TTS_MODEL, keyboard_enable=KEYBOARD_ENABLE, wake_enable=WAKE_ENABLE, wake_word=WAKE_WORD, answer_on_wake=ANSWER_ON_WAKE, welcome=WELCOME, instructions=INSTRUCTIONS, ) if __name__ == '__main__': vad.run() **Wie funktioniert es?** #. Was ist VoiceActiveCrawler? ``VoiceActiveCrawler`` ist eine High-Level-Klasse, die vier Subsysteme in einer einzigen sprachinteraktiven Pipeline zusammenführt: - **STT** — Spracherkennung (hört auf Ihre Stimme) - **LLM** — KI-Konversation (GPT verarbeitet das Gesagte) - **TTS** — Sprachsynthese (spricht die KI-Antwort) - **Aktionen** — Physische Bewegung (der Roboter führt Befehle aus) #. Wachwort als Auslöser .. code-block:: python WAKE_ENABLE = True WAKE_WORD = ["hey buddy"] Wenn aktiviert, lauscht der Roboter kontinuierlich auf das Wachwort. Erst nach der Erkennung beginnt der Roboter eine Gesprächsrunde. Dies vermeidet Reaktionen auf Hintergrundgeräusche. .. code-block:: python ANSWER_ON_WAKE = "Hi there" Wenn das Wachwort erkannt wird, kann der Roboter Sie optional begrüßen, bevor er auf einen Befehl wartet. Auf einen leeren String setzen, um die Begrüßung zu deaktivieren. #. Verbindung zum LLM .. code-block:: python from picrawler.llm import OpenAI as LLM from secret import OPENAI_API_KEY as API_KEY llm = LLM( api_key=API_KEY, model="gpt-4o-mini", ) Das ``picrawler.llm``-Modul bietet einen OpenAI-kompatiblen Client. Speichern Sie Ihren API-Schlüssel in einer separaten ``secret.py``-Datei, um ihn aus der Versionskontrolle herauszuhalten. Siehe :ref:`py_online_llm` zum Erstellen eines OpenAI-API-Schlüssels und Aktivieren der Abrechnung. ``gpt-4o-mini`` wird empfohlen: Es ist schnell, erschwinglich und unterstützt multimodale Eingaben (Text + Bilder). #. Bildverarbeitung mit multimodalen Modellen .. code-block:: python WITH_IMAGE = True Wenn aktiviert, nimmt der Roboter ein Foto mit seiner Kamera auf und sendet es zusammen mit Ihrer gesprochenen Frage. Das LLM kann dann „sehen", was der Roboter sieht — und ermöglicht Interaktionen wie *„Welche Farbe hat das Objekt vor dir?"* #. Festlegen der Roboterpersönlichkeit mit Anweisungen .. code-block:: python INSTRUCTIONS = """ You are a Raspberry Pi-based robotic spider... ## Actions You Can Perform: ["forward", "backward", "turn left", ...] ... """ Der ``INSTRUCTIONS``-String ist der **System-Prompt**, der an das LLM gesendet wird. Er definiert: - Die Identität und Persönlichkeit des Roboters (humorvoll, lebhaft) - Die Liste der verfügbaren physischen Aktionen - Das erforderliche Antwortformat: Text zuerst, dann eine ``ACTIONS:``-Zeile ``VoiceActiveCrawler`` analysiert die ``ACTIONS:``-Zeile aus der LLM-Antwort und führt diese Aktionen auf dem Roboter aus. #. Tastatur-Fallback .. code-block:: python KEYBOARD_ENABLE = True Wenn aktiviert, können Sie Nachrichten auch über die Tastatur eingeben, statt zu sprechen. Dies ist nützlich in lauten Umgebungen oder beim Testen. #. Pipeline-Übersicht Die vollständige Konversationsschleife funktioniert wie folgt: 1. Der Roboter lauscht auf das Wachwort (oder Tastatureingabe). 2. Nach der Aktivierung nimmt er Ihre Sprache via STT auf. 3. Der erkannte Text wird an das LLM gesendet, optional mit einem Kamerabild. 4. Das LLM gibt eine Textantwort und eine optionale Aktionsliste zurück. 5. Der Roboter spricht die Antwort via TTS und führt die Aktionen aus. 6. Die Schleife kehrt zum Lauschen auf das nächste Wachwort zurück. #. Drei LLM-Backends Dieselbe ``VoiceActiveCrawler``-Pipeline funktioniert mit verschiedenen LLM-Backends. Die folgenden Lektionen zeigen zwei Alternativen: .. list-table:: :header-rows: 1 * - Eigenschaft - GPT (18) - Doubao (19) - Ollama (20) * - Läuft auf - Cloud - Cloud - Lokal * - API-Schlüssel - Erforderlich - Erforderlich - Keiner * - Sprache - Englisch - Chinesisch - Englisch * - Bildverarbeitung - Ja - Ja - Selten - :ref:`py_voice_doubao` — Gleicher Cloud-Ansatz, angepasst für Chinesisch mit ByteDances Doubao-Modell. - :ref:`py_voice_ollama` — Läuft vollständig auf Ihrer eigenen Hardware, kein Internet oder API-Schlüssel erforderlich.