Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [here] und treten Sie heute bei!
21. KI-Sprachassistent-Auto
In dieser Lektion verwandelst du deinen PiCar-X in einen KI-gestützten Sprachassistenten auf Rädern. Der Roboter kann auf deine Stimme reagieren, erkennen, was du sagst, mit Emotion sprechen und seine „Gefühle“ durch Bewegungen, Gesten und Lichter ausdrücken.
Du wirst ein voll interaktives Sprachassistent-Auto bauen, das folgende Komponenten nutzt:
LLM – Large Language Model (OpenAI GPT oder Doubao).
STT – Speech-to-Text (Sprache zu Text).
TTS – Text-to-Speech (Text zu Sprache).
Sensoren + Aktionen – Ultraschall, Kamera und eingebaute Ausdrucksaktionen.
Bevor du beginnst
Stelle sicher, dass du Folgendes abgeschlossen hast:
Alle Module installieren (Wichtig) — Installiere die Module
robot-hat,vilib,picar-xund führe dann das Skripti2samp.shaus.1. Piper testen — Überprüfe die unterstützten Sprachen von Piper TTS.
2. Vosk testen — Überprüfe die unterstützten Sprachen von Vosk STT.
18. Verbindung zu Online-LLMs herstellen — Dieser Schritt ist sehr wichtig: Besorge dir deinen OpenAI- oder Doubao-API-Schlüssel, oder den API-Schlüssel eines anderen unterstützten LLM.
Du solltest bereits haben:
Ein funktionierendes Mikrofon und einen Lautsprecher auf deinem PiCar-X.
Einen gültigen API-Schlüssel in
secret.pygespeichert.Eine stabile Netzwerkverbindung (eine Kabelverbindung wird für bessere Stabilität empfohlen).
Beispiel ausführen
Beide Sprachversionen befinden sich im selben Verzeichnis:
cd ~/picar-x/example
Englische Version (OpenAI GPT, Anleitung auf Englisch):
sudo python3 21.voice_active_car_gpt.py
LLM:
OpenAI GPT-4o-miniTTS:
en_US-ryan-low(Piper)STT: Vosk (
en-us)
Aktivierungswort:
"Hey buddy"
—
Chinesische Version (Doubao, Anleitung auf Chinesisch):
sudo python3 21.voice_active_car_doubao_cn.py
LLM:
Doubao-seed-1-6-250615TTS:
zh_CN-huayan-x_low(Piper)STT: Vosk (
cn)
Aktivierungswort:
"你好 滴滴"
Bemerkung
Du kannst das Aktivierungswort und den Roboternamen im Code ändern:
NAME = "Buddy" oder NAME = "滴滴"
WAKE_WORD = ["hey buddy"] oder WAKE_WORD = ["你好 滴滴"]
Was passieren wird
Wenn du dieses Beispiel erfolgreich ausführst:
Der Roboter wartet auf das Aktivierungswort (z. B. „Hey Buddy“ / „你好 滴滴“).
Wenn er das Aktivierungswort hört:
Die LEDs beginnen zu blinken und bleiben eingeschaltet.
Der Roboter begrüßt dich mit fröhlicher Stimme.
Anschließend beginnt er in Echtzeit auf deine Stimme zu hören.
Nachdem er verstanden hat, was du gesagt hast, führt er Folgendes aus:
Sendet deine Sprache an das LLM (OpenAI oder Doubao).
„Denkt“ und blinkt mit den LEDs während der Verarbeitung.
Antwortet mit einer TTS-Stimme.
Führt entsprechende Aktionen aus (z. B. Nicken, Drehen, Jubeln).
Wenn du dich ihm zu sehr näherst, erkennt der Ultraschallsensor:
Eine automatische Rückwärtsbewegung zur Sicherheit.
Unterbricht die aktuelle Runde mit einer Warnung.
Beispielinteraktion
Du: Hey Buddy
Roboter: Hallo!
Du: Dreh dich nach links und schau dich um.
Roboter: Alles klar, ich drehe meinen Kopf nach links wie eine neugierige Katze!
AKTIONEN: turn_left, look_left
Wechseln zu anderen LLMs oder TTS
Du kannst ganz einfach zu anderen LLMs, TTS- oder STT-Sprachen wechseln — mit nur wenigen Codeänderungen:
Unterstützte LLMs:
OpenAI
Doubao
Deepseek
Gemini
Qwen
Grok
1. Piper testen — Überprüfe die unterstützten Sprachen von Piper TTS.
2. Vosk testen — Überprüfe die unterstützten Sprachen von Vosk STT.
Zum Wechseln musst du einfach den Initialisierungsteil im Code anpassen:
from picarx.llm import Gemini as LLM
llm = LLM(api_key="YOUR_KEY", model="gemini-pro")
# Modelle und Sprachen festlegen
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"
Aktions- & Sound-Referenz
Unten findest du die Aktionsschlüsselwörter, die das LLM nach der Zeile ACTIONS: zurückgeben kann, und was sie auf dem Roboter auslösen.
Aktion |
Was es macht (siehe preset_actions.py) |
Effekt / Hinweise |
|---|---|---|
|
Schwenkt die Kamera schnell nach rechts↔links in abnehmenden Schritten und zentriert dann. |
„Nein“-Geste; Räder bleiben stehen. |
|
Bewegt die Kamera zweimal auf und ab, dann zentriert. |
„Ja“-Geste; Räder bleiben stehen. |
|
Neigt die Kamera, dann Lenken links/rechts zweimal (±25°), anschließend Zentrierung. |
Verspielte Winke-Bewegung (Verwendung des Lenkservos als „Arme“). |
|
Kleine Neigung; abwechselnd Lenken/Pan ±15° dreimal; Stoppen und Zentrieren. |
„Abwehrende“ Bewegung. |
|
Kopf nach unten neigen; kurze Vorwärts-/Rückwärtsbewegungen; Reset. |
Verspielte „niedliche“ Bewegung; sehr kurze Fahrbewegungen. |
|
Wiederholte kleine Lenkoszillation (±6°) fünfmal; Reset. |
Imitiert „Hände reiben“. |
|
Sanftes Schwenken nach rechts + Neigung nach unten + Lenken nach rechts; kurze Pause; Pose; Reset. |
Wird als „nachdenkliche“ Animation verwendet. |
|
Drei Zyklen aus Vorwärts/Stop/Pan-links/Lenk-links und Rückwärts/Stop/Pan-rechts/Lenk-rechts. |
„Körperverdrehungs“-Bewegung. |
|
Kopf nach oben; zwei Pan-/Lenkbewegungen nach rechts, dann zwei nach links; Zentrierung. |
Festliche, symmetrische Geste. |
|
Reihe von Neigungen nach unten mit variierenden Winkeln und Pausen; endet mit langem Halten; Reset. |
„Traurige“ Körperhaltung. |
Bewegung & Utility
Aktion |
Was es macht |
Hinweise |
|---|---|---|
|
Fährt ~1 Sekunde mit niedriger Geschwindigkeit vorwärts, dann Stopp. |
Implementiert mit |
|
Fährt ~1 Sekunde mit niedriger Geschwindigkeit rückwärts, dann Stopp. |
Implementiert mit |
Soundeffekte
Sound |
Was es macht |
Hinweise |
|---|---|---|
|
Spielt |
Getriggert über |
|
Spielt |
Start-/Bereitschaftssignal. |
Sensor-Trigger (automatisch)
Ultraschall-Näherung
Auslöser: Abstand < 10 cm
Nebeneffekt: automatisches
backward+ Deaktivieren des Bildes für diese RundeEingefügte Meldung:
<<<Ultrasonic sense too close: {distance}cm>>>
Lebenszyklus-Hooks (LED-Indikatoren)
before_listen→ zweimal blinken (bereit zum Zuhören)before_think→ Blinken (Denken)before_say→ LED an (Sprechen)after_say→ auf Aktionen warten → LED auson_stop→ Aktionen stoppen, Geräte schließen
Fehlerbehebung
Der Roboter reagiert nicht auf das Aktivierungswort
Überprüfe, ob das Mikrofon funktioniert.
Stelle sicher, dass
WAKE_ENABLE = Trueist.Passe das Aktivierungswort an deine Aussprache an.
Kein Ton aus dem Lautsprecher
Überprüfe die TTS-Modellkonfiguration.
Teste Piper oder Espeak manuell.
Überprüfe Lautsprecheranschluss und Lautstärke.
API-Key-Fehler oder Zeitüberschreitung
Überprüfe deinen Schlüssel in
secret.py.Stelle eine stabile Netzwerkverbindung sicher.
Vergewissere dich, dass das LLM unterstützt wird.
Picar-X bewegt sich nicht oder reagiert nicht
Überprüfe, ob der Aktionsname mit
actions_dictübereinstimmt.Verifiziere Motor- und Servoverbindungen.
Ultraschallsensor löst unerwartet aus
Überprüfe die Installationshöhe und den Winkel des Sensors.
Passe den
TOO_CLOSE-Schwellwert im Code an.