Note

Bonjour, bienvenue dans la communauté des passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l’univers du Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez les problèmes post-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aperçus exclusifs.

  • Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et concours : Participez à des concours et promotions spéciales.

👉 Prêt à explorer et à créer avec nous ? Cliquez sur [ici] et rejoignez-nous dès aujourd’hui !

20. Chat vocal local avec Ollama

Cet exemple remplace l’API GPT basée sur le cloud par un LLM Ollama exécuté localement. Tout le traitement IA reste sur votre propre machine — aucune connexion internet requise, aucune clé API à gérer. C’est un robot interactif vocal entièrement hors ligne.

Exécuter le code

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

Code

Note

Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, vous devez aller dans le chemin du code source comme picrawler\examples. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.

from picrawler.llm import Ollama as LLM

from voice_active_crawler import VoiceActiveCrawler

# Si Ollama fonctionne sur le même Raspberry Pi, utilisez "localhost".
# S'il fonctionne sur un autre ordinateur de votre réseau local, remplacez par l'adresse IP.
llm = LLM(
   ip="localhost",
   model="llama3.2:3b"   # vous pouvez utiliser n'importe quel modèle
)

# Nom du robot
NAME = "Buddy"

# Activer l'image (nécessite un modèle multimodal)
WITH_IMAGE = False

# Définir les modèles et les langues
TTS_MODEL = "en_US-ryan-low"
STT_LANGUAGE = "en-us"

# Activer la saisie clavier
KEYBOARD_ENABLE = True

# Activer le mot de réveil
WAKE_ENABLE = True
WAKE_WORD = ["hey buddy"]
# Réponse au mot de réveil, laisser vide pour désactiver
ANSWER_ON_WAKE = "Hi there"

# Message de bienvenue
WELCOME = f"Hi, I'm {NAME}. Wake me up with: " + ", ".join(WAKE_WORD)

# Définir les instructions
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()

Comment ça fonctionne ?

  1. Qu’est-ce qu’Ollama ?

    Ollama est un outil pour exécuter des grands modèles de langage localement sur votre propre matériel. Contrairement à la leçon GPT qui appelle une API cloud, cet exemple exécute tout sur l’appareil — vos conversations ne quittent jamais le Raspberry Pi (ou votre réseau local).

    # Installez Ollama, puis téléchargez un modèle :
    ollama pull llama3.2:3b
    
  2. Connexion LLM locale

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

    La classe Ollama se connecte à un serveur Ollama via son API compatible OpenAI. Différences clés par rapport à la configuration cloud GPT :

    • Pas de clé API — l’authentification n’est pas nécessaire pour un serveur local.

    • Adresse IP — utilisez "localhost" si Ollama fonctionne sur le même Pi, ou une IP LAN comme "192.168.1.100" s’il fonctionne sur un autre ordinateur.

    • Modèle — tout modèle téléchargé dans Ollama fonctionne (llama3.2:3b, qwen2.5:7b, mistral, etc.).

  3. Désactiver la vision

    WITH_IMAGE = False
    

    La plupart des modèles Ollama ne prennent pas en charge l’entrée multimodale (image). Définir WITH_IMAGE sur False saute l’étape de capture de la caméra. Si vous téléchargez un modèle compatible vision (par exemple llava), vous pouvez le définir sur True.

  4. Désactiver Think

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

    Certains modèles Ollama (en particulier les modèles de raisonnement comme qwen2.5) émettent des balises <think> dans leur sortie. Définir disable_think=True indique à VoiceActiveCrawler de supprimer ces balises afin que le robot ne prononce que la réponse finale.

  5. Le même pipeline, hors ligne

    Le pipeline de conversation est identique à 18. Chat vocal avec GPT :

    1. La détection du mot de réveil déclenche un tour.

    2. Le STT convertit votre parole en texte.

    3. Le texte est envoyé au LLM Ollama local.

    4. Le LLM renvoie une réponse et des actions optionnelles.

    5. Le TTS prononce la réponse et le robot exécute les actions.

    La différence critique : l’étape 3 s’exécute sur votre propre matériel, sans dépendance cloud, sans limites de débit et avec une confidentialité totale.

  6. Considérations matérielles

    Exécuter un LLM localement est gourmand en ressources. Sur un Raspberry Pi :

    • Les petits modèles (3B paramètres, comme llama3.2:3b) fonctionnent lentement mais marchent ; attendez plusieurs secondes de traitement par réponse.

    • Les grands modèles (7B+) seront trop lents pour une utilisation interactive sur un Pi.

    • Pour de meilleures performances, exécutez Ollama sur un ordinateur séparé dans votre réseau local et pointez le paramètre ip vers celui-ci.