TSELM의 공식 구현: 개별 토큰 및 언어 모델을 사용한 대상 화자 추출.
모델 클래스를 참조하려면 exp/tselm/model.py를 직접 확인하세요. 혼합된 오디오는 각각 훈련을 위해 길이 48080(3.05sx 16khz)으로 잘리고 참조 음성은 64080(4.05sx 16khz)으로 잘립니다.
우리는 개별 토큰과 언어 모델을 활용하는 새로운 대상 화자 추출 네트워크인 TSELM을 제안합니다. TSELM은 WavLM의 여러 개별 레이어를 입력 토큰으로 활용하고 교차 주의 메커니즘을 통합하여 대상 화자 정보를 통합합니다. 언어 모델은 시퀀스 종속성을 캡처하는 데 사용되는 반면, 확장 가능한 HiFi-GAN은 토큰에서 오디오를 재구성하는 데 사용됩니다. 교차 엔트로피 손실을 적용함으로써 TSELM은 출력 토큰의 확률 분포를 모델링하여 오디오 생성의 복잡한 회귀 문제를 분류 작업으로 변환합니다. 실험 결과에 따르면 TSELM은 음성 품질에서 탁월한 결과를 얻었고 음성 명료도에서는 비슷한 결과를 얻었습니다.
requirements.txt
에서 모든 종속성을 설치합니다.실험을 실행하기 전에 다음과 같은 고정된 사전 학습된 모델을 다운로드해야 합니다.
이름 | 링크 | 결과 |
---|---|---|
WavLM 대형 | https://huggingface.co/microsoft/wavlm-large/tree/main | wavlm-대형 |
Kmeans | Kmeans 체크포인트 다운로드 | kmeans_ckpt |
확장 가능한 HiFiGAN | HiFiGAN 체크포인트 다운로드 | hifigan-wavlm-l1-3-7-18-23-k1000-LibriTTS |
WavLM Large 출력의 경우 전체 저장소를 복제하거나 전체 디렉터리를 다운로드하는 것이 좋습니다. Kmeans 및 Scalable HiFiGAN의 경우 다운로드 후 추출해야 합니다.
학습 구성은 기본적으로 리플렉션인 hyperpyyaml
패키지를 사용하여 지정됩니다.
TSELM-L
훈련을 위한 구성은 config/tselm_l.yaml에서 찾을 수 있습니다. 훈련하기 전에 고정된 사전 훈련된 모델 및 기타 훈련 세부 사항에 대한 구성을 지정해야 합니다. 자세한 내용은 config/tselm_l.yaml 및 config/README.md에서 확인할 수 있습니다.
구성 후 실행할 수 있습니다
# # Train the model using the config
python train.py --config_path ./config/tselm_l.yaml --log ./log --ckpt_path ./ckpt/tselm_l
--config_path
구성 파일의 경로를 지정합니다.--log
로그 출력 디렉터리를 지정합니다. 모든 로그가 여기에 저장됩니다.--ckpt_path
체크포인트 디렉터리를 지정합니다. 동일한 체크포인트 경로를 사용하여 훈련을 재개할 수 있습니다. 학습 후 가장 좋은 모델은
에 있습니다.
예를 들어 libri2mix 테스트 세트에서 모델을 추론하려면 다음을 실행하세요.
# # Generate output audio on libri2mix testset
python inference.py -scp < path_to_libri2mix_test_scp_folder >
-config ./config/tselm_l.yaml
-ckpt < path_to_ckpt >
--output < path_to_output_folder >
-gpus cuda:0 cuda:1 cuda:2 cuda:3
-proc 8
-scp
aux_s1.scp
, s1.scp
및 mix_clean.scp
를 포함하는 libri2mix 테스트 세트 폴더의 경로를 지정합니다.-config
구성을 지정합니다. 이 구성에는 model
필드가 있어야 합니다.-ckpt
모델 체크포인트를 지정합니다.--output
출력 디렉터리를 지정합니다. 출력 오디오는 이 폴더로 출력됩니다. 해당 이름은 .scp 파일의 이름과 동일합니다.-gpus
추론을 실행하는 데 사용 가능한 GPU를 지정합니다.-proc
추론을 병렬로 실행할 총 프로세스 수를 지정합니다. 제공된 GPU를 사용하고 각 장치에서 프로세스를 균등하게 나눕니다. 데이터는 각 프로세스에 균등하게 분할됩니다. TSELM-L 체크포인트는 여기에서 다운로드할 수 있습니다.
-ckpt
체크포인트 경로로 대체하여 libri2mix 테스트 세트를 추론할 수 있습니다.
사전 훈련된 모델을 다운로드하고 해당 체크포인트 폴더를 config/tselm_l.yaml에 추가해야 합니다.