EfficientSpeech oder TTS ist ein effizientes Modell für neuronale Text -zu -Sprache (TTS). Es erzeugt MEL -Spektrogramm mit einer Geschwindigkeit von 104 (MRTF) oder 104 Sekunden Sprache pro Sec. Auf einem RPI4. Die winzige Version hat einen Fußabdruck von nur 266.000 Parametern - etwa 1% nur moderner TTs wie Mixertts. Die Erzeugung von 6 Sekunden Sprache verbraucht nur 90 Mflops.
EfficientSpeech ist ein flaches (2 Blöcke!) Pyramidentransformator, der einem U-Net ähnelt. Upsampling erfolgt durch eine trennbare trennbare Faltung der Tiefe.
Installieren
ES migriert derzeit zu Pytorch 2.0 und Lightning 2.0. Erwarten Sie instabile Funktionen.
pip install -r requirements.txt
Die kompilierte Option wird unter Verwendung von --compile während des Trainings oder der Inferenz unterstützt. Für das Training ist der eifrige Modus schneller. Das winzige Versionstraining beträgt ~ 17 Stunden auf einem A100. Für Inferenz ist die kompilierte Version schneller. Aus einem unbekannten Grund wird die Kompilierungsoption bei --infer-device cuda erzeugt.
Standardmäßig verwendet Pytorch 2.0 128 CPU -Threads (AMD, 4 in RPI4), wodurch während der Inferenz eine Verlangsamung führt. Während der Inferenz wird empfohlen, es auf eine niedrigere Zahl einzustellen. Zum Beispiel: --threads 24 .
Pytorch 2.0 ist auf RPI4 langsamer. Bitte verwenden Sie die Demo Release und ICASP2023 Modellgewichte.
RTF auf Pytorch 2.0 ist ~ 1,0. RTF auf Pytorch 1.12 ist ~ 1.7.
Alternativ verwenden Sie bitte die OnNX -Version:
python3 demo.py --checkpoint https://github.com/roatienza/efficientspeech/releases/download/pytorch2.0.1/tiny_eng_266k.onnx
--infer-device cpu --text "the primary colors are red, green, and blue." --wav-filename primary.wav
Unterstützt nur die Länge des Fixed -Eingangs. Bei Bedarf wird die Polsterung oder Kürzung angewendet. Ändern Sie mit --onnx-insize=<desired value> . Die Standard -Länge der maximalen Phonem beträgt 128. Zum Beispiel:
python3 convert.py --checkpoint tiny_eng_266k.ckpt --onnx tiny_eng_266k.onnx --onnx-insize 256
Wählen Sie einen Datensatzordner: zB <data_folder> = /data/tts - Verzeichnis, in dem der Datensatz gespeichert wird.
Laden Sie den benutzerdefinierten KSS -Datensatz herunter:
cd efficientspeech
mkdir ./data/kss
Laden Sie hier den benutzerdefinierten KSS -Datensatz herunter
Bereiten Sie den Datensatz vor: <parent_folder> - wobei die Effizienzgeschwindigkeit geklont wurde.
cd <parent_folder>/efficientspeech
config/LJSpeech/preprocess.yaml bearbeiten:
>>>>>>>>>>>>>>>>>
path:
corpus_path: "./data/tts/kss"
lexicon_path: "lexicon/korean-lexicon.txt"
raw_path: "./data/tts/kss/wavs"
preprocessed_path: "./preprocessed_data/kss"
>>>>>>>>>>>>>>>>
Ersetzen Sie /data/tts durch Ihr <data_folder> .
Download Ausrichtungsdaten von hier von preprocessed_data/KSS/TextGrid .
Bereiten Sie den Datensatz vor:
python prepare_align.py config/kss/preprocess.yaml
python preprocess.py config/kss/preprocess.yaml
Dies dauert ungefähr eine Stunde.
Für weitere Informationen: Fastspeech2 -Implementierung zur Erstellung des Datensatzes.
Winzige es
Standardmäßig:
--precision=16 . Weitere Optionen: "bf16-mixed", "16-mixed", 16, 32, 64 .--accelerator=gpu--infer-device=cuda--devices=1utils/tools.py python3 train.py
Kleine es
python3 train.py --n-blocks 3 --reduction 2
Basis es
python3 train.py --head 2 --reduction 1 --expansion 2 --kernel-size 5 --n-blocks 3 --block-depth 3
python3 demo.py --checkpoint ./lightning_logs/version_2/checkpoints/epoch=4999-step=485000.ckpt --text "그는 괜찮은 척하려고 애 쓰는 것 같았다." --wav-filename base.wav
ES vs FS2 gegen Portaspeech gegen Lightspeech
Weitere Informationen finden Sie unter folgenden Repositories:
synthesize.py , Koreanische Text2Phonem -Funktion [✅]Wenn Sie diese Arbeit nützlich finden, zitieren Sie bitte:
@inproceedings{atienza2023efficientspeech,
title={EfficientSpeech: An On-Device Text to Speech Model},
author={Atienza, Rowel},
booktitle={ICASSP 2023-2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={1--5},
year={2023},
organization={IEEE}
}