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

  1. Gehen Sie zu OpenAI Platform und melden Sie sich an. Klicken Sie auf der Seite API keys auf Create new secret key.

    ../_images/llm_openai_create.png
  2. Füllen Sie die Details aus (Owner, Name, Project und gegebenenfalls Berechtigungen) und klicken Sie dann auf Create secret key.

    ../_images/llm_openai_create_confirm.png
  3. 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.

    ../_images/llm_openai_copy.png
  4. Erstellen Sie in Ihrem Projektordner (z. B. /) eine Datei namens secret.py:

    cd ~/ai-lab-kit/llm
    sudo nano secret.py
    
  5. 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.py nicht im selben Ordner wie Ihre Python-Datei befindet. Verschieben Sie secret.py in 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/voices
      
    • Prü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

Feature comparison: Espeak vs Pico2Wave vs Piper vs OpenAI TTS

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

.onnx + .onnx.json Modelle herunterladen

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