Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [here] und treten Sie heute bei!
15. TTS mit Piper und OpenAI
In der vorherigen Lektion haben wir zwei integrierte TTS-Engines auf dem Raspberry Pi ausprobiert (Espeak und Pico2Wave). Jetzt sehen wir uns zwei leistungsstärkere Optionen an: Piper (offline, auf neuronalen Netzen basierend) und OpenAI TTS (online, cloudbasiert).
Piper: Eine lokale TTS-Engine, die offline auf dem Raspberry Pi läuft.
OpenAI TTS: Ein Online-Dienst, der sehr natürliche, menschlich klingende Stimmen erzeugt.
Bevor du beginnst
Stelle sicher, dass du Folgendes abgeschlossen hast:
Alle Module installieren (Wichtig) — Installiere
robot-hat,vilib,pidogund führe das Skripti2samp.shaus.
Piper testen
Schritte zum Ausprobieren:
Erstelle eine neue Datei:
cd ~/pidog/examples sudo nano test_tts_piper.py
Kopiere den folgenden Beispielcode in die Datei. Drücke
Ctrl+X, dannYund schließlichEnter, um zu speichern und zu beenden.from pidog.tts import Piper tts = Piper() # Unterstützte Sprachen auflisten print(tts.available_countrys()) # Modelle für Englisch (en_us) auflisten print(tts.available_models('en_us')) # Sprachmodell festlegen (wird automatisch heruntergeladen, falls nicht vorhanden) tts.set_model("en_US-amy-low") # Text ausgeben tts.say("Hello! I'm Piper TTS.")
available_countrys(): listet die unterstützten Sprachen auf.available_models(): listet die verfügbaren Modelle für die gewählte Sprache auf.set_model(): legt das Sprachmodell fest (wird automatisch heruntergeladen, falls es fehlt).say(): wandelt Text in Sprache um und spielt ihn ab.
Führe das Programm aus:
sudo python3 test_tts_piper.py
Beim ersten Ausführen wird das gewählte Sprachmodell automatisch heruntergeladen.
Danach solltest du hören, wie Pidog sagt:
Hello! I'm Piper TTS.Du kannst das Sprachmodell ändern, indem du
set_model()mit einem anderen Namen aufrufst.
OpenAI TTS testen
API-Schlüssel abrufen und speichern
Gehe zu OpenAI Platform und melde dich an. Klicke auf der Seite API keys auf Create new secret key.
Fülle die Details aus (Owner, Name, Projekt und ggf. Berechtigungen) und klicke auf Create secret key.
Sobald der Schlüssel erstellt ist, kopiere ihn sofort — du kannst ihn später nicht mehr einsehen. Wenn du ihn verlierst, musst du einen neuen Schlüssel generieren.
Erstelle in deinem Projektordner (z. B.
/pidog/examples) eine Datei namenssecret.py:cd ~/pidog/examples sudo nano secret.py
Füge deinen Schlüssel in die Datei ein:
# secret.py # Store secrets here. Never commit this file to Git. OPENAI_API_KEY = "sk-xxx"
Testprogramm schreiben und ausführen
Erstelle eine neue Datei:
cd ~/pidog/examples sudo nano test_tts_openai.py
Kopiere den folgenden Beispielcode in die Datei. Drücke
Ctrl+X, dannYund schließlichEnter, um zu speichern und zu beenden.from pidog.tts import OpenAI_TTS from secret import OPENAI_API_KEY # or use the try/except version shown above # Initialize OpenAI TTS tts = OpenAI_TTS(api_key=OPENAI_API_KEY) tts.set_model('gpt-4o-mini-tts') # low-latency TTS model tts.set_voice('alloy') # pick a voice # Quick hello (sanity check) tts.say("Hello! I'm OpenAI TTS.")
Führe das Programm aus:
sudo python3 test_tts_openai.py
Du solltest hören, wie Pidog sagt:
Hello! I'm OpenAI TTS.
Fehlerbehebung
No module named ‚secret‘
Das bedeutet, dass
secret.pynicht im selben Ordner wie deine Python-Datei liegt. Verschiebesecret.pyin das Verzeichnis, aus dem du das Skript startest, z. B.:ls ~/pidog/examples # Stelle sicher, dass secret.py und deine .py-Datei dort liegen
OpenAI: Invalid API key / 401
Überprüfe, ob du den vollständigen Schlüssel eingefügt hast (beginnt mit
sk-) und keine Leerzeichen oder Zeilenumbrüche enthalten sind.Stelle sicher, dass dein Code den Schlüssel korrekt importiert:
from secret import OPENAI_API_KEY
Überprüfe die Netzwerkverbindung deines Raspberry Pi (z. B.
ping api.openai.com).
OpenAI: Quota exceeded / Abrechnungsfehler
Du musst möglicherweise ein Zahlungsmittel hinterlegen oder dein Nutzungslimit im OpenAI-Dashboard erhöhen.
Versuche es erneut, nachdem du das Konto-/Abrechnungsproblem behoben hast.
Piper: tts.say() läuft, aber kein Ton
Überprüfe, ob tatsächlich ein Sprachmodell vorhanden ist:
ls ~/.local/share/piper/voicesStelle sicher, dass der Modellname im Code exakt übereinstimmt:
tts.set_model("en_US-amy-low")
Überprüfe das Audioausgabegerät / die Lautstärke auf deinem Raspberry Pi (
alsamixer) und ob Lautsprecher angeschlossen und eingeschaltet sind.
ALSA- / Audiogeräte-Fehler (z. B. „Audio device busy“ oder „No such file or directory“)
Schließe andere Programme, die Audio verwenden.
Starte den Raspberry Pi neu, wenn das Gerät weiterhin belegt ist.
Wähle in den Raspberry-Pi-Audioeinstellungen das richtige Ausgabegerät (HDMI vs. Kopfhöreranschluss).
Permission denied beim Ausführen von Python
Führe das Skript bei Bedarf mit
sudoaus:sudo python3 test_tts_piper.py
Vergleich der TTS-Engines
Merkmal |
Espeak |
Pico2Wave |
Piper |
OpenAI TTS |
|---|---|---|---|---|
Läuft auf |
Integriert auf Raspberry Pi (offline) |
Integriert auf Raspberry Pi (offline) |
Raspberry Pi / PC (offline, benötigt Modell) |
Cloud (online, benötigt API-Schlüssel) |
Stimmqualität |
Roboterhaft |
Natürlicher als Espeak |
Natürlich (neuronales TTS) |
Sehr natürlich / menschlich |
Steuerung |
Geschwindigkeit, Tonhöhe, Lautstärke |
Eingeschränkte Steuerung |
Auswahl verschiedener Stimmen/Modelle |
Auswahl von Modellen und Stimmen |
Sprachen |
Viele (Qualität variiert) |
Eingeschränkte Auswahl |
Viele Stimmen/Sprachen verfügbar |
Am besten in Englisch (andere je nach Verfügbarkeit) |
Latenz / Geschwindigkeit |
Sehr schnell |
Schnell |
Echtzeitfähig auf Pi 4/5 mit „low“-Modellen |
Netzwerkabhängig (meist geringe Latenz) |
Einrichtung |
Minimal |
Minimal |
Download von |
API-Schlüssel erstellen, Client installieren |
Am besten geeignet für |
Schnelle Tests, einfache Sprachansagen |
Etwas bessere Offline-Stimme |
Lokale Projekte mit besserer Qualität |
Höchste Qualität, umfangreiche Stimmoptionen |