이 저장소에는 RabbitMQ의 요청을 처리하는 에스토니아의 멀티 스피커 신경 텍스트 음성 연사 합성 작업자가 포함되어 있습니다.
이 프로젝트는 Tartu 대학의 NLP 연구 그룹에 의해 개발되었습니다. 음성 합성은 또한 데모에서 테스트 할 수 있습니다.
릴리스 섹션에는 모델 파일 또는 다운로드 지침이 포함되어 있습니다. 릴리스가 모델 정보를 지정하지 않으면 이전 릴리스의 모델을 사용할 수 있습니다. 최신 버전을 사용하여 최상의 모델 품질 및 코드 호환성을 보장하는 것이 좋습니다.
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 파일에서 서비스 구성. 포함 된 구성은 새로운 모델 구성을 추가 할 수있는 방법을 설명하기 위해 댓글을 달았습니다.
컨테이너를 실행할 때 다음 환경 변수를 구성해야합니다.
MQ_USERNAME -Rabbitmq 사용자 이름MQ_PASSWORD -RABBITMQ 사용자 비밀번호MQ_HOST RabbitMQ 호스트MQ_PORT (선택 사항) - Rabbitmq 포트 (기본적으로 5672 )MQ_EXCHANGE (선택 사항)-RabbitMQ Exchange 이름 (기본적으로 text-to-speech )MQ_HEARTBEAT (선택 사항) - 하트 비트 간격 (기본적으로 60 초)MQ_CONNECTION_NAME (선택 사항) - 친숙한 연결 이름 (기본적으로 TTS worker )MKL_NUM_THREADS (선택 사항) - Pytorch (보코더 모델에 사용)에 의한 INT -OP 병렬 처리에 사용되는 스레드 수. 16 기본적으로. 빈 값으로 설정되면 기본값은 CPU 코어 수로 기본적으로 설정되어 큰 노드에 배포 될 때 계산 오버 헤드를 유발할 수 있습니다. 또는 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 구성으로 테스트 할 수 있습니다.
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다음 단계는 우분투에서 테스트되었으며 CPU 및 GPU 호환 (CUDA 필수)입니다.
이 저장소를 서브 모듈로 복제하십시오
전제 조건 설치 :
GNU 컴파일러 컬렉션 ( sudo apt install build-essential )
CPU 설치의 경우 포함 된 requirements.txt 사용하는 것이 좋습니다. TXT 깨끗한 환경에서 (Python 3.9로 테스트).
pip install -r requirements.txt
GPU 설치를 위해서는 대신 environment.yml 을 사용하십시오.
다음과 같은 전제 조건이 설치되어 있는지 확인하십시오.
그런 다음 모든 종속성으로 콘다 환경을 만들고 활성화합니다.
conda env create -f environment.yml -n tts
conda activate tts
릴리스 섹션에서 모델을 다운로드하고 models/ 디렉토리 내부에 배치하십시오.
구성 파일을 확인하고 필요에 따라 기본값을 변경하십시오. config/config.yaml 의 model_path 매개 변수가 방금 다운로드 한 모델을 가리 키십시오.
config/sample.env 에 표시된대로 환경 변수 또는 config/.env 파일로 RabbitMQ 연결 매개 변수를 지정하십시오.
MODEL_NAME 이 구성 파일의 모델 이름과 일치하는 Where로 작업자를 실행하십시오.
python main.py --model-name $MODEL_NAME [--log-config config/logging.ini --config config/config.yaml]