Este repositorio contiene trabajadores de síntesis de texto a voz neuronal de múltiples altavoces estonio que procesan las solicitudes de RabbitMQ.
El proyecto es desarrollado por el grupo de investigación de NLP en la Universidad de Tartu. La síntesis del habla también se puede probar en nuestra demostración.
La sección Liberación contiene los archivos del modelo o sus instrucciones de descarga. Si una versión no especifica la información del modelo, se puede utilizar el modelo de la versión anterior. Aconsejamos que siempre use la última versión disponible para garantizar la mejor calidad del modelo y compatibilidad con código.
Los archivos de configuración del modelo incluidos en config/config.yaml corresponden a los siguientes models/ estructura de directorio:
models
├── hifigan
│ ├── ljspeech
│ │ ├── config.json
│ │ └── model.pt
│ ├── vctk
│ │ ├── config.json
│ │ └── model.pt
└── tts
└── multispeaker
├── config.yaml
└── model_weights.hdf5
El trabajador de TTS se puede implementar utilizando la imagen Docker publicada junto con el repositorio. Cada versión de imagen se correlaciona con una versión específica. Los archivos del modelo requeridos están excluidos de la imagen para reducir el tamaño de la imagen y deben descargarse de la sección de comunicados y su directorio debe adjuntar al volumen /app/models .
La configuración de registro se carga desde /app/config/logging.prod.ini y la configuración del servicio desde el archivo /app/config/config.yaml . Se comenta la configuración incluida para ilustrar cómo se podrían agregar nuevas configuraciones del modelo.
Las siguientes variables de entorno deben configurarse al ejecutar el contenedor:
MQ_USERNAME - Nombre de usuario de RabbitMQMQ_PASSWORD - Contraseña de usuario de RabbitMQMQ_HOST - Rabbitmq anfitriónMQ_PORT (Opcional) - Puerto RabbitMQ ( 5672 de forma predeterminada)MQ_EXCHANGE (Opcional)-Nombre de Exchange RabbitMQ ( text-to-speech de forma predeterminada)MQ_HEARTBEAT (opcional) - Heartbeat Interval ( 60 segundos de forma predeterminada)MQ_CONNECTION_NAME (opcional) - Nombre de conexión amigable ( TTS worker de forma predeterminada)MKL_NUM_THREADS (opcional): número de hilos utilizados para el paralelismo intraopp por Pytorch (utilizado para el modelo Vocoder). 16 Por defecto. Si se establece en un valor en blanco, el valor predeterminado es el número de núcleos de CPU que pueden causar sobrecarga computacional cuando se implementan en nodos más grandes. Alternativamente, el docker run Flag --cpuset-cpus se puede usar para controlar esto. Para obtener más detalles, consulte la sección de requisitos de rendimiento y hardware a continuación. De manera predeterminada, el contenedor EntryPoint es main.py sin argumentos adicionales, pero los argumentos deben definirse con la opción de COMMAND . El único indicador requerido es --model-name para seleccionar qué modelo carga el trabajador. La lista completa de banderas compatibles se puede ver ejecutando 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 configuración se puede probar con la siguiente muestra docker-compose.yml Configuración:
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 :
- rabbitmqLos siguientes pasos se han probado en Ubuntu y es compatible con CPU y GPU (requerido CUDA).
Clon este repositorio con submódulos
Instalar requisitos previos:
Colección de compiladores GNU ( sudo apt install build-essential )
Para una instalación de CPU , recomendamos usar el archivo de requirements.txt incluido.txt en un entorno limpio (probado con Python 3.9)
pip install -r requirements.txt
Para una instalación de GPU , use el archivo environment.yml en su lugar.
Asegúrese de tener los siguientes requisitos previos:
Luego cree y active un entorno de condena con todas las dependencias:
conda env create -f environment.yml -n tts
conda activate tts
Descargue los modelos de la sección de versiones y colóquelo dentro de los models/ directorio.
Verifique los archivos de configuración y cambie los valores predeterminados según sea necesario. Asegúrese de que el parámetro model_path en config/config.yaml apunte al modelo que acaba de descargar.
Especifique los parámetros de conexión de RabbitMQ con variables de entorno o en un archivo config/.env como se ilustra en config/sample.env .
Ejecute el trabajador con Where MODEL_NAME coincide con el nombre del modelo en su archivo de configuración:
python main.py --model-name $MODEL_NAME [--log-config config/logging.ini --config config/config.yaml]