Bemerkung

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 [hier] und treten Sie noch heute bei!

18. Sprach-Chat mit GPT

Dieses Beispiel kombiniert 15. STT (Speech-to-Text), 16. TTS (Text-to-Speech) 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.

Bemerkung

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 17. Verbindung zu Online-LLMs (Abschnitt OpenAI) für eine Schritt-für-Schritt-Anleitung.

Code ausführen

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

Bemerkung

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.

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?

  1. 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)

  2. Wachwort als Auslöser

    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.

    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.

  3. Verbindung zum LLM

    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 17. Verbindung zu Online-LLMs 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).

  4. Bildverarbeitung mit multimodalen Modellen

    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?“

  5. Festlegen der Roboterpersönlichkeit mit Anweisungen

    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.

  6. Tastatur-Fallback

    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.

  7. 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.

  8. Drei LLM-Backends

    Dieselbe VoiceActiveCrawler-Pipeline funktioniert mit verschiedenen LLM-Backends. Die folgenden Lektionen zeigen zwei Alternativen:

    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