Этот репозиторий содержит эстонские многопрофильные работники с нейронным текстом в речь, которые обрабатывают запросы от rabbitmq.
Проект разработан исследовательской группой НЛП в Университете Тарту. Синтез речи также может быть проверен в нашей демонстрации.
Раздел «Выпуски» содержит модельные файлы или их инструкции загрузки. Если релиз не указывает информацию о модели, можно использовать модель из предыдущего выпуска. Мы советуем всегда использовать последнюю доступную версию, чтобы обеспечить наилучшее качество модели и совместимость кода.
Файлы конфигурации модели, включенные в config/config.yaml соответствуют следующим models/ структуре каталога:
models
├── hifigan
│ ├── ljspeech
│ │ ├── config.json
│ │ └── model.pt
│ ├── vctk
│ │ ├── config.json
│ │ └── model.pt
└── tts
└── multispeaker
├── config.yaml
└── model_weights.hdf5
Работник TTS может быть развернут с помощью изображения Docker, опубликованного вместе с репозиторием. Каждая версия изображения коррелирует с определенным выпуском. Требуемые файлы (ы) модели исключены из изображения, чтобы уменьшить размер изображения, и следует загружать из раздела релизов, и их каталог должен быть прикреплен к томе /app/models .
Конфигурация ведения журнала загружается из /app/config/logging.prod.ini и конфигурации службы из файла /app/config/config.yaml /config.yaml. Включенная конфигурация комментируется, чтобы проиллюстрировать, как можно добавить новые конфигурации модели.
Следующие переменные среды должны быть настроены при запуске контейнера:
MQ_USERNAME - имя пользователя RabbitmqMQ_PASSWORD - пароль пользователя RabbitmqMQ_HOST - HOST RABITMQMQ_PORT (необязательно) - порт RabbitMQ ( 5672 по умолчанию)MQ_EXCHANGE (необязательно)-Имя обмена RabbitMQ (по умолчанию text-to-speech )MQ_HEARTBEAT (необязательно) - Интервал сердцебиения (по умолчанию 60 секунд)MQ_CONNECTION_NAME (необязательно) - дружественное имя соединения ( TTS worker по умолчанию)MKL_NUM_THREADS (необязательно) - Количество потоков, используемых для внутриоперационного параллелизма Pytorch (используется для модели Vocoder). 16 по умолчанию. Если установить пустое значение, он по умолчанию по умолчанию количества ядер ЦП, которые могут вызвать вычислительные накладные расходы при развертывании на более крупных узлах. В качестве альтернативы, флаг docker run --cpuset-cpus может использоваться для управления этим. Для получения более подробной информации обратитесь к разделу требований к производительности и оборудованию ниже. По умолчанию точка записи контейнера является main.py без дополнительных аргументов, но аргументы должны быть определены с помощью параметра COMMAND . Единственный требуемый флаг --model-name чтобы выбрать, какая модель загружается работником. Полный список поддерживаемых флагов можно увидеть с помощью 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.
Настройка может быть протестирована с помощью следующего образца docker-compose.yml configuration:
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 :
- rabbitmqСледующие шаги были протестированы на Ubuntu и являются CPU, так и GPU, совместимым с CUDA).
Клонировать этот репозиторий с подмодулями
Установите предпосылки:
Композиторов GNU ( sudo apt install build-essential )
Для установки процессора мы рекомендуем использовать включенный файл requirements.txt в чистой среде (протестировано с помощью Python 3.9)
pip install -r requirements.txt
Для установки GPU используйте файл environment.yml вместо этого.
Убедитесь, что у вас установлены следующие предпосылки:
Затем создайте и активируйте среду Conda со всеми зависимостями:
conda env create -f environment.yml -n tts
conda activate tts
Загрузите модели из раздела релизов и поместите внутри models/ каталога.
Проверьте файлы конфигурации и измените все значения по умолчанию по мере необходимости. Убедитесь, что параметр model_path в config/config.yaml указывает на только что загруженную модель.
Укажите параметры подключения RabbitMQ с переменными среды или в файле config/.env как показано в config/sample.env .
Запустите работника, где MODEL_NAME соответствует имени модели в вашем файле конфигурации:
python main.py --model-name $MODEL_NAME [--log-config config/logging.ini --config config/config.yaml]