Diffsinger의 Pytorch 구현 : 얕은 확산 메커니즘을 통한 노래 음성 합성 (diffspeech에 중점을 둔).


K 의 경계 예측에 대한 더 쉬운 트릭 K 사용하는 미리 훈련 된 보조 디코더 + 훈련 데노저 활용 데이터 세트는 다음 문서에서 LJSpeech 와 같은 데이터 세트의 이름을 나타냅니다.
모델은 모델 유형을 나타냅니다 ( ' Naive ', ' Aux ', ' Shallow '중에서 선택).
파이썬 종속성을 설치할 수 있습니다
pip3 install -r requirements.txt
사전에 걸린 모델을 다운로드하고 넣어야합니다.
output/ckpt/LJSpeech_naive/ .output/ckpt/LJSpeech_shallow/ ' 얕은 '모델. ' 얕은 '모델의 체크 포인트에는 ' 얕은 '및 ' 보조 '모델이 모두 포함되어 있으며이 두 모델은 전체 프로세스의 결과를 제외한 모든 디렉토리를 공유합니다.영어 단일 스피커 TTS의 경우 실행하십시오
python3 synthesize.py --text "YOUR_DESIRED_TEXT" --model MODEL --restore_step RESTORE_STEP --mode single --dataset DATASET
생성 된 발화는 output/result/ 에 넣습니다.
배치 추론도 지원됩니다
python3 synthesize.py --source preprocessed_data/LJSpeech/val.txt --model MODEL --restore_step RESTORE_STEP --mode batch --dataset DATASET
preprocessed_data/LJSpeech/val.txt 의 모든 발화를 종합합니다.
합성 된 발화의 피치/볼륨/말하기 속도는 원하는 피치/에너지/지속 시간 비율을 지정하여 제어 할 수 있습니다. 예를 들어, 말하기 속도를 20 % 증가시키고 양을 20 % 감소시킬 수 있습니다.
python3 synthesize.py --text "YOUR_DESIRED_TEXT" --model MODEL --restore_step RESTORE_STEP --mode single --dataset DATASET --duration_control 0.8 --energy_control 0.8
제어 가능성은 FastSpeech2에서 유래되며 Diffspeech의 중요한 관심은 아닙니다.
지원되는 데이터 세트는입니다
먼저, 실행
python3 prepare_align.py --dataset DATASET
일부 준비.
강제 정렬의 경우, 몬트리올 강제 정렬 (MFA)은 발화와 음소 시퀀스 사이의 정렬을 얻는 데 사용됩니다. 데이터 세트에 대한 사전 추출 된 정렬이 여기에 제공됩니다. preprocessed_data/DATASET/TextGrid/ 에서 파일을 압축해야합니다. 또는 혼자서 Aligner를 실행할 수 있습니다.
그 후, 전처리 스크립트를 실행하십시오
python3 preprocess.py --dataset DATASET
' 순진한 ', ' 보조 '및 ' 얕은 '의 세 가지 유형의 모델을 훈련시킬 수 있습니다.
순진한 버전 훈련 ( ' Naive ') :
순진한 버전을 훈련하십시오
python3 train.py --model naive --dataset DATASET
얕은 버전에 대한 보조 디코더 훈련 ( ' aux ') :
얕은 버전을 훈련 시키려면 미리 훈련 된 FastSpeech2가 필요합니다. 아래 명령을 사용하면 보조 디코더를 포함한 FastSpeech2 모듈을 훈련시킬 수 있습니다.
python3 train.py --model aux --dataset DATASET
경계 예측에 대한 더 쉬운 트릭 :
유효성 검사 데이터 세트에서 경계 K 얻으려면 다음 명령으로 미리 훈련 된 보조 FastSpeech2를 사용하여 경계 예측 변수를 실행할 수 있습니다.
python3 boundary_predictor.py --restore_step RESTORE_STEP --dataset DATASET
명령 로그에 예측 된 값 (예 : K_STEP )을 인쇄합니다.
그런 다음 다음과 같이 예측 값으로 구성을 설정하십시오.
# In the model.yaml
denoiser :
K_step : K_STEP이것은 부록 B에 소개 된 트릭을 기반으로합니다.
얕은 버전 훈련 ( ' 얕은 ') : :
보조 디코더를 포함하여 사전 훈련 된 FastSpeech2를 활용하려면 Auxiliary FastSpeech2 교육의 마지막 단계를 다음 명령으로 restore_step 설정해야합니다.
python3 train.py --model shallow --restore_step RESTORE_STEP --dataset DATASET
예를 들어, 보조 훈련 중에 마지막 체크 포인트가 160000 단계에서 저장되면 160000 으로 restore_step 설정해야합니다. 그런 다음 AUX 모델을로드 한 다음 얕은 훈련 메커니즘 하에서 훈련을 계속합니다.
사용
tensorboard --logdir output/log/LJSpeech
지역 호스트에서 텐서 보드를 제공합니다. 손실 곡선, 합성 된 멜 스피어 그램 및 오디오가 표시됩니다.







27.767M 이며, 이는 원래 논문 ( 27.722M )과 유사합니다.100 이며, 이는 순진한 확산의 전체 타임 스펙이므로 확산 단계에 대한 이점이 없다. @misc{lee2021diffsinger,
author = {Lee, Keon},
title = {DiffSinger},
year = {2021},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/keonlee9420/DiffSinger}}
}