Note

Bienvenue sur la communauté Facebook SunFounder Raspberry Pi, Arduino & ESP32 !

  • Obtenez du support technique et de l’aide au dépannage.

  • Apprenez et partagez des projets, des astuces et des tutoriels.

  • Accédez en avant-première aux aperçus et mises à jour des produits.

  • Profitez de réductions exclusives et de cadeaux.

👉 Rejoignez-nous ici : [here]

7. Assistant Vocal IA

Cette leçon transforme votre Pironman 5 Pro MAX en assistant IA axé sur la voix. Avec le code fourni, le robot va : attendre un mot de réveil, transcrire votre discours avec Vosk, l’envoyer à un LLM OpenAI, et répondre vocalement en utilisant Piper TTS.


Avant de commencer

Assurez-vous d’avoir :

  • 1. Tester Piper — La voix Piper fonctionne (par exemple, vous pouvez lire « Hello »).

  • Tester Vosk — La STT Vosk fonctionne pour votre langue (par exemple, en-us).

  • 5. Connexion aux LLM en ligne — Votre clé API OpenAI enregistrée dans secret.py sous le nom OPENAI_API_KEY.

  • Un microphone et un haut-parleur fonctionnels sur le Pironman 5 Pro MAX.

  • Une connexion réseau stable (le LLM est en ligne).


Exécuter l’exemple

cd ~/sunfounder-voice-assistant/examples/
sudo python3 voice_assistant.py

Configuration utilisée par le code :

  • LLM : OpenAI (gpt-4o-mini)

  • TTS : Piper (en_US-ryan-low)

  • STT : Vosk (en-us)

  • Mot de réveil : "hey buddy"

  • Saisie clavier : activée (saisie manuelle optionnelle)

  • Mode image : activé (WITH_IMAGE=True) — nécessite un LLM multimodal si vous décidez d’utiliser des images plus tard

Ce qui se passe :

  1. L’assistant affiche un message de bienvenue avec la phrase de réveil.

  2. Il écoute « hey buddy ».

  3. Après le réveil, votre discours est transcrit (Vosk → texte).

  4. Le texte est envoyé à OpenAI (gpt-4o-mini) pour obtenir une réponse.

  5. La réponse est vocalisée avec Piper (en_US-ryan-low).

Exemple d’interaction

Vous : Hey Buddy
Robot : Bonjour !

Vous : Quelle est la capitale de l'Italie ?
Robot : La capitale de l'Italie est Rome.

Code

from sunfounder_voice_assistant.voice_assistant import VoiceAssistant
from sunfounder_voice_assistant.llm import OpenAI as LLM
from secret import OPENAI_API_KEY as API_KEY

llm = LLM(
    api_key=API_KEY,
    model="gpt-4o-mini",
)

# Nom du robot
NAME = "Buddy"

# Activer l'image, nécessite un modèle de langage multimodal
WITH_IMAGE = True

# Définir les modèles et langues
LLM_MODEL = "gpt-4o-mini"
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 = [f"hey {NAME.lower()}"]
# Définir la réponse au réveil, laisser vide pour désactiver
ANSWER_ON_WAKE = "Bonjour"

# Message de bienvenue
WELCOME = f"Bonjour, je suis {NAME}. Réveillez-moi avec : " + ", ".join(WAKE_WORD)

# Définir les instructions
INSTRUCTIONS = f"""
Vous êtes un assistant utile, nommé {NAME}.
"""

va = VoiceAssistant(
    llm,
    name=NAME,
    with_image=WITH_IMAGE,
    tts_model=TTS_MODEL,
    stt_language=STT_LANGUAGE,
    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__":
    va.run()

Explication du code :

  • OpenAI(..., model="gpt-4o-mini") — Utilise OpenAI comme seul LLM dans cette leçon.

  • NAME / WAKE_WORD — Personnalise l’assistant (« Buddy », « hey buddy »).

  • WITH_IMAGE=True — Active le mode image dans l’assistant (aucune logique d’entrée/sortie d’image incluse ici).

  • TTS_MODEL="en_US-ryan-low" — Voix Piper utilisée pour les réponses.

  • STT_LANGUAGE="en-us" — Langue Vosk pour la reconnaissance.

  • KEYBOARD_ENABLE=True — Permet une saisie manuelle optionnelle pendant le débogage.

  • WELCOME / INSTRUCTIONS — Message de démarrage et personnalité / instruction système de l’assistant.

  • va.run() — Démarre la boucle : réveil → écoute → LLM → parole.

Changer de LLM ou de TTS

Vous pouvez facilement changer de LLM, de TTS ou de langue STT avec seulement quelques modifications :

  • LLM supportés :

    • OpenAI

    • Doubao

    • Deepseek

    • Gemini

    • Qwen

    • Grok

  • 1. Tester Piper — Vérifiez les langues supportées par Piper TTS.

  • Tester Vosk — Vérifiez les langues supportées par Vosk STT.

Pour changer, modifiez simplement la partie initialisation dans le code :

from sunfounder_voice_assistant.llm import Gemini as LLM
llm = LLM(api_key="VOTRE_CLÉ", model="gemini-pro")

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

Dépannage

  • Le robot ne répond pas au mot de réveil

    • Vérifiez que le microphone fonctionne.

    • Assurez-vous que WAKE_ENABLE = True.

    • Ajustez le mot de réveil pour qu’il corresponde à votre prononciation.

    • Réduisez le bruit de fond et parlez clairement.

  • Aucun son du haut-parleur

    • Vérifiez le nom du modèle TTS (par exemple, en_US-ryan-low).

    • Testez Piper ou Espeak manuellement.

    • Vérifiez la connexion du haut-parleur et le volume.

  • Erreur de clé API ou timeout

    • Vérifiez votre clé dans secret.py.

    • Assurez-vous que votre connexion réseau est stable.

    • Confirmez que le modèle LLM est supporté (par exemple, gpt-4o-mini).

  • Le mot de réveil fonctionne mais pas de réponse

    • Vérifiez que la langue STT correspond à votre accent.

    • Assurez-vous que le modèle a été téléchargé correctement.

    • Essayez d’afficher les journaux de débogage pour confirmer que la STT fonctionne.

  • La TTS fonctionne mais pas de réponse du LLM

    • Vérifiez que la clé API est valide.

    • Vérifiez le nom du modèle et les paramètres du LLM.

    • Assurez-vous d’avoir une connexion Internet.