Ce référentiel contient des travailleurs de synthèse de synthèse de texte à haut to-à-parole estonien qui traite les demandes de RabbitMQ.
Le projet est développé par le groupe de recherche NLP à l'Université de Tartu. La synthèse de la parole peut également être testée dans notre démo.
La section des versions contient les fichiers du modèle ou leurs instructions de téléchargement. Si une version ne spécifie pas les informations du modèle, le modèle de la version précédente peut être utilisé. Nous conseillons toujours en utilisant la dernière version disponible pour assurer la meilleure qualité du modèle et la compatibilité du code.
Les fichiers de configuration du modèle inclus dans config/config.yaml correspondent aux models/ structure de répertoire suivants:
models
├── hifigan
│ ├── ljspeech
│ │ ├── config.json
│ │ └── model.pt
│ ├── vctk
│ │ ├── config.json
│ │ └── model.pt
└── tts
└── multispeaker
├── config.yaml
└── model_weights.hdf5
Le travailleur TTS peut être déployé à l'aide de l'image Docker publiée aux côtés du référentiel. Chaque version d'image est en corrélation avec une version spécifique. Les fichiers de modèle requis sont exclus de l'image pour réduire la taille de l'image et doivent être téléchargés à partir de la section des versions et leur répertoire doit être attaché au volume /app/models .
La configuration de la journalisation est chargée à partir de / la configuration de la configuration /app/config/logging.prod.ini et du service à partir du fichier /app/config/config.yaml . La configuration incluse est commentée pour illustrer comment de nouvelles configurations de modèle pourraient être ajoutées.
Les variables d'environnement suivantes doivent être configurées lors de l'exécution du conteneur:
MQ_USERNAME - Nom d'utilisateur RabbitMQMQ_PASSWORD - Mot de passe utilisateur RabbitMQMQ_HOST - Hôte RabbitmqMQ_PORT (Facultatif) - Port RabbitMQ ( 5672 par défaut)MQ_EXCHANGE (Facultatif) - Nom d'échange de lapin ( text-to-speech par défaut)MQ_HEARTBEAT (Facultatif) - Intervalle de battements cardiaques ( 60 secondes par défaut)MQ_CONNECTION_NAME (Facultatif) - Nom de la connexion amicale ( TTS worker par défaut)MKL_NUM_THREADS (Facultatif) - Nombre de threads utilisés pour le parallélisme intra-op par Pytorch (utilisé pour le modèle Vocoder). 16 par défaut. Si elle est définie sur une valeur vierge, il est par défaut le nombre de cœurs de CPU qui peuvent provoquer des frais généraux de calcul lorsqu'ils sont déployés sur des nœuds plus grands. Alternativement, l'indicateur docker run --cpuset-cpus peut être utilisé pour contrôler cela. Pour plus de détails, reportez-vous à la section des exigences de performances et de matériel ci-dessous. Par défaut, le point d'entrée du conteneur est main.py sans arguments supplémentaires, mais les arguments doivent être définis avec l'option COMMAND . Le seul indicateur requis est --model-name pour sélectionner le modèle chargé par le travailleur. La liste complète des drapeaux pris en charge peut être vu en exécutant python main.py -h :
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.
La configuration peut être testée avec l'exemple de configuration docker-compose.yml suivant:
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 :
- rabbitmqLes étapes suivantes ont été testées sur Ubuntu et sont à la fois compatibles CPU et GPU (CUDA requise).
Cloner ce référentiel avec des sous-modules
Installez les conditions préalables:
Collection du compilateur GNU ( sudo apt install build-essential )
Pour une installation CPU , nous vous recommandons d'utiliser le fichier requirements.txt inclus dans un environnement propre (testé avec Python 3.9)
pip install -r requirements.txt
Pour une installation GPU , utilisez plutôt le fichier environment.yml .
Assurez-vous que les conditions préalables suivantes sont installées:
Créez et activez ensuite un environnement conda avec toutes les dépendances:
conda env create -f environment.yml -n tts
conda activate tts
Téléchargez les modèles à partir de la section des versions et placez-vous à l'intérieur des models/ répertoire.
Vérifiez les fichiers de configuration et modifiez toutes les valeurs par défaut au besoin. Assurez-vous que le paramètre model_path dans config/config.yaml pointe vers le modèle que vous venez de télécharger.
Spécifiez les paramètres de connexion RabbitMQ avec les variables d'environnement ou dans un fichier config/.env comme illustré dans la config/sample.env .
Exécutez le travailleur avec où MODEL_NAME correspond au nom du modèle dans votre fichier de configuration:
python main.py --model-name $MODEL_NAME [--log-config config/logging.ini --config config/config.yaml]