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!

20. Lokaler Sprach-Chat mit Ollama

Dieses Beispiel ersetzt die cloudbasierte GPT-API durch ein lokal laufendes Ollama-LLM. Die gesamte KI-Verarbeitung bleibt auf Ihrem eigenen Gerät — kein Internet erforderlich, keine API-Schlüssel zu verwalten. Es ist ein vollständig offline sprachinteraktiver Roboter.

Code ausführen

cd ~/picrawler/examples
sudo python3 20_voice_active_crawler_ollama.py

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 Ollama as LLM

from voice_active_crawler import VoiceActiveCrawler

# Wenn Ollama auf demselben Raspberry Pi läuft, verwenden Sie "localhost".
# Wenn es auf einem anderen Computer in Ihrem LAN läuft, ersetzen Sie es durch dessen IP-Adresse.
llm = LLM(
   ip="localhost",
   model="llama3.2:3b"   # Sie können jedes Modell verwenden
)

# Robotername
NAME = "Buddy"

# Bild aktivieren (erfordert multimodales Modell)
WITH_IMAGE = False

# 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,
   disable_think=True,
)

if __name__ == '__main__':
   vad.run()

Wie funktioniert es?

  1. Was ist Ollama?

    Ollama ist ein Tool zum lokalen Ausführen von Large Language Models auf Ihrer eigenen Hardware. Anders als die GPT-Lektion, die eine Cloud-API aufruft, läuft dieses Beispiel vollständig auf dem Gerät — Ihre Konversationen verlassen niemals den Raspberry Pi (oder Ihr lokales Netzwerk).

    # Installieren Sie Ollama und laden Sie dann ein Modell:
    ollama pull llama3.2:3b
    
  2. Lokale LLM-Verbindung

    from picrawler.llm import Ollama as LLM
    
    llm = LLM(
        ip="localhost",
        model="llama3.2:3b"
    )
    

    Die Ollama-Klasse verbindet sich über die OpenAI-kompatible API mit einem Ollama-Server. Wesentliche Unterschiede zur Cloud-GPT-Einrichtung:

    • Kein API-Schlüssel — Authentifizierung ist für einen lokalen Server nicht erforderlich.

    • IP-Adresse — Verwenden Sie "localhost", wenn Ollama auf demselben Pi läuft, oder eine LAN-IP wie "192.168.1.100", wenn es auf einem anderen Computer läuft.

    • Modell — Jedes in Ollama geladene Modell funktioniert (llama3.2:3b, qwen2.5:7b, mistral usw.).

  3. Bildverarbeitung deaktivieren

    WITH_IMAGE = False
    

    Die meisten Ollama-Modelle unterstützen keine multimodale (Bild-)Eingabe. WITH_IMAGE auf False zu setzen überspringt den Kameraaufnahme-Schritt. Wenn Sie ein bildfähiges Modell laden (z. B. llava), können Sie dies auf True setzen.

  4. Think deaktivieren

    vad = VoiceActiveCrawler(
        ...
        disable_think=True,
    )
    

    Einige Ollama-Modelle (insbesondere Reasoning-Modelle wie qwen2.5) geben <think>-Tags in ihrer Ausgabe aus. disable_think=True weist VoiceActiveCrawler an, diese Tags zu entfernen, sodass der Roboter nur die endgültige Antwort spricht.

  5. Dieselbe Pipeline, offline

    Die Konversationspipeline ist identisch mit 18. Sprach-Chat mit GPT:

    1. Wachworterkennung löst eine Runde aus.

    2. STT wandelt Ihre Sprache in Text um.

    3. Der Text wird an das lokale Ollama-LLM gesendet.

    4. Das LLM gibt eine Antwort und optionale Aktionen zurück.

    5. TTS spricht die Antwort, und der Roboter führt Aktionen aus.

    Der entscheidende Unterschied: Schritt 3 läuft auf Ihrer eigenen Hardware, ohne Cloud-Abhängigkeit, ohne Ratenbegrenzungen und mit vollständiger Privatsphäre.

  6. Hardware-Überlegungen

    Ein LLM lokal auszuführen ist ressourcenintensiv. Auf einem Raspberry Pi:

    • Kleinere Modelle (3B Parameter, wie llama3.2:3b) laufen langsam, funktionieren aber; rechnen Sie mit mehreren Sekunden Verarbeitung pro Antwort.

    • Größere Modelle (7B+) sind zu langsam für den interaktiven Einsatz auf einem Pi.

    • Für bessere Leistung führen Sie Ollama auf einem separaten Computer in Ihrem LAN aus und verweisen mit dem ip-Parameter darauf.