ChangeLog 파일을 확인하여 최신 수정에 대한 전역 개요를 확인하십시오! ?
├── custom_architectures
│ ├── tacotron2_arch.py : Tacotron-2 synthesizer architecture
│ └── waveglow_arch.py : WaveGlow vocoder architecture
├── custom_layers
├── custom_train_objects
│ ├── losses
│ │ └── tacotron_loss.py : custom Tacotron2 loss
├── example_outputs : some pre-computed audios (cf the ` text_to_speech ` notebook)
├── loggers
├── models
│ ├── encoder : the ` AudioEncoder ` is used as speaker encoder for the SV2TTS model *
│ ├── tts
│ │ ├── sv2tts_tacotron2.py : SV2TTS main class
│ │ ├── tacotron2.py : Tacotron2 main class
│ │ ├── vocoder.py : main functions for complete inference
│ │ └── waveglow.py : WaveGlow main class (both pytorch and tensorflow)
├── pretrained_models
├── unitests
├── utils
├── example_fine_tuning.ipynb
├── example_sv2tts.ipynb
├── example_tacotron2.ipynb
├── example_waveglow.ipynb
└── text_to_speech.ipynb확장되지 않은 모듈 / 구조 / 메인 클래스에 대한 자세한 내용은 기본 프로젝트를 확인하십시오.
* models/encoder 모듈에 대한 자세한 내용은 Encoders 프로젝트를 확인하십시오.
models.tts ) :| 특징 | FUCTION / CLASS | 설명 |
|---|---|---|
| 텍스트 음성 | tts | 원하는 모델로 원하는 텍스트에서 TTS를 수행하십시오. |
| 개울 | tts_stream | 입력 한 텍스트에서 tts를 수행하십시오 |
| TTS 로거 | loggers.TTSLogger | logging 로그를 음성으로 변환하고 재생합니다 |
text_to_speech 노트북은 tts 기능의 구체적인 데모를 제공합니다.
사용 가능한 아키텍처 :
Synthesizer :SV2TTS )Vocoder :SV2TTS 모델은 부분 전송 학습 절차 (자세한 내용은 아래 참조)를 사용하여 사전 각화 된 타코 트론 2 모델에서 미세 조정되어 교육 속도를 높입니다.
| 이름 | 언어 | 데이터 세트 | 신시사이저 | 보코더 | 스피커 인코더 | 훈련자 | 무게 |
|---|---|---|---|---|---|---|---|
| Pretrained_tacotron2 | en | ljspeech | Tacotron2 | WaveGlow | / | nvidia | 구글 드라이브 |
| 타코 트론 2_siwis | fr | 시위 | Tacotron2 | WaveGlow | / | 나 | 구글 드라이브 |
| sv2tts_tacotron2_256 | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | 구글 드라이브 | 나 | 구글 드라이브 |
| SV2TTS_SIWIS | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | 구글 드라이브 | 나 | 구글 드라이브 |
| SV2TTS_TACOTRON2_256_V2 | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | 구글 드라이브 | 나 | 구글 드라이브 |
| sv2tts_siwis_v2 | fr | 시위 | SV2TTSTacotron2 | WaveGlow | 구글 드라이브 | 나 | 구글 드라이브 |
pretrained_models/ Directory에서 모델을 압축해야합니다!
중요 참고 : torch hub 에서 사용할 수있는 NVIDIA 모델에는 pytorch 에 대한 올바른 구성이있는 호환 GPU가 필요합니다. 두 모델이 예상 된 keras 체크 포인트에 제공되는 이유는 무엇입니까?
sv2tts_siwis 모델은 SIWIS (Single-Speaker) 데이터 세트에서 sv2tts_tacotron2_256 의 미세 조정 버전입니다. 단일 스피커 데이터 세트에서 멀티 스피커를 미세 조정하면 단순히 단일 스피커 모델을 훈련하는 것과 비교하여 안정성을 향상시키고 더 많은 억양으로 음성을 생성하는 경향이 있습니다.
이 링크에서 Google Colab 데모를 사용할 수 있습니다!
또한 example_outputs/ 또는 Colab 노트에서 직접 생성 된 오디오를 찾을 수 있습니다.)
단계별 지침은이 installagion 안내서를 확인하십시오!
오디오로드 / 저장을 위해 ffmpeg 설치해야 할 수도 있습니다.
Google Colab 데모를 만드십시오 tensorflow 2.x 에서 WaveGlow를 구현하십시오 vocoder inference 에 대한 batch_size 지원을 추가하십시오 SV2TTS 가중치를 추가하십시오 similarity loss 추가 TTS 수행하기 위해 (진행 중) GE2E 손실로 훈련 된 인코더를 기반으로 SV2TTS 모델을 훈련 multi-speaker 음성 합성을 가능하게하는 여러 가지 방법이 있습니다.
Embedding 레이어에 포함 된 speaker ID 사용하십시오. 그런 다음 스피커 임베딩은 훈련 중에 학습됩니다.Speaker Encoder (SE) 사용하여 참조 스피커에서 오디오를 포함시킵니다. 이것은 스피커의 샘플 만 필요하기 때문에 종종 zero-shot voice cloning 라고합니다 (훈련없이).prompt-based 전략이 제안되었습니다.SV2TTS 아키텍처로 자동 음성 클로닝 참고 : 다음 단락에서 encoder Tacotron Encoder 부분을 나타내고 SE 는 speaker encoder 모델을 나타냅니다 (아래에 자세히 설명).
Speaker Encoder-based Text-To-Speech "스피커 검증에서 SV2TTS (Text-To-Steece) (SV2TTS)에서 영감을 얻습니다. 저자는 스피커의 목소리에 대한 정보를 포함하도록 Tacotron-2 아키텍처의 확장을 제안했습니다.
다음은 제안 된 절차에 대한 짧은 개요입니다.
speaker verification 모델을 기반으로 스피커를 식별하기위한 모델을 훈련시킵니다. 이 모델은 기본적으로 스피커에서 오디오 샘플 (5-10 초)을 입력하여 embedding 된 D- 차원 벡터에 인코딩합니다. 이 임베딩은 스피커의 목소리 (예 : frequencies , rythm , pitch , ...)에 대한 관련 정보를 캡처하는 것을 목표로합니다.Speaker Encoder (SE) 스피커의 음성을 클론에 인코딩하는 데 사용됩니다.Tacotron-2 엔코더 부분의 출력과 연결되어 Decoder 인코딩 된 텍스트와 스피커 임베딩 모두에 액세스 할 수 있도록한다. 목표는 Decoder speaker embedding 사용하여 Prosody / Intonation / ...이 스피커의 목소리로 텍스트를 읽는 법을 배웁니다.
위의 접근 방식에는 몇 가지 제한 사항이 있습니다.
Speaker Encoder 스피커를 올바르게 분리하고 신디사이저를 위해 의미있는 방식으로 음성을 인코딩해야합니다.이러한 한계를 해결하기 위해 제안 된 솔루션은 2 단계 교육을 수행하는 것입니다.
CommonVoice 데이터베이스에서 저품질 멀티 스피커 모델을 훈련시킵니다. 이것은 시끄러운 / 가변 품질 오디오 비용으로 오디오를위한 가장 큰 다국어 데이터베이스 중 하나입니다. 따라서 이것은 양질의 모델을 훈련시키는 데 적합하지 않지만 사전 처리는 여전히 이해하기 쉬운 오디오를 얻는 데 도움이됩니다.SE 부품은 스피커를 구별하고 의미있는 방식으로 스피커를 포함 할 수 있어야합니다.
이 용지에 사용 된 모델은 GE2E 손실로 훈련 된 정규화 층이있는 3 층 LSTM 모델입니다. 주요 제한 사항은이 모델을 훈련시키는 것 입니다. Corentinj 마스터 논문에서 4 GPU에서 2 주가 걸렸다는 것입니다.
이 프로젝트는 Convolutional Neural Networks (CNN) 을 기반으로 한 간단한 아키텍처를 제안하며, 이는 LSTM 네트워크에 비해 훈련하기가 훨씬 빠릅니다. 또한, euclidian 거리는 cosine 메트릭보다는 사용되었으며, 이는 더 빠른 수렴을 보여 주었다. 또한 오디오 처리 속도를 높이기 위해 사용자 정의 캐시 기반 생성기가 제안됩니다. 이러한 변형은 단일 RTX 3090 GPU에서 2-3 시간 이내에 99% 정확도 모델을 훈련시킬 수있었습니다!
단일 GPU에서 완전히 불가능한 SV2TTS 모델을 처음부터 훈련하지 않기 위해 새로운 partial transfer learning 절차가 제안됩니다.
이 절차는 약간 다른 아키텍처를 가진 미리 훈련 된 모델을 취하고 (정기적 인 전송 학습과 같은 모든 일반적인 가중치를 전달합니다. 가중치 모양이 다른 층의 경우 공통 부분 만 전달되는 반면 나머지 중량은 0으로 초기화됩니다. 이로 인해 원래 모델의 동작을 모방하기 위해 가중치가 다릅니다.
SV2TTS 아키텍처에서 스피커 임베딩은 Tacotron2 decoder 의 재발 층으로 전달됩니다. 이로 인해 입력 모양이 다르므로 레이어 가중치 매트릭스가 다릅니다. 부분 전송 학습을 통해 모델을 원래의 단일 스피커 Tacotron2 모델의 동작을 복제 할 수 있습니다!
연락처 :
[email protected]이 프로젝트의 목표는 딥 러닝 기술에 대한 교육 및 연구를 지원하고 발전시키는 것입니다. 이를 용이하게하기 위해 모든 관련 코드는 GNU Affero General Public License (AGPL) v3에 따라 제공되며, 상업용 사용을 금지하는 조항 (CF 라이센스 파일).
이 프로젝트는 "무료 소프트웨어"로 릴리스되므로 라이센스 조건을 준수하는 경우 소프트웨어를 자유롭게 사용, 수정, 배포 및 공유 할 수 있습니다. 소프트웨어를 자유롭게 사용할 수 있지만 공개 도메인이 아니며 저작권 보호를 유지합니다. 라이센스 조건은 모든 사용자가 자체 교육 및 연구 프로젝트를 위해 모든 버전의 코드를 활용하고 수정할 수 있도록 설계되었습니다.
독점적 인 상업적 노력 에서이 프로젝트를 사용하려면 별도의 라이센스를 얻어야합니다. 이 과정에 대한 자세한 내용은 저에게 직접 연락하십시오.
내 보호를 위해, 모든 프로젝트는 명시 적 또는 묵시적 보증이나 조건없이 "그대로"기준으로 제공됩니다. 그러나 저장소 프로젝트에 대한 문제를보고하는 것을 망설이지 말고 해결 요청을 요청하십시오.
이 프로젝트가 작업에 유용하다고 생각되면이 인용을 추가하여 더 많은 가시성을 제공하십시오! ?
@misc{yui-mhcp
author = {yui},
title = {A Deep Learning projects centralization},
year = {2021},
publisher = {GitHub},
howpublished = {url{https://github.com/yui-mhcp}}
}
이 프로젝트의 코드는 여러 GitHub 프로젝트의 혼합으로, 완전히 조정 가능한 Tacotron-2 구현을 갖습니다.
dynamic decoder 구현에서 영감을 얻었으며, 이제 Keras 3 호환으로 최적화되어 업데이트되었습니다.SV2TTS 아키텍처는이 저장소에서 영감을 얻었으며 작은 차이와 최적화로 영감을 얻었습니다.논문 :