Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein.
Warum beitreten?
Expertenunterstützung: Lösen Sie Probleme nach dem Kauf 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 Zugang zu neuen Produktankündigungen und Sneak Peeks.
Sonderrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Bereit, mit uns zu entdecken und zu gestalten? Klicken Sie auf [here] und treten Sie noch heute bei!
2. TTS mit Piper und OpenAI
In der vorherigen Lektion haben wir Espeak und Pico2Wave kennengelernt – zwei einfache Offline-TTS-Engines auf dem Raspberry Pi. Nun gehen wir einen großen Schritt weiter und probieren zwei fortgeschrittenere TTS-Optionen aus, die höhere Sprachqualität und mehr Flexibilität bieten:
Piper — eine schnelle, neuronale TTS-Engine, die vollständig offline auf dem Raspberry Pi läuft.
OpenAI TTS — ein Online-Dienst, der sehr natürliche und menschenähnliche Stimmen bereitstellt, ideal für ausdrucksstarke Sprachausgabe.
Mit diesen Engines klingt Ihr Fusion HAT+ deutlich realistischer und lebendiger.
1. Piper testen
Piper ist eine neuronale Offline-TTS-Engine, das heißt, nach der Installation des Modells wird keine Internetverbindung mehr benötigt. Sie unterstützt mehrere Sprachen und Stimmen, was sie zu einer leistungsstarken Lösung für eingebettete Sprachsysteme macht.
Programm ausführen
cd ~/ai-lab-kit/llm sudo python3 tts_piper.py
Beim ersten Start wird das ausgewählte Sprachmodell automatisch heruntergeladen.
Anschließend hören Sie den Fusion HAT+ sagen:
Hello! I'm Piper TTS.Sie können Stimmen oder Sprachen wechseln, indem Sie
set_model()mit einem anderen Modellnamen aufrufen.
Code
from fusion_hat.tts import Piper
tts = Piper()
# Unterstützte Sprachen auflisten
print(tts.available_countrys())
# Modelle für Englisch (en_us) anzeigen
print(tts.available_models('en_us'))
# Ein Sprachmodell auswählen (wird automatisch heruntergeladen, falls noch nicht vorhanden)
tts.set_model("en_US-amy-low")
# Text sprechen
tts.say("Hello! I'm Piper TTS.")
Code-Erklärung:
available_countrys()— Listet alle unterstützten Sprachen auf.available_models()— Listet verfügbare Modelle für eine bestimmte Sprache auf.set_model()— Legt das Sprachmodell fest. Falls es noch nicht installiert ist, wird es automatisch heruntergeladen.say()— Wandelt Text in Sprache um und gibt ihn sofort wieder.
💡 Tipp: Probieren Sie verschiedene Modelle aus, um Geschwindigkeit, Klarheit und Akzente zu vergleichen. Einige Modelle sind leichter (schneller), während andere eine höhere Klangqualität bieten.
2. OpenAI TTS testen
API-Schlüssel erstellen und speichern
Gehen Sie zu OpenAI Platform und melden Sie sich an. Klicken Sie auf der Seite API keys auf Create new secret key.
Füllen Sie die Details aus (Owner, Name, Project und gegebenenfalls Berechtigungen) und klicken Sie dann auf Create secret key.
Sobald der Schlüssel erstellt wurde, kopieren Sie ihn sofort — danach kann er nicht mehr angezeigt werden. Wenn Sie ihn verlieren, müssen Sie einen neuen Schlüssel generieren.
Erstellen Sie in Ihrem Projektordner (z. B.
/) eine Datei namenssecret.py:cd ~/ai-lab-kit/llm sudo nano secret.py
Fügen Sie Ihren Schlüssel in die Datei ein:
# secret.py # Store secrets here. Never commit this file to Git. OPENAI_API_KEY = "sk-xxx"
Programm ausführen
cd ~/ai-lab-kit/llm
sudo python3 tts_openai.py
Das Programm verbindet sich mit dem OpenAI-TTS-Dienst, und der Fusion HAT+ spricht mit natürlicher, ausdrucksstarker Stimme.
Sie können Stimmstile ändern und Anweisungen hinzufügen, um Ton und Ausdruck zu steuern (z. B. traurig, dramatisch, verspielt).
Dadurch eignet sich OpenAI TTS ideal für interaktive Roboter, Storytelling oder Lernassistenten.
Code
from fusion_hat.tts import OpenAI_TTS
from secret import OPENAI_API_KEY
# Export your OpenAI_API_KEY before running the 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)
Code explanation:
OpenAI_TTS()— Initialisiert die OpenAI-TTS-Engine mit Ihrem API-Schlüssel.set_model()— Wählt das TTS-Modell aus (z. B.gpt-4o-mini-tts).set_voice()— Wählt eine bestimmte Stimme aus (z. B.alloy).say(text)— Wandelt den Text in Sprache um und spielt ihn ab.say(text, instructions=...)— Fügt Anweisungen für den Ausdruckston hinzu, sodass Sie den Sprachstil dynamisch steuern können.
Beispiel:
„say it sadly“ → weicher, emotionaler Ton
„say it dramatically“ → kraftvolle, ausdrucksstarke Betonung
„say it excitedly“ → enthusiastischer Ton
Troubleshooting
No module named ‚secret‘
Das bedeutet, dass sich
secret.pynicht im selben Ordner wie Ihre Python-Datei befindet. Verschieben Siesecret.pyin das gleiche Verzeichnis, in dem Sie das Skript ausführen, z. B.:ls ~/ # Stellen Sie sicher, dass sowohl secret.py als auch Ihre .py-Datei vorhanden sind
OpenAI: Invalid API key / 401
Prüfen Sie, ob Sie den vollständigen Schlüssel eingefügt haben (beginnt mit
sk-) und keine zusätzlichen Leerzeichen oder Zeilenumbrüche vorhanden sind.Stellen Sie sicher, dass Ihr Code den Schlüssel korrekt importiert:
from secret import OPENAI_API_KEY
Prüfen Sie die Netzwerkverbindung Ihres Raspberry Pi (z. B.
ping api.openai.com).
OpenAI: Quota exceeded / billing error
Möglicherweise müssen Sie im OpenAI-Dashboard Abrechnung hinzufügen oder Ihr Kontingent erhöhen.
Versuchen Sie es erneut, nachdem das Problem mit Konto oder Abrechnung behoben wurde.
Piper: tts.say() läuft, aber kein Ton
Stellen Sie sicher, dass tatsächlich ein Sprachmodell vorhanden ist:
ls ~/.local/share/piper/voicesPrüfen Sie, ob der Modellname im Code exakt übereinstimmt:
tts.set_model("en_US-amy-low")
Prüfen Sie das Audio-Ausgabegerät und die Lautstärke auf Ihrem Pi (
alsamixer), und stellen Sie sicher, dass Lautsprecher angeschlossen und eingeschaltet sind.
ALSA- / Audiogeräte-Fehler (z. B. „Audio device busy“ oder „No such file or directory“)
Schließen Sie andere Programme, die Audio verwenden.
Starten Sie den Raspberry Pi neu, wenn das Gerät weiterhin blockiert ist.
Wählen Sie bei HDMI- oder Kopfhörerausgabe das richtige Gerät in den Audioeinstellungen von Raspberry Pi OS.
Permission denied beim Ausführen von Python
Versuchen Sie es mit
sudo, falls Ihre Umgebung dies erfordert:sudo python3 tts_piper.py
Comparison of TTS Engines
Item |
Espeak |
Pico2Wave |
Piper |
OpenAI TTS |
|---|---|---|---|---|
Runs on |
In Raspberry Pi integriert (offline) |
In Raspberry Pi integriert (offline) |
Raspberry Pi / PC (offline, benötigt Modell) |
Cloud (online, benötigt API-Schlüssel) |
Voice quality |
Robotisch |
Natürlicher als Espeak |
Natürlich (neuronales TTS) |
Sehr natürlich / menschenähnlich |
Controls |
Geschwindigkeit, Tonhöhe, Lautstärke |
Begrenzte Einstellungen |
Auswahl verschiedener Stimmen/Modelle |
Auswahl von Modell und Stimme |
Languages |
Viele (Qualität variiert) |
Begrenzte Auswahl |
Viele Stimmen und Sprachen verfügbar |
Am besten in Englisch (andere je nach Verfügbarkeit) |
Latency / speed |
Sehr schnell |
Schnell |
Echtzeit auf Pi 4/5 mit „low“-Modellen |
Netzwerkabhängig (meist geringe Latenz) |
Setup |
Minimal |
Minimal |
|
API-Schlüssel erstellen, Client installieren |
Best for |
Schnelle Tests, einfache Sprachmeldungen |
Etwas bessere Offline-Stimme |
Lokale Projekte mit höherer Qualität |
Höchste Qualität, umfangreiche Stimmoptionen |