paint-brush
So richten Sie Piper Speech Synthesizer auf einem lokalen Computer einby@biq
1,658
1,658

So richten Sie Piper Speech Synthesizer auf einem lokalen Computer ein

biq2m2023/12/18
Read on Terminal Reader

Werfen wir einen Blick darauf, wie man mit Piper, Piper-Whistle und Named Pipes einen Ad-hoc-, lokalen (Offline-)Text-to-Speech-Synthesizer einrichten kann.
featured image - So richten Sie Piper Speech Synthesizer auf einem lokalen Computer ein
biq HackerNoon profile picture
0-item
1-item

Werfen wir einen Blick darauf, wie man einen Ad-hoc-, lokalen (Offline-)Text-to-Speech-Synthesizer mit Piper , Piper-Whistle und Named Pipes einrichten kann.


Um Piper auf einem GNU/Linux-basierten System einzurichten, beschreibe ich eine allgemeine Architektur mit benannten Pipes, die einfach genug ist, um systemweites Text-to-Speech mit ein wenig manueller Einrichtung mithilfe von Piper zu ermöglichen -whistle und einige kleinere Kompromisse (es ist einfach, unterstützt aber keine parallele Sprachverarbeitung).


Zunächst holen wir uns die neueste Standalone-Version von Piper aus dem auf Github gehosteten Repository ( 2023.11.14-2 zum Zeitpunkt des Verfassens dieses Artikels). Nachdem wir das komprimierte Archiv heruntergeladen haben, erstellen wir eine Verzeichnisstruktur für unser Piper-Setup. Das Stammverzeichnis befindet sich unter /opt/wind mit den folgenden Unterverzeichnissen:


  • /opt/wind/piper (wird den gebauten Piper beherbergen)
  • /opt/wind/channels (enthält die Named Pipes)


Nach dem Dekomprimieren sollte die ausführbare Piper-Datei unter /opt/wind/piper/piper sowie die zugehörigen Bibliotheken und espeak-ng-data verfügbar sein.

Für die Verwaltung der von Piper verwendeten Sprachmodelle würde ich die Verwendung von „piper-whistle“ empfehlen, einem in Python geschriebenen Befehlszeilen-Dienstprogramm, das das Herunterladen und Verwalten von Stimmen bequemer macht.


Sie können die neueste Wheel-Datei von der Gitlab- oder Github- Release-Seite herunterladen. Nach der Installation der Wheel-Datei holen wir uns eine Stimme, um etwas Sprache zu erzeugen. Lassen Sie uns zunächst die Datenbank aktualisieren, indem wir piper_whistle -vR aufrufen. Für die englische Sprache gefällt mir die weibliche Stimme namens Alba sehr gut. Mit whistle können wir mit piper_whistle list -l en_GB -i 2 alle verfügbaren englischen (GB) Stimmen auflisten. Die Stimme befindet sich auf Index 2. Zur Installation rufen Sie einfach piper_whistle install en_GB 2 auf.


Als Nächstes erstellen wir die erforderlichen Named Pipes. Die resultierende Struktur sieht folgendermaßen aus:

  • /opt/wind/channels/speak (akzeptiert JSON-Nutzlast)
  • /opt/wind/channels/input (von Piper gelesen)
  • /opt/wind/channels/ouput (geschrieben von Piper)


Um eine Named Pipe zu erstellen, können Sie den folgenden Befehl verwenden: mkfifo -m 755 /opt/wind/channels/input


Schließlich erstellen wir drei Prozesse in separaten Shells:

  • tty0: tail -F /opt/wind/channels/speak | tee /opt/wind/channels/input
  • tty1: /opt/wind/piper/piper -m $(piper_whistle path alba@medium) --debug --json-input --output_raw < /opt/wind/channels/input > /opt/wind/channels/output
  • tty2: aplay --buffer-size=777 -r 22050 -f S16_LE -t raw < /opt/wind/channels/output


Der Prozess auf tty0 stellt sicher, dass die Pipe offen bleibt, auch nachdem die Verarbeitung durch Piper oder Aplay abgeschlossen ist. Auf diese Weise können wir TTS-Anfragen in die Warteschlange stellen und sie anschließend abspielen oder speichern.


Da „piper-whistle“ zusätzliche Funktionen bietet, wenn Sie die obige Struktur verwenden, können wir jetzt über piper_whistle speak "This is quite neat" Sprache erzeugen. piper_whistle speak "$(xsel --clipboard --output)" Systemen mit