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]
2. TTS avec Piper et OpenAI
Dans la leçon précédente, nous avons exploré Espeak et Pico2Wave, deux moteurs TTS hors ligne simples sur Raspberry Pi. Maintenant, faisons un grand pas en avant et essayons deux options TTS plus avancées qui offrent une meilleure qualité vocale et plus de flexibilité :
Piper — un moteur TTS rapide basé sur des réseaux de neurones qui fonctionne complètement hors ligne sur Raspberry Pi.
OpenAI TTS — un service en ligne qui fournit des voix très naturelles et humaines, parfait pour une parole expressive.
Ces moteurs rendront votre Pironman 5 Pro MAX plus réaliste et vivant. 🚀
1. Tester Piper
Piper est un moteur TTS neuronal hors ligne, ce qui signifie que vous n’avez pas besoin de connexion Internet une fois le modèle installé. Il prend en charge plusieurs langues et voix, ce qui en fait une option puissante pour la parole embarquée.
Exécuter le programme
cd ~/sunfounder-voice-assistant/examples sudo python3 tts_piper.py
La première fois que vous l’exécutez, le modèle vocal sélectionné sera téléchargé automatiquement.
Vous devriez ensuite entendre le Pironman 5 Pro MAX dire :
Hello! I'm Piper TTS.Vous pouvez changer de voix ou de langue en appelant
set_model()avec un nom de modèle différent.
Code
from sunfounder_voice_assistant.tts import Piper
tts = Piper()
# Lister les langues supportées
print(tts.available_countrys())
# Lister les modèles pour l'anglais (en_us)
print(tts.available_models('en_us'))
# Définir un modèle vocal (téléchargement automatique s'il n'est pas déjà présent)
tts.set_model("en_US-amy-low")
# Dire quelque chose
tts.say("Hello! I'm Piper TTS.")
Explication du code :
available_countrys()— Liste toutes les langues supportées.available_models()— Liste les modèles disponibles pour une langue spécifique.set_model()— Définit le modèle vocal. Si le modèle n’est pas installé, il sera téléchargé automatiquement.say()— Convertit le texte en parole et le lit immédiatement.
💡 Astuce : Essayez différents modèles pour comparer la vitesse, la clarté et les accents. Certains modèles sont plus légers (plus rapides), tandis que d’autres ont une fidélité plus élevée.
2. Tester OpenAI TTS
Obtenir et sauvegarder votre clé API
Allez sur OpenAI Platform et connectez-vous. Sur la page API keys, cliquez sur Create new secret key.
Remplissez les détails (Propriétaire, Nom, Projet et autorisations si nécessaire), puis cliquez sur Create secret key.
Une fois la clé créée, copiez-la immédiatement — vous ne pourrez plus la revoir. Si vous la perdez, vous devez en générer une nouvelle.
Dans votre dossier de projet (par exemple :
/), créez un fichier appelésecret.py:cd ~/sunfounder-voice-assistant/examples sudo nano secret.py
Collez votre clé dans le fichier comme ceci :
# secret.py # Store secrets here. Never commit this file to Git. OPENAI_API_KEY = "sk-xxx"
Exécuter le programme
cd ~/sunfounder-voice-assistant/examples
sudo python3 tts_openai.py
Le programme se connectera au service TTS d’OpenAI, et le Pironman 5 Pro MAX parlera en utilisant une sortie vocale naturelle et expressive.
Vous pouvez changer les styles de voix et ajouter des instructions pour contrôler le ton et l’expression (par exemple, triste, dramatique, enjoué).
Cela rend OpenAI TTS idéal pour les robots interactifs, la narration ou les assistants éducatifs.
Code
from sunfounder_voice_assistant.tts import OpenAI_TTS
from secret import OPENAI_API_KEY
# Exportez votre OPENAI_API_KEY avant d'exécuter le script
# export OPENAI_API_KEY="sk-proj-xxxxxx"
tts = OpenAI_TTS(api_key=OPENAI_API_KEY)
# tts.set_model('tts-1')
tts.set_voice('alloy')
tts.set_model('gpt-4o-mini-tts')
msg = "Hello! I'm OpenAI TTS."
print(f"Say: {msg}")
tts.say(msg)
msg = "with instructions, I can say word sadly"
instructions = "say it sadly"
print(f"Say: {msg}, with instructions: '{instructions}'")
tts.say(msg, instructions=instructions)
msg = "or say something dramaticly."
instructions = "say it dramaticly"
print(f"Say: {msg}, with instructions: '{instructions}'")
tts.say(msg, instructions=instructions)
Explication du code :
OpenAI_TTS()— Initialise le moteur TTS OpenAI en utilisant votre clé API.set_model()— Sélectionne le modèle TTS (par exemple,gpt-4o-mini-tts).set_voice()— Choisit une voix spécifique (par exemple,alloy).say(text)— Convertit le texte en parole et le lit.say(text, instructions=...)— Ajoute des instructions de ton expressives, vous permettant de contrôler dynamiquement le style de parole.
Exemple :
« say it sadly » → ton doux et émotionnel
« say it dramatically » → expression audacieuse et dramatique
« say it excitedly » → ton enthousiaste
Dépannage
Pas de module nommé “secret”
Cela signifie que
secret.pyn’est pas dans le même dossier que votre fichier Python. Déplacezsecret.pydans le même répertoire où vous exécutez le script, par exemple :ls ~/ # Assurez-vous de voir les deux : secret.py et votre fichier .py
OpenAI : Clé API invalide / 401
Vérifiez que vous avez collé la clé complète (commence par
sk-) et qu’il n’y a pas d’espaces ou de sauts de ligne supplémentaires.Assurez-vous que votre code l’importe correctement :
from secret import OPENAI_API_KEY
Confirmez l’accès réseau sur votre Pi (essayez
ping api.openai.com).
OpenAI : Quota dépassé / erreur de facturation
Vous devrez peut-être ajouter un moyen de paiement ou augmenter le quota dans le tableau de bord OpenAI.
Réessayez après avoir résolu le problème de compte/facturation.
Piper : tts.say() s’exécute mais pas de son
Assurez-vous qu’un modèle vocal est réellement présent :
ls ~/.local/share/piper/voicesConfirmez que le nom de votre modèle correspond exactement dans le code :
tts.set_model("en_US-amy-low")
Vérifiez le périphérique/volume de sortie audio sur votre Pi (
alsamixer), et que les haut-parleurs sont connectés et alimentés.
Erreurs ALSA / périphérique sonore (par exemple, « Audio device busy » ou « No such file or directory »)
Fermez les autres programmes utilisant l’audio.
Redémarrez le Pi si le périphérique reste occupé.
Pour la sortie HDMI par rapport à la prise casque, sélectionnez le périphérique correct dans les paramètres audio de Raspberry Pi OS.
Permission refusée lors de l’exécution de Python
Essayez avec
sudosi votre environnement l’exige :sudo python3 tts_piper.py
Comparaison des moteurs TTS
Élément |
Espeak |
Pico2Wave |
Piper |
OpenAI TTS |
|---|---|---|---|---|
Fonctionne sur |
Intégré sur Raspberry Pi (hors ligne) |
Intégré sur Raspberry Pi (hors ligne) |
Raspberry Pi / PC (hors ligne, besoin du modèle) |
Cloud (en ligne, besoin de clé API) |
Qualité vocale |
Robotique |
Plus naturelle qu’Espeak |
Naturelle (TTS neuronal) |
Très naturelle / humaine |
Contrôles |
Vitesse, hauteur tonale, volume |
Contrôles limités |
Choisir différentes voix/modèles |
Choisir modèle et voix |
Langues |
Beaucoup (qualité variable) |
Ensemble limité |
Beaucoup de voix/langues disponibles |
Meilleur en anglais (autres variables selon disponibilité) |
Latence / vitesse |
Très rapide |
Rapide |
Temps réel sur Pi 4/5 avec modèles « low » |
Dépend du réseau (généralement faible latence) |
Configuration |
Minimale |
Minimale |
Télécharger les modèles |
Créer une clé API, installer le client |
Idéal pour |
Tests rapides, invites basiques |
Voix hors ligne légèrement meilleure |
Projets locaux avec meilleure qualité |
Qualité la plus élevée, options vocales riches |