Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauche gemeinsam mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie nach dem Kauf auftretende Probleme 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 Zugriff auf neue Produktankündigungen und exklusive Einblicke.

  • Spezielle Rabatte: Profitieren Sie von exklusiven Rabatten auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Verlosungen und Feiertagsaktionen teil.

👉 Bereit, mit uns zu entdecken und zu kreieren? Klicken Sie auf [hier] und treten Sie noch heute bei!

16. TTS (Text-to-Speech)

Dieses Beispiel zeigt, wie das TTS-Modul (Text-to-Speech) verwendet wird, um PiCrawler sprechen zu lassen. Es unterstützt zwei Engines: Piper (hochwertiges neuronales TTS) und Espeak (leichtgewichtiges klassisches TTS). Geben Sie einen beliebigen Text ein und der Roboter liest ihn laut vor.

Code ausführen

cd ~/picrawler/examples
sudo python3 16_tts.py

Nach dem Start des Programms werden der Engine-Typ und das Modell angezeigt. Geben Sie einen beliebigen Satz ein und drücken Sie Enter — der Roboter spricht ihn. Geben Sie quit ein, um das Programm zu beenden, oder drücken Sie Strg+C.

Code

Bemerkung

Sie können den folgenden Code Ändern/Zurücksetzen/Kopieren/Ausführen/Stoppen. Navigieren Sie dazu zum Quellcode-Pfad wie picrawler\examples. Nach dem Ändern des Codes können Sie ihn direkt ausführen, um das Ergebnis zu sehen.

#!/usr/bin/env python3
from robot_hat.tts import Piper, Espeak

# Text-to-Speech-Demo mit dem robot_hat TTS-Modul
# Strg+C zum Beenden

# Setzen Sie USE_PIPER=True für hochwertiges neuronales TTS (Piper), False für Espeak
USE_PIPER = True

# Piper-Modell: "en_US-ryan-low" (Englisch), "zh_CN-huayan-x_low" (Chinesisch)
# Für Deutsch: "de_DE-thorsten-medium" siehe |link_piper_voice|
TTS_MODEL = "en_US-ryan-low"

def main():
    print("=== PiCrawler Text-to-Speech Demo ===")

    if USE_PIPER:
        print(f"Engine: Piper ({TTS_MODEL})")
        tts = Piper(model=TTS_MODEL)
    else:
        print("Engine: Espeak")
        tts = Espeak()

    print("Text zum Sprechen eingeben, oder 'quit' zum Beenden")
    print()

    try:
        while True:
            text = input("Text zum Sprechen: ").strip()
            if text.lower() == 'quit':
                break
            if text:
                print(f"Spreche: {text}")
                tts.say(text)
    except KeyboardInterrupt:
        print("\nBeenden...")

if __name__ == "__main__":
    main()

Wie funktioniert es?

  1. Zwei verfügbare TTS-Engines

    from robot_hat.tts import Piper, Espeak
    

    Das robot_hat-Paket bietet zwei TTS-Engines:

    • Piper: Eine neuronale netzwerkbasierte Engine, die natürliche, hochwertige Sprache erzeugt. Benötigt eine Sprachmodell-Datei.

    • Espeak: Eine leichtgewichtige, regelbasierte Engine, die mit minimalen Ressourcen läuft.

  2. Auswahl von Engine und Modell

    USE_PIPER = True
    TTS_MODEL = "en_US-ryan-low"
    

    Setzen Sie USE_PIPER auf True für Piper oder False für Espeak. Bei Verwendung von Piper wählt TTS_MODEL die Stimme aus. Gängige Modelle:

    • "en_US-ryan-low" — Amerikanisch-englische Männerstimme

    • "zh_CN-huayan-x_low" — Chinesische Frauenstimme

    • "de_DE-thorsten-medium" — Deutsche Männerstimme (siehe Piper Voices)

  3. Erstellen der TTS-Instanz

    if USE_PIPER:
        tts = Piper(model=TTS_MODEL)
    else:
        tts = Espeak()
    

    Je nach USE_PIPER-Flag wird die entsprechende Engine instanziiert. Beide Engines teilen dieselbe say()-Schnittstelle, sodass ein Wechsel der Engine keine weiteren Codeänderungen erfordert.

  4. Die Eingabeschleife

    while True:
        text = input("Text zum Sprechen: ").strip()
        if text.lower() == 'quit':
            break
        if text:
            print(f"Spreche: {text}")
            tts.say(text)
    

    Das Programm fordert Sie zur Texteingabe auf:

    • Geben Sie einen beliebigen Satz ein und drücken Sie Enter, um den Roboter sprechen zu lassen.

    • Geben Sie quit ein, um die Schleife zu beenden.

    • Drücken Sie jederzeit Strg+C, um zu unterbrechen.

  5. Vergleich mit STT

    Diese Lektion ist die Ergänzung zu 15. STT (Speech-to-Text). Zusammen bilden STT (Spracherkennung) und TTS (Sprachsynthese) die Ein- und Ausgabehälften einer Sprachschnittstelle für PiCrawler.