Tortoise ist ein Text-zu-Sprach-Programm, das mit den folgenden Prioritäten erstellt wurde:
Dieses Repo enthält den gesamten Code, der für die Ausführung von TTs von Schildkröten im Inferenzmodus erforderlich ist.
Colab ist der einfachste Weg, dies auszuprobieren. Ich habe hier ein Notizbuch zusammengestellt
Wenn Sie dies auf Ihrem eigenen Computer verwenden möchten, müssen Sie eine NVIDIA -GPU haben.
Installieren Sie zunächst Pytorch mit diesen Anweisungen: https://pytorch.org/get-started/locally/. Unter Windows empfehle ich dringend , den Conda -Installationspfad zu verwenden. Mir wurde gesagt, dass Sie, wenn Sie dies nicht tun, viel Zeit damit verbringen, Abhängigkeitsprobleme zu verfolgen.
Installieren Sie als nächstes Schildkröte und seine Abhängigkeiten:
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install Wenn Sie unter Windows sind, müssen Sie auch PysoSoundFile installieren: conda install -c conda-forge pysoundfile
Mit diesem Skript können Sie einen einzelnen Phrase mit einer oder mehreren Stimmen sprechen.
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fastDieses Skript bietet Tools zum Lesen großer Textmengen.
python tortoise/read.py --textfile < your text to be read > --voice randomDadurch wird die Textdatei in Sätze aufgeteilt und sie dann einzeln in die Sprache umwandeln. Es wird eine Reihe von gesprochenen Clips ausgeben, sobald sie erzeugt werden. Sobald alle Clips generiert sind, kombiniert sie sie zu einer einzelnen Datei und gibt dies auch aus.
Manchmal verschraubt Schildkröte einen Ausgang. Sie können alle schlechten Clips neu generieren, indem read.py mit dem Argument-REVENATELATE AUSGABEN.
Schildkröte kann programmatisch verwendet werden, wie SO:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ()
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )Schildkröte wurde speziell als Modell mit mehreren Sprechern ausgebildet. Dies erfüllt dies durch Beratung von Referenzclips.
Diese Referenzclips sind Aufzeichnungen eines Sprechers, den Sie zur Anleitung der Sprachgenerierung anbieten. Diese Clips werden verwendet, um viele Eigenschaften der Ausgabe zu bestimmen, wie z. Der Referenzclip wird auch verwendet, um nicht-voice-verwandte Aspekte der Audioausgabe wie Volumen, Hintergrundrauschen, Aufzeichnungsqualität und Hall zu bestimmen.
Ich habe eine Funktion beigefügt, die zufällig eine Stimme erzeugt. Diese Stimmen existieren eigentlich nicht und werden jedes Mal, wenn Sie sie ausführen, zufällig sein. Die Ergebnisse sind ziemlich faszinierend und ich empfehle, dass Sie damit herumspielen!
Sie können die zufällige Stimme verwenden, indem Sie "zufällig" als Sprachname bestehen. Schildkröte wird sich um den Rest kümmern.
Für diejenigen im ML -Raum: Dies wird erstellt, indem ein zufälliger Vektor auf den latenten Bereich der Sprachkonditionierung projiziert wird.
Dieses Repo verfügt über mehrere vorverpackte Stimmen. Voices, die mit "Train_" vorbereitet wurden, stammten aus dem Trainingset und erzielten weitaus besser als die anderen. Wenn Ihr Ziel eine qualitativ hochwertige Rede ist, empfehle ich Ihnen, einen von ihnen auszuwählen. Wenn Sie sehen möchten, was Schildkröte für das Nachdenken von Zero-Shot tun kann, schauen Sie sich die anderen an.
Um Schildkröten neue Stimmen hinzuzufügen, müssen Sie Folgendes tun:
Wie oben erwähnt, haben Ihre Referenzclips einen tiefgreifenden Einfluss auf die Ausgabe von Schildkröte. Im Folgenden finden Sie einige Tipps für die Auswahl guter Clips:
Tortoise ist in erster Linie ein autoregressives Decodermodell, das mit einem Diffusionsmodell kombiniert wird. Beide haben viele Knöpfe, die gedreht werden können, die ich wegen einfacher Anwendung abstrahiert habe. Ich habe dies getan, indem ich Tausende von Clips mit verschiedenen Permutationen der Einstellungen generierte und eine Metrik für Sprachrealismus und Verständlichkeit zur Messung ihrer Auswirkungen verwendet habe. Ich habe die Standardeinstellungen auf die besten Gesamteinstellungen eingestellt, die ich finden konnte. Für bestimmte Anwendungsfälle ist es möglicherweise effektiv, mit diesen Einstellungen zu spielen (und es ist sehr wahrscheinlich, dass ich etwas verpasst habe!)
Diese Einstellungen sind in den normalen Skripten nicht mit Schildkröte verfügbar. Sie sind jedoch in der API verfügbar. Eine vollständige Liste finden Sie in api.tts .
Einige Leute haben herausgefunden, dass es möglich ist, mit Schildkröte ein schnelles Ingenieurwesen zu machen! Zum Beispiel können Sie Emotionen hervorrufen, indem Sie Dinge wie "Ich bin wirklich traurig" vor Ihrem Text aufnehmen. Ich habe ein automatisiertes Redaktionssystem erstellt, mit dem Sie dies nutzen können. Es funktioniert, indem es versucht, einen Text in der Eingabeaufforderung zu reduzieren, die von Klammern umgeben ist. Zum Beispiel die Aufforderung "[ich bin wirklich traurig,] bitte füttere mich." Wird nur die Worte "Bitte füttern Sie mich" (mit einer traurigen Tonalität).
Schildkröte nimmt Referenzclips ein, indem sie sie durch ein kleines Submodel durch Fütterung durch einen Punkt latent durchführen und dann den Mittelwert aller produzierten Latenten einnehmen. Das Experimentieren, das ich durchgeführt habe, hat gezeigt, dass diese Punktleitungen ziemlich ausdrucksstark sind und alles von Ton über die Sprechrate bis hin zu Sprachanomalien beeinflussen.
Dies eignet sich für einige nette Tricks. Zum Beispiel können Sie Feed zwei verschiedene Stimmen zur Schildkröte kombinieren, und es wird so ausgegeben, wie es der "Durchschnitt" dieser beiden Stimmen hört.
Verwenden Sie das Skript get_conditioning_latents.py , um Konditionierungsleitungen für eine von Ihnen installierte Stimme zu extrahieren. In diesem Skript werden die Latenten in eine .PTH -Gurkendatei abgelegt. Die Datei enthält ein einzelnes Tupel (autoregressive_latent, diffusion_latent).
Verwenden Sie alternativ die API.TextTospeech.get_Conditioning_latents (), um die Leitungen zu holen.
Nachdem Sie mit ihnen gespielt haben, können Sie sie verwenden, um eine Sprache zu generieren, indem Sie ein Unterverzeichnis in Stimmen/ mit einer einzigen ".PTH" -Datei erstellen, die die eingelegten Konditionierungsleitungen als Tupel enthält (autoregressive_Latent, diffusion_latent).
Aus Bedenken, dass dieses Modell missbraucht werden könnte, habe ich einen Klassifikator erstellt, der der Wahrscheinlichkeit sagt, dass ein Audioclip von Schildkröte stammt.
Dieser Klassifikator kann auf jedem Computer ausgeführt werden. Die Verwendung ist wie folgt:
python tortoise/is_this_from_tortoise.py --clip=<path_to_suspicious_audio_file>
Dieses Modell hat eine 100% ige Genauigkeit auf den Inhalt der Ergebnisse/ und Stimmen/ Ordner in diesem Repo. Behandeln Sie diesen Klassifikator trotzdem als "starkes Signal". Klassifikatoren können täuschen werden und es ist für diesen Klassifizierer ebenfalls nicht unmöglich, falsch positive Ergebnisse zu zeigen.
TTS TTS ist von OpenAs Dalle inspiriert, der auf Sprachdaten angewendet und einen besseren Decoder verwendet. Es besteht aus 5 separaten Modellen, die zusammenarbeiten: https://nonint.com/2022/04/25/tortoise-architectural-design-doc/