Hallo. Ich bin Tomoki Hayashi (@ kan-bayashi) vom Human Dataware Lab. Mein Lieblingseditor ist Vim / Neovim.
Heute möchte ich kurz die End-to-End-Text-zu-Sprache-Synthese mit ESPnet2 vorstellen, an dessen Entwicklung ich beteiligt bin.
Der folgende Inhalt basiert auf dem Inhalt von ESPnet v.0.9.3 vom 15.09.2020. Der Inhalt kann sich aufgrund von Versionsaktualisierungen erheblich ändern.
ESPnet ist ein Open-Source-Toolkit für die E2E-Sprachverarbeitung, das entwickelt wurde, um die Erforschung von End-to-End-Modellen (E2E) zu beschleunigen. ist. Weitere Informationen finden Sie unter Artikel hier.
ESPnet2 ist ein Sprachverarbeitungs-Toolkit der nächsten Generation, das entwickelt wurde, um die Schwächen von ESPnet zu überwinden. Der Code selbst ist in das ESPnet-Repository (https://github.com/espnet/espnet) integriert. Die Grundkonfiguration ist dieselbe wie bei ESPnet, die folgenden Erweiterungen wurden jedoch vorgenommen, um den Komfort und die Erweiterbarkeit zu verbessern.
Die neueste Version v.0.9.3 vom Oktober 2020 unterstützt Aufgaben zur Spracherkennung (ASR), Textstimmsynthese (TTS) und Sprachverbesserung (SE). In Zukunft werden weitere Aufgaben (z. B. Sprachübersetzung, Sprachkonvertierung) unterstützt (https://github.com/espnet/espnet/issues/1795). In diesem Artikel möchte ich kurz den TTS-Teil vorstellen, den ich hauptsächlich entwickle.
Das E2E-TTS-Modell besteht im Allgemeinen aus einem Text2Mel-Modell, das aus Text akustische Merkmale (Mel-Spektrogramm) erzeugt, und einem Mel2Wav-Modell, das aus akustischen Merkmalen Wellenformen erzeugt. ESPnet kann hauptsächlich den Text2Mel-Teil erstellen.
Ab Oktober 2020 werden die folgenden Text2Mel-Modelle unterstützt.
Als Mel2Wav-Modell kann es mit dem in Repository, das ich entwickle kombiniert werden. Die folgenden Mel2Wav-Modelle werden unterstützt.
ESPnet2 arbeitet mit Zenodo zusammen, einem Repository für den Austausch von Forschungsdaten, sodass Sie problemlos verschiedene Vorlernmodelle ausprobieren können. Zusätzlich zum Ausprobieren kann jeder Benutzer ein Vorlernmodell hochladen, indem er sich bei Zenodo registriert.
Im Folgenden wird das TTS-Modell FastSpeech2 unter Verwendung des JSUT Corpus vorab trainiert. Hier ist ein Beispiel für Python-Code, der eine Inferenz durch) ausführt.
from espnet_model_zoo.downloader import ModelDownloader
from espnet2.bin.tts_inference import Text2Speech
# Create E2E-TTS model instance
d = ModelDownloader()
text2speech = Speech2Text(
# Specify the tag
d.download_and_unpack("kan-bayashi/jsut_fastspeech2")
)
# Synthesis with a given text
wav, feats, feats_denorm, *_ = text2speech(
"Er drehte die ganze Realität zu sich hin."
)
Hier repräsentieren "wav", "features" und "feats_denorm" die erzeugten Wellenformen, statistisch normalisierten akustischen Merkmale bzw. denormalisierten akustischen Merkmale. Standardmäßig konvertiert Griffin-Lim die Wellenform aus den akustischen Merkmalen, kann jedoch auch mit dem oben vorgestellten Mel2Wav-Modell kombiniert werden.
Eine Liste öffentlich verfügbarer Pre-Training-Modelle finden Sie unter ESPnet Model Zoo.
Wir haben auch eine Demo mit Google Colab für diejenigen veröffentlicht, die Schwierigkeiten haben, eine Umgebung zu erstellen. In Ihrem Browser können Sie problemlos die neueste Sprachsynthese erleben. Probieren Sie es also aus. Sie können [solches Audio] frei generieren (https://drive.google.com/file/d/1MrEVDL7-COPIFVb1LIvIRfiIKkVZZeeP/view?usp=sharing).
Mit ESPnet2 können Sie auch Ihr eigenes Modell mithilfe von Rezepten erstellen. Ich werde hier nicht näher darauf eingehen. Wenn Sie interessiert sind, lesen Sie bitte diese Seite.
In diesem Artikel haben wir die Text-zu-Sprache-Synthese mit dem E2E-Sprachverarbeitungs-Toolkit ESPnet2 beschrieben. ESPnet wird hauptsächlich von Japanern entwickelt und wir sind immer auf der Suche nach begeisterten Entwicklern. Wenn Sie interessiert sind, können Sie sich gerne an die Entwicklungsmitglieder wenden oder an der Diskussion über Github teilnehmen!
Recommended Posts