Este repositório contém trabalhadores da síntese neural de texto em fala em múltiplos falantes da Estônia que processam solicitações do RabbitMQ.
O projeto é desenvolvido pelo grupo de pesquisa da PNL da Universidade de Tartu. A síntese de fala também pode ser testada em nossa demonstração.
A seção de lançamentos contém os arquivos do modelo ou suas instruções de download. Se uma versão não especificar as informações do modelo, o modelo da versão anterior poderá ser usado. Aconselhamos sempre a versão mais recente disponível para garantir a melhor qualidade do modelo e compatibilidade de código.
Os arquivos de configuração do modelo incluídos em config/config.yaml correspondem aos seguintes models/ estrutura de diretório:
models
├── hifigan
│ ├── ljspeech
│ │ ├── config.json
│ │ └── model.pt
│ ├── vctk
│ │ ├── config.json
│ │ └── model.pt
└── tts
└── multispeaker
├── config.yaml
└── model_weights.hdf5
O trabalhador do TTS pode ser implantado usando a imagem do Docker publicada ao lado do repositório. Cada versão da imagem se correlaciona com uma versão específica. Os arquivos de modelo necessários são excluídos da imagem para reduzir o tamanho da imagem e devem ser baixados na seção de liberações e seu diretório deve ser anexado ao volume /app/models .
A configuração do log é carregada de /app/config/logging.prod.ini e configuração de serviço do arquivo /app/config/config.yaml . A configuração incluída é comentada para ilustrar como novas configurações de modelo podem ser adicionadas.
As seguintes variáveis de ambiente devem ser configuradas ao executar o contêiner:
MQ_USERNAME - Nome de usuário do RabbitMQMQ_PASSWORD - senha do usuário do rabbitmqMQ_HOST - RabbitMQ HostMQ_PORT (Opcional) - Porta RabbitMQ ( 5672 por padrão)MQ_EXCHANGE (Opcional)-Nome da troca de RabbitMQ ( text-to-speech por padrão)MQ_HEARTBEAT (opcional) - intervalo de batimento cardíaco ( 60 segundos por padrão)MQ_CONNECTION_NAME (Opcional) - Nome da conexão amigável ( TTS worker por padrão)MKL_NUM_THREADS (opcional) - Número de threads usados para o paralelismo intra -operatório por pytorch (usado para o modelo de vocoder). 16 por padrão. Se definido como um valor em branco, o padrão é o número de núcleos da CPU que podem causar despesas gerais computacionais quando implantadas em nós maiores. Como alternativa, o sinalizador docker run --cpuset-cpus pode ser usado para controlar isso. Para obter mais detalhes, consulte a seção Requisitos de desempenho e hardware abaixo. Por padrão, o ponto de entrada do contêiner é main.py sem argumentos adicionais, mas os argumentos devem ser definidos com a opção COMMAND . O único sinalizador necessário é --model-name para selecionar qual modelo é carregado pelo trabalhador. A lista completa de sinalizadores suportados pode ser vista executando 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.
A configuração pode ser testada com a seguinte amostra 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 :
- rabbitmqAs etapas a seguir foram testadas no Ubuntu e são compatíveis com CPU e GPU (CUDA necessária).
Clone este repositório com submódulos
Instale pré -requisitos:
Coleção do compilador GNU ( sudo apt install build-essential )
Para uma instalação da CPU , recomendamos o uso do arquivo de requirements.txt incluído em um ambiente limpo (testado com o Python 3.9)
pip install -r requirements.txt
Para uma instalação de GPU , use o arquivo environment.yml .
Certifique -se de ter os seguintes pré -requisitos instalados:
Em seguida, crie e ative um ambiente do CONDA com todas as dependências:
conda env create -f environment.yml -n tts
conda activate tts
Faça o download dos modelos da seção Lançamentos e coloque dentro dos models/ diretório.
Verifique os arquivos de configuração e altere os padrões conforme necessário. Verifique se o parâmetro model_path no config/config.yaml aponta para o modelo que você acabou de baixar.
Especifique os parâmetros de conexão do RabbitMQ com variáveis de ambiente ou em um arquivo config/.env conforme ilustrado no config/sample.env .
Execute o trabalhador com onde MODEL_NAME corresponde ao nome do modelo em seu arquivo de configuração:
python main.py --model-name $MODEL_NAME [--log-config config/logging.ini --config config/config.yaml]