우리의 논문에서 우리는 텍스트에 대한 교차 스피커 번영 전송을위한 최신 기술을 발전시키는 멀티 스피커 음향 모델 인 Daft-Exprt를 제안합니다. 이것은 특히 표현력이 높은 데이터에 대해 언어 합성에서 가장 도전적이고 거의 직접 해결되는 작업 중 하나입니다. DAFT-EXPRT는 필름 컨디셔닝 층을 사용하여 아키텍처의 모든 부분에서 다른 프로 소스 정보를 전략적으로 주입합니다. 이 모델은 피치, 음량 및 기간과 같은 전통적인 저수준 프로디 기능을 명시 적으로 인코딩하지만, 매우 표현력있는 스타일로 설득력있는 목소리를 생성하는 데 도움이되는 높은 수준의 프로소스 정보도 명시 적으로 인코딩합니다. 화자 신원 및 프로 소디 픽 정보는 스피커 전체에 대한 정확한 프로디 전이를 가능하게하는 적대적 훈련 전략을 통해 분리됩니다. 실험 결과에 따르면 DAFT-EXPRT는 텍스트 간 크로스 스피커 프로디 전이 작업에서 강력한 기준선을 훨씬 능가하는 동시에 최첨단 표현 모델과 비교할 수있는 자연을 산출합니다. 또한, 결과는 모델이 프로디 표현에서 스피커 아이덴티티 정보를 폐기하고 원하는 목소리로 일관되게 음성을 생성한다는 것을 나타냅니다. 종이 실험과 관련된 오디오 샘플은 데모 페이지를 방문하십시오.
전체 공개 :이 저장소에 제공된 모델은 논문 평가와 동일하지 않습니다. 이 논문의 모델은 독점 데이터로 훈련되어 공개적으로 공개 할 수 없습니다.
우리는 LJ Speech DataSet과 Zhou et al.
이 저장소의 릴리스를 방문하여 미리 훈련 된 모델을 다운로드하고 동일한 모델을 사용하여 Prosody 전송 예제를 들으십시오.
요구 사항 :
Python Environment Management (예 : Miniconda를 다운로드하고 설치하는 등 Conda를 사용하는 것이 좋습니다.
MakeFile을 사용하여 파이썬 환경을 만들고 종속성을 설치하십시오.
conda create -n daft_exprt python=3.8 -yconda activate daft_exprtcd environmentmake모든 Linux/Conda/PIP 종속성은 MakeFile에 의해 설치되며 저장소는 편집 가능한 모드로 PIP 패키지로 설치됩니다.
요구 사항 :
연관된 dockerfile을 사용하여 Docker 이미지를 작성하십시오.
docker build -f environment/Dockerfile -t daft_exprt . 이 빠른 시작 안내서는이 저장소의 다른 스크립트를 사용하는 방법을 설명합니다.
모든 스크립트는 스크립트 디렉토리에 있습니다.
DAFT-EXPRT 소스 코드는 DAFT_EXPRT 디렉토리에 있습니다.
스크립트에 사용 된 구성 매개 변수는 모두 hparams.py에 Instanciated입니다.
빠른 시작 예로서, 우리는 22kHz LJ Speech DataSet과 Zhou et al.
이것은 총 11 개의 스피커를 결합합니다. 모든 스피커 데이터 세트는 동일한 루트 디렉토리에 있어야합니다. 예를 들어:
/data_dir
LJ_Speech
ESD
spk_1
...
spk_N
이 예에서는 이전 섹션에 내장 된 Docker 이미지를 사용합니다.
docker run -it --gpus all -v /path/to/data_dir:/workdir/data_dir -v path/to/repo_dir:/workdir/repo_dir IMAGE_ID
소스 코드는 각 스피커 데이터 세트의 특정 트리 구조를 기대합니다.
/speaker_dir
metadata.csv
/wavs
wav_file_name_1.wav
...
wav_file_name_N.wav
Metadata.csv는 다음과 같이 형식화되어야합니다.
wav_file_name_1|text_1
...
wav_file_name_N|text_N
각 데이터 세트에는 고유 한 명칭이 주어지면이 프로젝트는 기성품 범용 스크립트를 제공하지 않습니다.
그러나 스크립트 Format_Dataset.py는 이미 LJ 및 ESD 형식에 코드를 제안합니다.
python format_dataset.py
--data_set_dir /workdir/data_dir/LJ_Speech
LJ
python format_dataset.py
--data_set_dir /workdir/data_dir/ESD
ESD
--language english
이 섹션에서는 코드가 다음과 같습니다.
사용 가능한 모든 형식의 형식 데이터 (예 :이 예에서는 LJ 및 ESD)를 사전 처리하려면 :
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
pre_process
이는 22kHz 오디오 용으로 설정된 기본 하이퍼 패러 미터를 사용하여 데이터를 사전 프로세스합니다.
실험과 관련된 모든 출력은 /workdir/repo_dir/trainings/EXPERIMENT_NAME 에 저장됩니다.
데이터 사전 프로세싱을 위해 특정 스피커를 대상으로 할 수도 있습니다. 예를 들어 ESD 스피커 만 고려합니다.
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
pre_process
프리 프로세스 기능은 몇 가지 인수를 취합니다.
--features_dir : 사전 처리 된 데이터가 저장 될 절대 경로. /workdir/repo_dir/datasets 의 기본값--proportion_validation : 유효성 검사 세트에있는 예의 비율. 스피커 당 기본값 0.1 %--nb_jobs : 파이썬 다중 처리에 사용할 코어 수. max 로 설정하면 모든 CPU 코어가 사용됩니다. 기본값 6 . 데이터를 사전 처리 한 것이 처음이라면이 단계에는 몇 시간이 걸립니다.
--nb_jobs 매개 변수를 늘려 컴퓨팅 시간을 줄일 수 있습니다.
사전 프로세싱이 완료되면 훈련을 시작하십시오. 사전 처리 된 모든 데이터를 훈련시키기 위해 :
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
train
또는 사전 처리 중 특정 스피커를 대상으로 한 경우 (예 : ESD 스피커) :
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
train
실험과 관련된 모든 출력은 /workdir/repo_dir/trainings/EXPERIMENT_NAME 에 저장됩니다.
열차 기능은 몇 가지 논증을 취합니다.
--checkpoint : Daft-Exprt 체크 포인트의 절대 경로. "" 기본값--no_multiprocessing_distributed : PyTorch 다중 처리 분산 교육 비활성화. False 으로 기본값--world_size : 분산 교육을위한 노드 수. 기본값 1 .--rank : 분산 교육의 노드 순위. 기본값 0 .--master : 분산 교육을 설정하는 데 사용되는 URL. tcp://localhost:54321 에 대한 기본값. 이 기본값은 컴퓨터에서 사용 가능한 모든 GPU를 사용하여 반복 0에서 시작하여 새로운 교육을 시작합니다.
코드는 기계에서 1 GPU 만 사용할 수 있다고 가정합니다.
기본 배치 크기 및 그라디언트 축적 하이퍼 파라미터는 용지에서 48의 배치 크기를 재현하기 위해 값으로 설정됩니다.
이 코드는 또한 Tensorboard 로깅을 지원합니다. 로깅 출력을 표시하려면 :
tensorboard --logdir_spec=EXPERIMENT_NAME:/workdir/repo_dir/trainings/EXPERIMENT_NAME/logs
훈련이 완료되면 프로코더 미세 조정을위한 데이터 세트를 만들 수 있습니다.
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
또는 사전 처리 및 교육 중 특정 스피커를 대상으로 한 경우 (예 : ESD 스피커) :
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
미세 조정 데이터 세트는 /workdir/repo_dir/trainings/EXPERIMENT_NAME/fine_tuning_dataset 에 저장됩니다.
TTS 합성에 DAFT-EXPRT를 사용하는 방법에 대한 예는 스크립트 합성을 실행하십시오.
python synthesize.py
--output_dir OUTPUT_DIR
--checkpoint CHECKPOINT
기본 문장 및 참조 발화는 스크립트에 사용됩니다.
스크립트는 다음과 같은 가능성을 제공합니다.
--batch_size : 프로세스 배치 문장을 동시에 배치합니다--real_time_factor : 선택한 배치 크기가 주어진 Daft-Exprt 실시간 요소 성능 추정--control : 현지 프로디 컨트롤을 수행하십시오 @article{Zaidi2021,
abstract = {},
journal = {arXiv},
arxivId = {2108.02271},
author = {Za{"{i}}di, Julian and Seut{'{e}}, Hugo and van Niekerk, Benjamin and Carbonneau, Marc-Andr{'{e}}},
eprint = {2108.02271},
title = {{Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis}},
url = {https://arxiv.org/pdf/2108.02271.pdf},
year = {2021}
}
이 저장소에 대한 모든 기여는 환영받는 것 이상입니다!
피드백이 있으면 [email protected]으로 보내주십시오.
© [2021] Ubisoft Entertainment. 모든 권리 보유