.. note::
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 [|link_sf_facebook|] und treten Sie noch heute bei!
.. _py_tts:
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**
.. raw:: html
.. code-block::
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**
.. note::
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.
.. raw:: html
.. code-block:: python
#!/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?**
#. Zwei verfügbare TTS-Engines
.. code-block:: python
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.
#. Auswahl von Engine und Modell
.. code-block:: python
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 |link_piper_voice|)
#. Erstellen der TTS-Instanz
.. code-block:: python
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.
#. Die Eingabeschleife
.. code-block:: python
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.
#. Vergleich mit STT
Diese Lektion ist die Ergänzung zu :ref:`py_stt`. Zusammen bilden STT
(Spracherkennung) und TTS (Sprachsynthese) die Ein- und Ausgabehälften
einer Sprachschnittstelle für PiCrawler.