Dieses Repository enthält estonische Multi-Speaker-Synthese-Mitarbeiter mit neuronaler Text-zu-Sprache, die Anfragen von Rabbitmq verarbeiten.
Das Projekt wird von der NLP Research Group der University of Tartu entwickelt. Die Sprachsynthese kann auch in unserer Demo getestet werden.
Der Abschnitt "Releases" enthält die Modelldateien oder deren Download -Anweisungen. Wenn eine Version nicht die Modellinformationen angibt, kann das Modell aus der vorherigen Version verwendet werden. Wir empfehlen immer die neueste verfügbare Version, um die beste Modellqualität und die Codekompatibilität zu gewährleisten.
Die in config/config.yaml enthaltenen Modellkonfigurationsdateien entsprechen der folgenden models/ Verzeichnisstruktur:
models
├── hifigan
│ ├── ljspeech
│ │ ├── config.json
│ │ └── model.pt
│ ├── vctk
│ │ ├── config.json
│ │ └── model.pt
└── tts
└── multispeaker
├── config.yaml
└── model_weights.hdf5
Der TTS -Arbeiter kann mit dem neben dem Repository veröffentlichten Docker -Bild bereitgestellt werden. Jede Bildversion korreliert zu einer bestimmten Version. Die erforderlichen Modelldateien sind aus dem Bild ausgeschlossen, um die Bildgröße zu reduzieren, und sollten aus dem Abschnitt "Releases" heruntergeladen werden, und deren Verzeichnis sollte an die Lautstärke /app/models angehängt werden.
Die Protokollierungskonfiguration erfolgt von /app/config/logging.prod.ini und Servicekonfiguration aus der Datei /app/config/config.yaml . Die mitgelieferte Konfiguration wird kommentiert, um zu veranschaulichen, wie neue Modellkonfigurationen hinzugefügt werden können.
Die folgenden Umgebungsvariablen sollten beim Ausführen des Containers konfiguriert werden:
MQ_USERNAME - RABBITMQ -BenutzernameMQ_PASSWORD - Rabbitmq -BenutzerkennwortMQ_HOST - RABBITMQ HOSTMQ_PORT (optional) - Rabbitmq -Port ( 5672 standardmäßig)MQ_EXCHANGE (optional)-Rabbitmq Exchange-Name (standardmäßig text-to-speech )MQ_HEARTBEAT (optional) - Herzschlagintervall ( 60 Sekunden nach Standardeinstellung)MQ_CONNECTION_NAME (optional) - Freundlicher Verbindungsname ( TTS worker standardmäßig)MKL_NUM_THREADS (optional) - Anzahl der für die Intra -op -Parallelität von Pytorch verwendeten Threads (für das Vocoder -Modell verwendet). 16 Standardmäßig. Wenn es auf einen leeren Wert eingestellt ist, wird die Anzahl der CPU -Kerne standardmäßig eingestuft, die bei Bereitstellung auf größeren Knoten einen Rechenaufwand verursachen können. Alternativ kann das docker run Flag --cpuset-cpus verwendet werden, um dies zu kontrollieren. Weitere Informationen finden Sie im folgenden Abschnitt "Performance and Hardware -Anforderungen). Standardmäßig ist der Containereintragspunkt main.py ohne zusätzliche Argumente, aber Argumente sollten mit der COMMAND definiert werden. Das einzige gewünschte Flag ist --model-name um auszuwählen, welches Modell vom Arbeiter geladen wird. Die vollständige Liste der unterstützten Flags kann durch Ausführen python main.py -h gesehen werden:
usage: main.py [-h] [--model-config MODEL_CONFIG] [--model-name MODEL_NAME] [--log-config LOG_CONFIG]
A text-to-speech worker that processes incoming TTS requests via RabbitMQ.
optional arguments:
-h, --help show this help message and exit
--model-config MODEL_CONFIG
The model config YAML file to load.
--model-name MODEL_NAME
The model to load. Refers to the model name in the config file.
--log-config LOG_CONFIG
Path to log config file.
Das Setup kann mit der folgenden Probe docker-compose.yml -Konfiguration getestet werden:
version : ' 3 '
services :
rabbitmq :
image : ' rabbitmq '
environment :
- RABBITMQ_DEFAULT_USER=${RABBITMQ_USER}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASS}
tts_api :
image : ghcr.io/tartunlp/text-to-speech-api:latest
environment :
- MQ_HOST=rabbitmq
- MQ_PORT=5672
- MQ_USERNAME=${RABBITMQ_USER}
- MQ_PASSWORD=${RABBITMQ_PASS}
ports :
- ' 8000:8000 '
depends_on :
- rabbitmq
tts_worker :
image : ghcr.io/tartunlp/text-to-speech-worker:latest
environment :
- MQ_HOST=rabbitmq
- MQ_PORT=5672
- MQ_USERNAME=${RABBITMQ_USER}
- MQ_PASSWORD=${RABBITMQ_PASS}
command : [ "--model-name", "multispeaker" ]
volumes :
- ./models:/app/models
depends_on :
- rabbitmqDie folgenden Schritte wurden auf Ubuntu getestet und sind sowohl CPU- als auch GPU -kompatibel (CUDA erforderlich).
Klonen Sie dieses Repository mit Submodulen
Voraussetzungen installieren:
Sammlung von GNU Compiler ( sudo apt install build-essential )
Für eine CPU -Installation empfehlen wir die Verwendung der enthaltenen requirements.txt -Datei in einer sauberen Umgebung (getestet mit Python 3.9)
pip install -r requirements.txt
Verwenden Sie für eine GPU -Installation stattdessen die Datei environment.yml .
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen installiert haben:
Erstellen und aktivieren Sie dann eine Conda -Umgebung mit allen Abhängigkeiten:
conda env create -f environment.yml -n tts
conda activate tts
Laden Sie die Modelle aus dem Abschnitt "Releases" herunter und legen Sie sie in die models/ Verzeichnisse.
Überprüfen Sie die Konfigurationsdateien und ändern Sie die Standardeinstellungen nach Bedarf. Stellen Sie sicher, dass der Parameter model_path in config/config.yaml auf das gerade heruntergeladene Modell verweist.
Geben Sie Rabbitmq -Verbindungsparameter mit Umgebungsvariablen oder in einer config/.env -Datei an, wie in der config/sample.env dargestellt.
Führen Sie den Arbeiter mit dem, wo MODEL_NAME mit dem Modellnamen in Ihrer Konfigurationsdatei übereinstimmt, aus:
python main.py --model-name $MODEL_NAME [--log-config config/logging.ini --config config/config.yaml]