File: docs/tr/README.md
Özellikler:
Sıfır Örnekli Metinden Konuşmaya: 5 saniyelik bir vokal örneği girin ve anında metinden konuşmaya dönüşümünü deneyimleyin.
Birkaç Örnekli Metinden Konuşmaya: Daha iyi ses benzerliği ve gerçekçiliği için modeli yalnızca 1 dakikalık eğitim verisiyle ince ayarlayın.
Çapraz Dil Desteği: Eğitim veri setinden farklı dillerde çıkarım, şu anda İngilizce, Japonca, Çince, Kantonca ve Koreceyi destekliyor.
Web Arayüzü Araçları: Entegre araçlar arasında vokal eşliğinde ayırma, otomatik eğitim seti segmentasyonu, Çince ASR ve metin etiketleme bulunur ve yeni başlayanların eğitim veri setleri ve GPT/SoVITS modelleri oluşturmalarına yardımcı olur.
Demo videomuzu buradan izleyin!
Görünmeyen konuşmacılar birkaç örnekli ince ayar demosu:
https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb
Kullanıcı Kılavuzu: 简体中文 | English
SeedTTS Eval Testset_CN2020 Üzerinde Sıfır Örnekli TTS Konuşmacı Benzerliği Karşılaştırma Grafiği
Kurulum
Test Edilmiş Ortamlar
| Python Version | PyTorch Version | Device |
|---|---|---|
| Python 3.10 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.7.0 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.8.0dev | CUDA 12.8 |
| Python 3.12 | PyTorch 2.7.1 | CUDA 11.8 |
| Python 3.12 | PyTorch 2.7.1 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.5.1 | Apple silicon |
| Python 3.11 | PyTorch 2.7.0 | Apple silicon |
| Python 3.9 | PyTorch 2.2.2 | CPU |
Windows
Eğer bir Windows kullanıcısıysanız (win>=10 ile test edilmiştir), entegre paketi indirin ve go-webui.bat dosyasına çift tıklayarak GPT-SoVITS-WebUI'yi başlatın.
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pwsh -F install.ps1 --Device <CU126|CU128|CPU> --Source <HF|HF-Mirror|ModelScope> [--DownloadUVR5]Linux
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <CU126|CU128|ROCM|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]macOS
Not: Mac'lerde GPU'larla eğitilen modeller, diğer cihazlarda eğitilenlere göre önemli ölçüde daha düşük kalitede sonuç verir, bu nedenle geçici olarak CPU'lar kullanıyoruz.
Aşağıdaki komutları çalıştırarak programı yükleyin:
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <MPS|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]El ile Yükleme
Bağımlılıkları Yükleme
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pip install -r extra-req.txt --no-deps
pip install -r requirements.txtFFmpeg'i Yükleme
Conda Kullanıcıları
conda activate GPTSoVits
conda install ffmpegUbuntu/Debian Kullanıcıları
sudo apt install ffmpeg
sudo apt install libsox-devWindows Kullanıcıları
ffmpeg.exe ve ffprobe.exe dosyalarını indirin ve GPT-SoVITS kök dizinine yerleştirin
Visual Studio 2017 ortamını yükleyin
MacOS Kullanıcıları
brew install ffmpegGPT-SoVITS Çalıştırma (Docker Kullanarak)
Docker İmajı Seçimi
Kod tabanı hızla geliştiği halde Docker imajları daha yavaş yayınlandığı için lütfen şu adımları izleyin:
- En güncel kullanılabilir imaj etiketlerini görmek için Docker Hub adresini kontrol edin
- Ortamınıza uygun bir imaj etiketi seçin
Lite, Docker imajında ASR modelleri ve UVR5 modellerinin bulunmadığı anlamına gelir. UVR5 modellerini manuel olarak indirebilirsiniz; ASR modelleri ise gerektiğinde program tarafından otomatik olarak indirilir- Docker Compose sırasında, uygun mimariye (amd64 veya arm64) ait imaj otomatik olarak indirilir
- Docker Compose, mevcut dizindeki tüm dosyaları bağlayacaktır. Docker imajını kullanmadan önce lütfen proje kök dizinine geçin ve en son kodu çekin
- Opsiyonel: En güncel değişiklikleri almak için, sağlanan Dockerfile ile yerel olarak imajı kendiniz oluşturabilirsiniz
Ortam Değişkenleri
is_half: Yarı hassasiyet (fp16) kullanımını kontrol eder. GPU’nuz destekliyorsa, belleği azaltmak içintrueolarak ayarlayın.
Paylaşılan Bellek Yapılandırması
Windows (Docker Desktop) ortamında, varsayılan paylaşılan bellek boyutu düşüktür ve bu beklenmedik hatalara neden olabilir. Sistem belleğinize göre Docker Compose dosyasındaki shm_size değerini (örneğin 16g) artırmanız önerilir.
Servis Seçimi
docker-compose.yaml dosyasında iki tür servis tanımlanmıştır:
GPT-SoVITS-CU126veGPT-SoVITS-CU128: Tüm özellikleri içeren tam sürüm.GPT-SoVITS-CU126-LiteveGPT-SoVITS-CU128-Lite: Daha az bağımlılığa ve sınırlı işlevselliğe sahip hafif sürüm.
Belirli bir servisi Docker Compose ile çalıştırmak için şu komutu kullanın:
docker compose run --service-ports <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128>Docker İmajını Yerel Olarak Oluşturma
Docker imajını kendiniz oluşturmak isterseniz şu komutu kullanın:
bash docker_build.sh --cuda <12.6|12.8> [--lite]Çalışan Konteynere Erişim (Bash Shell)
Konteyner arka planda çalışırken, aşağıdaki komutla içine girebilirsiniz:
docker exec -it <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128> bashÖnceden Eğitilmiş Modeller
Eğer install.sh başarıyla çalıştırılırsa, No.1,2,3 adımını atlayabilirsiniz.
GPT-SoVITS Models üzerinden önceden eğitilmiş modelleri indirip
GPT_SoVITS/pretrained_modelsdizinine yerleştirin.G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) üzerinden modeli indirip sıkıştırmayı açın ve
G2PWModelolarak yeniden adlandırın, ardındanGPT_SoVITS/textdizinine yerleştirin. (Sadece Çince TTS için)UVR5 (Vokal/Enstrümantal Ayrımı & Yankı Giderme) için, UVR5 Weights üzerinden modelleri indirip
tools/uvr5/uvr5_weightsdizinine yerleştirin.UVR5'te bs_roformer veya mel_band_roformer modellerini kullanıyorsanız, modeli ve ilgili yapılandırma dosyasını manuel olarak indirip
tools/UVR5/UVR5_weightsklasörüne yerleştirebilirsiniz. Model dosyası ve yapılandırma dosyasının adı, uzantı dışında aynı olmalıdır. Ayrıca, model ve yapılandırma dosyasının adlarında "roformer" kelimesi yer almalıdır, böylece roformer sınıfındaki bir model olarak tanınır.Model adı ve yapılandırma dosyası adı içinde doğrudan model tipini belirtmek önerilir. Örneğin: mel_mand_roformer, bs_roformer. Belirtilmezse, yapılandırma dosyasından özellikler karşılaştırılarak model tipi belirlenir. Örneğin,
bs_roformer_ep_368_sdr_12.9628.ckptmodeli ve karşılık gelen yapılandırma dosyasıbs_roformer_ep_368_sdr_12.9628.yamlbir çifttir. Aynı şekilde,kim_mel_band_roformer.ckptvekim_mel_band_roformer.yamlda bir çifttir.
Çince ASR için, Damo ASR Model, Damo VAD Model ve Damo Punc Model üzerinden modelleri indirip
tools/asr/modelsdizinine yerleştirin.İngilizce veya Japonca ASR için, Faster Whisper Large V3 üzerinden modeli indirip
tools/asr/modelsdizinine yerleştirin. Ayrıca, diğer modeller benzer bir etki yaratabilir ve daha az disk alanı kaplayabilir.
Veri Seti Formatı
TTS açıklama .list dosya formatı:
vocal_path|speaker_name|language|textDil sözlüğü:
- 'zh': Çince
- 'ja': Japonca
- 'en': İngilizce
- 'ko': Korece
- 'yue': Kantonca
Örnek:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.İnce Ayar ve Çıkarım
WebUI'yi Açın
Entegre Paket Kullanıcıları
go-webui.bat dosyasına çift tıklayın veya go-webui.ps1 kullanın.
V1'e geçmek istiyorsanız, go-webui-v1.bat dosyasına çift tıklayın veya go-webui-v1.ps1 kullanın.
Diğerleri
python webui.py <dil(isteğe bağlı)>V1'e geçmek istiyorsanız,
python webui.py v1 <dil(isteğe bağlı)>veya WebUI'de manuel olarak sürüm değiştirin.
İnce Ayar
Yol Otomatik Doldurma artık destekleniyor
- Ses yolunu doldurun
- Sesi küçük parçalara ayırın
- Gürültü azaltma (isteğe bağlı)
- ASR
- ASR transkripsiyonlarını düzeltin
- Bir sonraki sekmeye geçin ve modeli ince ayar yapın
Çıkarım WebUI'sini Açın
Entegre Paket Kullanıcıları
go-webui-v2.bat dosyasına çift tıklayın veya go-webui-v2.ps1 kullanın, ardından çıkarım webui'sini 1-GPT-SoVITS-TTS/1C-inference adresinde açın.
Diğerleri
python GPT_SoVITS/inference_webui.py <dil(isteğe bağlı)>VEYA
python webui.pyardından çıkarım webui'sini 1-GPT-SoVITS-TTS/1C-inference adresinde açın.
V2 Sürüm Notları
Yeni Özellikler:
Korece ve Kantonca destekler
Optimize edilmiş metin ön yüzü
Önceden eğitilmiş model 2k saatten 5k saate kadar genişletildi
Düşük kaliteli referans sesler için geliştirilmiş sentez kalitesi
V1 ortamından V2'yi kullanmak için:
pip install -r requirements.txtile bazı paketleri güncelleyingithub'dan en son kodları klonlayın.
huggingface adresinden v2 önceden eğitilmiş modelleri indirin ve bunları
GPT_SoVITS/pretrained_models/gsv-v2final-pretraineddizinine yerleştirin.Ek olarak Çince V2: G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) (G2PW modellerini indirip, zipten çıkarıp,
G2PWModelolarak yeniden adlandırıpGPT_SoVITS/textdizinine yerleştirin.)
V3 Sürüm Notları
Yeni Özellikler:
Tını benzerliği daha yüksek olup, hedef konuşmacıyı yakınsamak için daha az eğitim verisi gerekmektedir (tını benzerliği, base model doğrudan kullanılacak şekilde fine-tuning yapılmadan önemli ölçüde iyileştirilmiştir).
GPT modeli daha kararlı hale geldi, tekrarlar ve atlamalar azaldı ve daha zengin duygusal ifadeler ile konuşma üretmek daha kolay hale geldi.
V2 ortamında V3 kullanımı:
pip install -r requirements.txtile bazı paketleri güncelleyin.GitHub'dan en son kodları klonlayın.
huggingface üzerinden v3 önceden eğitilmiş modellerini (s1v3.ckpt, s2Gv3.pth ve models--nvidia--bigvgan_v2_24khz_100band_256x klasörünü) indirin ve
GPT_SoVITS/pretrained_modelsdizinine yerleştirin.ek: Ses Süper Çözünürlük modeli için nasıl indirileceği hakkında bilgi alabilirsiniz.
V4 Sürüm Notları
Yeni Özellikler:
- V4, V3'te görülen non-integer upsample işleminden kaynaklanan metalik ses sorununu düzeltti ve sesin boğuklaşmasını önlemek için doğrudan 48kHz ses çıktısı sunar (V3 sadece 24kHz destekler). Yazar, V4'ün V3'ün yerine geçebileceğini belirtmiştir ancak daha fazla test yapılması gerekmektedir.
Daha fazla bilgi
V1/V2/V3 ortamından V4'e geçiş:
Bazı bağımlılıkları güncellemek için
pip install -r requirements.txtkomutunu çalıştırın.GitHub'dan en son kodları klonlayın.
huggingface üzerinden V4 ön eğitilmiş modelleri indirin (
gsv-v4-pretrained/s2v4.ckptvegsv-v4-pretrained/vocoder.pth) ve bunlarıGPT_SoVITS/pretrained_modelsdizinine koyun.
V2Pro Sürüm Notları
Yeni Özellikler:
V2 ile karşılaştırıldığında biraz daha yüksek VRAM kullanımı sağlar ancak V4'ten daha iyi performans gösterir; aynı donanım maliyeti ve hız avantajını korur.
Daha fazla bilgiV1/V2 ve V2Pro serisi benzer özelliklere sahipken, V3/V4 de yakın işlevleri paylaşır. Ortalama kalite düşük olan eğitim setleriyle V1/V2/V2Pro iyi sonuçlar verebilir ama V3/V4 veremez. Ayrıca, V3/V4’ün ürettiği ses tonu genel eğitim setine değil, referans ses örneğine daha çok benzemektedir.
V1/V2/V3/V4 ortamından V2Pro'ya geçiş:
Bazı bağımlılıkları güncellemek için
pip install -r requirements.txtkomutunu çalıştırın.GitHub'dan en son kodları klonlayın.
huggingface üzerinden V2Pro ön eğitilmiş modelleri indirin (
v2Pro/s2Dv2Pro.pth,v2Pro/s2Gv2Pro.pth,v2Pro/s2Dv2ProPlus.pth,v2Pro/s2Gv2ProPlus.pth, vesv/pretrained_eres2netv2w24s4ep4.ckpt) ve bunlarıGPT_SoVITS/pretrained_modelsdizinine koyun.
V5 Sürüm Notları
Yeni Özellikler:
SoVITS ince ayar eğitimi olmadan ses benzerliği önemli ölçüde iyileştirildi.
Yeni vocoder, yüksek frekanslı spektral aynalama ve aliasing artefaktlarını önemli ölçüde azaltır.
cuda_graphveflash_attentionile çıkarım hızlandırma desteği eklendi. Katkısı için @XXXXRT666'ya teşekkür ederiz.
V2Pro'dan V5'e geçiş:
GitHub üzerinden en son kodları klonlayın.
V5 ön eğitilmiş modellerini Hugging Face üzerinden indirin ve
gsv-v5-pretrainedalt dizin yapısını koruyarakGPT_SoVITS/pretrained_modelsdizinine koyun. Model diziniGPT_SoVITS/pretrained_models/gsv-v5-pretrainedolmalıdır.
Yapılacaklar Listesi
Yüksek Öncelikli:
- Japonca ve İngilizceye yerelleştirme.
- Kullanıcı kılavuzu.
- Japonca ve İngilizce veri seti ince ayar eğitimi.
Özellikler:
- Sıfır örnekli ses dönüştürme (5s) / birkaç örnekli ses dönüştürme (1dk).
- Metinden konuşmaya konuşma hızı kontrolü.
-
Gelişmiş metinden konuşmaya duygu kontrolü. - SoVITS token girdilerini kelime dağarcığı olasılık dağılımına değiştirme denemesi.
- İngilizce ve Japonca metin ön ucunu iyileştirme.
- Küçük ve büyük boyutlu metinden konuşmaya modelleri geliştirme.
- Colab betikleri.
- Eğitim veri setini genişletmeyi dene (2k saat -> 10k saat).
- daha iyi sovits temel modeli (geliştirilmiş ses kalitesi)
- model karışımı
(Ekstra) Komut satırından çalıştırma yöntemi
UVR5 için Web Arayüzünü açmak için komut satırını kullanın
python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>Veri setinin ses segmentasyonu komut satırı kullanılarak bu şekilde yapılır
python audio_slicer.py \
--input_path "<orijinal_ses_dosyası_veya_dizininin_yolu>" \
--output_root "<alt_bölümlere_ayrılmış_ses_kliplerinin_kaydedileceği_dizin>" \
--threshold <ses_eşiği> \
--min_length <her_bir_alt_klibin_minimum_süresi> \
--min_interval <bitişik_alt_klipler_arasındaki_en_kısa_zaman_aralığı>
--hop_size <ses_eğrisini_hesaplamak_için_adım_boyutu>Veri seti ASR işleme komut satırı kullanılarak bu şekilde yapılır (Yalnızca Çince)
python tools/asr/funasr_asr.py -i <girdi> -o <çıktı>ASR işleme Faster_Whisper aracılığıyla gerçekleştirilir (Çince dışındaki ASR işaretleme)
(İlerleme çubukları yok, GPU performansı zaman gecikmelerine neden olabilir)
python ./tools/asr/fasterwhisper_asr.py -i <girdi> -o <çıktı> -l <dil>Özel bir liste kaydetme yolu etkinleştirildi
Katkı Verenler
Özellikle aşağıdaki projelere ve katkıda bulunanlara teşekkür ederiz:
Teorik Araştırma
Önceden Eğitilmiş Modeller
Tahmin İçin Metin Ön Ucu
WebUI Araçları
@Naozumi520'ye Kantonca eğitim setini sağladığı ve Kantonca ile ilgili bilgiler konusunda rehberlik ettiği için minnettarım.
Tüm katkıda bulunanlara çabaları için teşekkürler
File: docs/ko/README.md
기능:
제로샷 텍스트 음성 변환 (TTS): 5초의 음성 샘플을 입력하면 즉시 텍스트를 음성으로 변환할 수 있습니다.
소량의 데이터 TTS: 1분의 훈련 데이터만으로 모델을 미세 조정하여 음성 유사도와 실제감을 향상시킬 수 있습니다.
다국어 지원: 훈련 데이터셋과 다른 언어의 추론을 지원하며, 현재 영어, 일본어, 중국어, 광둥어, 한국어를 지원합니다.
WebUI 도구: 음성 반주 분리, 자동 훈련 데이터셋 분할, 중국어 자동 음성 인식(ASR) 및 텍스트 주석 등의 도구를 통합하여 초보자가 훈련 데이터셋과 GPT/SoVITS 모델을 생성하는 데 도움을 줍니다.
데모 비디오를 확인하세요! demo video
보지 못한 발화자의 퓨샷(few-shot) 파인튜닝 데모:
https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb
SeedTTS Eval Testset_CN2020의 제로샷 TTS 음색 유사도 비교 그래프
설치
테스트 통과 환경
| Python Version | PyTorch Version | Device |
|---|---|---|
| Python 3.10 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.7.0 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.8.0dev | CUDA 12.8 |
| Python 3.12 | PyTorch 2.7.1 | CUDA 11.8 |
| Python 3.12 | PyTorch 2.7.1 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.5.1 | Apple silicon |
| Python 3.11 | PyTorch 2.7.0 | Apple silicon |
| Python 3.9 | PyTorch 2.2.2 | CPU |
Windows
Windows 사용자라면 (win>=10에서 테스트됨), 통합 패키지를 다운로드한 후 압축을 풀고 go-webui.bat 파일을 더블 클릭하면 GPT-SoVITS-WebUI를 시작할 수 있습니다.
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pwsh -F install.ps1 --Device <CU126|CU128|CPU> --Source <HF|HF-Mirror|ModelScope> [--DownloadUVR5]Linux
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <CU126|CU128|ROCM|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]macOS
주의: Mac에서 GPU로 훈련된 모델은 다른 OS에서 훈련된 모델에 비해 품질이 낮습니다. 해당 문제를 해결하기 전까지 MacOS에선 CPU를 사용하여 훈련을 진행합니다.
다음 명령어를 실행하여 이 프로젝트를 설치하세요
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <MPS|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]수동 설치
의존성 설치
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pip install -r extra-req.txt --no-deps
pip install -r requirements.txtFFmpeg 설치
Conda 사용자
conda activate GPTSoVits
conda install ffmpegUbuntu/Debian 사용자
sudo apt install ffmpeg
sudo apt install libsox-devWindows 사용자
ffmpeg.exe와 ffprobe.exe를 GPT-SoVITS root 디렉토리에 넣습니다
MacOS 사용자
brew install ffmpegGPT-SoVITS 실행하기 (Docker 사용)
Docker 이미지 선택
코드베이스가 빠르게 업데이트되는 반면 Docker 이미지 릴리스 주기는 느리기 때문에 다음을 참고하세요:
- Docker Hub에서 최신 이미지 태그를 확인하세요
- 환경에 맞는 적절한 이미지 태그를 선택하세요
Lite는 Docker 이미지에 ASR 모델과 UVR5 모델이 포함되어 있지 않음을 의미합니다. UVR5 모델은 사용자가 직접 다운로드해야 하며, ASR 모델은 필요 시 프로그램이 자동으로 다운로드합니다- Docker Compose 실행 시, 해당 아키텍처에 맞는 이미지(amd64 또는 arm64)가 자동으로 다운로드됩니다
- Docker Compose는 현재 디렉터리의 모든 파일을 마운트합니다. Docker 이미지를 사용하기 전에 프로젝트 루트 디렉터리로 이동하여 코드를 최신 상태로 업데이트하세요
- 선택 사항: 최신 변경사항을 반영하려면 제공된 Dockerfile을 사용하여 로컬에서 직접 이미지를 빌드할 수 있습니다
환경 변수
is_half: 반정밀도(fp16) 사용 여부를 제어합니다. GPU가 지원하는 경우true로 설정하면 메모리 사용량을 줄일 수 있습니다
공유 메모리 설정
Windows(Docker Desktop)에서는 기본 공유 메모리 크기가 작아 예기치 않은 동작이 발생할 수 있습니다. 시스템 메모리 상황에 따라 Docker Compose 파일에서 shm_size를 (예: 16g)로 증가시키는 것이 좋습니다
서비스 선택
docker-compose.yaml 파일에는 두 가지 서비스 유형이 정의되어 있습니다:
GPT-SoVITS-CU126및GPT-SoVITS-CU128: 전체 기능을 포함한 풀 버전GPT-SoVITS-CU126-Lite및GPT-SoVITS-CU128-Lite: 의존성이 줄어든 경량 버전
특정 서비스를 Docker Compose로 실행하려면 다음 명령을 사용하세요:
docker compose run --service-ports <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128>Docker 이미지 직접 빌드하기
직접 이미지를 빌드하려면 다음 명령어를 사용하세요:
bash docker_build.sh --cuda <12.6|12.8> [--lite]실행 중인 컨테이너 접속하기 (Bash Shell)
컨테이너가 백그라운드에서 실행 중일 때 다음 명령어로 셸에 접속할 수 있습니다:
docker exec -it <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128> bash사전 학습된 모델
install.sh가 성공적으로 실행되면 No.1,2,3 은 건너뛰어도 됩니다.
GPT-SoVITS Models 에서 사전 학습된 모델을 다운로드하고,
GPT_SoVITS/pretrained_models디렉토리에 배치하세요.G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) 에서 모델을 다운로드하고 압축을 풀어
G2PWModel로 이름을 변경한 후,GPT_SoVITS/text디렉토리에 배치하세요. (중국어 TTS 전용)UVR5 (보컬/반주 분리 & 잔향 제거 추가 기능)의 경우, UVR5 Weights 에서 모델을 다운로드하고
tools/uvr5/uvr5_weights디렉토리에 배치하세요.UVR5에서 bs_roformer 또는 mel_band_roformer 모델을 사용할 경우, 모델과 해당 설정 파일을 수동으로 다운로드하여
tools/UVR5/UVR5_weights폴더에 저장할 수 있습니다. 모델 파일과 설정 파일의 이름은 확장자를 제외하고 동일한 이름을 가지도록 해야 합니다. 또한, 모델과 설정 파일 이름에는 **"roformer"**가 포함되어야 roformer 클래스의 모델로 인식됩니다.모델 이름과 설정 파일 이름에 모델 유형을 직접 지정하는 것이 좋습니다. 예: mel_mand_roformer, bs_roformer. 지정하지 않으면 설정 파일을 기준으로 특성을 비교하여 어떤 유형의 모델인지를 판단합니다. 예를 들어, 모델
bs_roformer_ep_368_sdr_12.9628.ckpt와 해당 설정 파일bs_roformer_ep_368_sdr_12.9628.yaml은 한 쌍입니다.kim_mel_band_roformer.ckpt와kim_mel_band_roformer.yaml도 한 쌍입니다.
중국어 ASR (추가 기능)의 경우, Damo ASR Model, Damo VAD Model 및 Damo Punc Model 에서 모델을 다운로드하고,
tools/asr/models디렉토리에 배치하세요.영어 또는 일본어 ASR (추가 기능)의 경우, Faster Whisper Large V3 에서 모델을 다운로드하고,
tools/asr/models디렉토리에 배치하세요. 또한, 다른 모델 은 더 적은 디스크 용량으로 비슷한 효과를 가질 수 있습니다.
데이터셋 형식
텍스트 음성 합성(TTS) 주석 .list 파일 형식:
vocal_path|speaker_name|language|text언어 사전:
- 'zh': 중국어
- 'ja': 일본어
- 'en': 영어
예시:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.미세 조정 및 추론
WebUI 열기
통합 패키지 사용자
go-webui.bat을 더블 클릭하거나 go-webui.ps1를 사용하십시오.
V1으로 전환하려면, go-webui-v1.bat을 더블 클릭하거나 go-webui-v1.ps1를 사용하십시오.
기타
python webui.py <언어(옵션)>V1으로 전환하려면,
python webui.py v1 <언어(옵션)>또는 WebUI에서 수동으로 버전을 전환하십시오.
미세 조정
경로 자동 채우기가 지원됩니다
- 오디오 경로를 입력하십시오.
- 오디오를 작은 청크로 분할하십시오.
- 노이즈 제거(옵션)
- ASR 수행
- ASR 전사를 교정하십시오.
- 다음 탭으로 이동하여 모델을 미세 조정하십시오.
추론 WebUI 열기
통합 패키지 사용자
go-webui-v2.bat을 더블 클릭하거나 go-webui-v2.ps1를 사용한 다음 1-GPT-SoVITS-TTS/1C-inference에서 추론 webui를 엽니다.
기타
python GPT_SoVITS/inference_webui.py <언어(옵션)>또는
python webui.py그런 다음 1-GPT-SoVITS-TTS/1C-inference에서 추론 webui를 엽니다.
V2 릴리스 노트
새로운 기능:
한국어 및 광둥어 지원
최적화된 텍스트 프론트엔드
사전 학습 모델이 2천 시간에서 5천 시간으로 확장
저품질 참조 오디오에 대한 합성 품질 향상
V1 환경에서 V2를 사용하려면:
pip install -r requirements.txt를 사용하여 일부 패키지 업데이트github에서 최신 코드를 클론하십시오.
huggingface에서 V2 사전 학습 모델을 다운로드하여
GPT_SoVITS/pretrained_models/gsv-v2final-pretrained에 넣으십시오.중국어 V2 추가: G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) (G2PW 모델을 다운로드하여 압축을 풀고
G2PWModel로 이름을 변경한 다음GPT_SoVITS/text에 배치합니다.)
V3 릴리스 노트
새로운 기능:
음색 유사성이 더 높아져 목표 음성에 대한 학습 데이터가 적게 필요합니다. (기본 모델을 직접 사용하여 미세 조정 없이 음색 유사성이 크게 향상됩니다.)
GPT 모델이 더 안정적이며 반복 및 생략이 적고, 더 풍부한 감정 표현을 가진 음성을 생성하기가 더 쉽습니다.
v2 환경에서 v3 사용하기:
pip install -r requirements.txt로 일부 패키지를 업데이트합니다.최신 코드를 github 에서 클론합니다.
v3 사전 훈련된 모델(s1v3.ckpt, s2Gv3.pth, 그리고 models--nvidia--bigvgan_v2_24khz_100band_256x 폴더)을 huggingface에서 다운로드하여
GPT_SoVITS/pretrained_models폴더에 넣습니다.추가: 오디오 슈퍼 해상도 모델에 대해서는 다운로드 방법을 참고하세요.
V4 릴리스 노트
신규 기능:
- V4는 V3에서 발생하는 비정수 배율 업샘플링으로 인한 금속성 잡음 문제를 수정했으며, 소리가 먹먹해지는 것을 방지하기 위해 기본적으로 48kHz 오디오를 출력합니다 (V3는 기본적으로 24kHz만 지원). 개발자는 V4를 V3의 직접적인 대체 버전으로 보고 있지만 추가 테스트가 필요합니다.
자세히 보기
V1/V2/V3 환경에서 V4로 전환 방법:
일부 의존 패키지를 업데이트하기 위해
pip install -r requirements.txt명령어를 실행하세요.GitHub에서 최신 코드를 클론하세요.
huggingface에서 V4 사전 학습 모델(
gsv-v4-pretrained/s2v4.ckpt및gsv-v4-pretrained/vocoder.pth)을 다운로드하고GPT_SoVITS/pretrained_models디렉토리에 넣으세요.
V2Pro 릴리스 노트
신규 기능:
V2보다 약간 높은 VRAM 사용량이지만 성능은 V4보다 우수하며, V2 수준의 하드웨어 비용과 속도를 유지합니다.
자세히 보기V1/V2와 V2Pro 시리즈는 유사한 특징을 가지며, V3/V4도 비슷한 기능을 가지고 있습니다. 평균 음질이 낮은 학습 데이터셋에서는 V1/V2/V2Pro가 좋은 결과를 내지만 V3/V4는 그렇지 못합니다. 또한 V3/V4의 합성 음색은 전체 학습 데이터셋보다는 참고 음성에 더 가깝습니다.
V1/V2/V3/V4 환경에서 V2Pro로 전환 방법:
일부 의존 패키지를 업데이트하기 위해
pip install -r requirements.txt명령어를 실행하세요.GitHub에서 최신 코드를 클론하세요.
huggingface에서 V2Pro 사전 학습 모델(
v2Pro/s2Dv2Pro.pth,v2Pro/s2Gv2Pro.pth,v2Pro/s2Dv2ProPlus.pth,v2Pro/s2Gv2ProPlus.pth, 및sv/pretrained_eres2netv2w24s4ep4.ckpt)을 다운로드하고GPT_SoVITS/pretrained_models디렉토리에 넣으세요.
V5 릴리스 노트
신규 기능:
SoVITS 미세 조정 없이도 음색 유사도가 크게 향상됩니다.
새로운 vocoder로 고주파 스펙트럼 미러링 및 앨리어싱 아티팩트를 크게 줄입니다.
cuda_graph와flash_attention을 통한 추론 가속을 지원합니다. 기여해 주신 @XXXXRT666님께 감사드립니다.
V2Pro에서 V5로 업데이트하는 방법:
GitHub에서 최신 코드를 클론하세요.
Hugging Face에서 V5 사전 학습 모델을 다운로드하고
gsv-v5-pretrained하위 디렉토리 구조를 유지한 채GPT_SoVITS/pretrained_models에 넣으세요. 모델 디렉토리는GPT_SoVITS/pretrained_models/gsv-v5-pretrained입니다.
할 일 목록
최우선순위:
- 일본어 및 영어 지역화.
- 사용자 가이드.
- 일본어 및 영어 데이터셋 미세 조정 훈련.
기능:
- 제로샷 음성 변환 (5초) / 소량의 음성 변환 (1분).
- TTS 속도 제어.
-
향상된 TTS 감정 제어. - SoVITS 토큰 입력을 단어 확률 분포로 변경해 보세요.
- 영어 및 일본어 텍스트 프론트 엔드 개선.
- 작은 크기와 큰 크기의 TTS 모델 개발.
- Colab 스크립트.
- 훈련 데이터셋 확장 (2k 시간에서 10k 시간).
- 더 나은 sovits 기본 모델 (향상된 오디오 품질).
- 모델 블렌딩.
(추가적인) 명령줄에서 실행하는 방법
명령줄을 사용하여 UVR5용 WebUI 열기
python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>명령줄을 사용하여 데이터세트의 오디오 분할을 수행하는 방법은 다음과 같습니다.
python audio_slicer.py \
--input_path "<path_to_original_audio_file_or_directory>" \
--output_root "<directory_where_subdivided_audio_clips_will_be_saved>" \
--threshold <volume_threshold> \
--min_length <minimum_duration_of_each_subclip> \
--min_interval <shortest_time_gap_between_adjacent_subclips>
--hop_size <step_size_for_computing_volume_curve>명령줄을 사용하여 데이터 세트 ASR 처리를 수행하는 방법입니다(중국어만 해당).
python tools/asr/funasr_asr.py -i <input> -o <output>ASR 처리는 Faster_Whisper(중국어를 제외한 ASR 마킹)를 통해 수행됩니다.
(진행률 표시줄 없음, GPU 성능으로 인해 시간 지연이 발생할 수 있음)
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>사용자 정의 목록 저장 경로가 활성화되었습니다.
감사의 말
다음 프로젝트와 기여자들에게 특별히 감사드립니다:
이론 연구
사전 학습 모델
추론용 텍스트 프론트엔드
WebUI 도구
@Naozumi520 님께 감사드립니다. 광둥어 학습 자료를 제공해 주시고, 광둥어 관련 지식을 지도해 주셔서 감사합니다.
모든 기여자들에게 감사드립니다 ;)
File: docs/ja/README.md
機能:
Zero-Shot TTS: たった 5 秒間の音声サンプルで、即座にテキストからその音声に変換できます.
Few-Shot TTS: わずか 1 分間のトレーニングデータでモデルを微調整し、音声のクオリティを向上.
多言語サポート: 現在、英語、日本語、韓国語、広東語、中国語をサポートしています.
WebUI ツール: 統合されたツールは、音声と伴奏 (BGM 等) の分離、トレーニングセットの自動セグメンテーション、ASR (中国語のみ)、テキストラベリング等を含むため、初心者の方でもトレーニングデータセットの作成や GPT/SoVITS モデルのトレーニング等を非常に簡単に行えます.
デモ動画をチェック!
声の事前学習無しかつ Few-Shot でトレーニングされたモデルのデモ:
https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb
SeedTTS Eval Testset_CN2020 におけるゼロショット TTS の声質類似度比較図
インストール
テスト済みの環境
| Python Version | PyTorch Version | Device |
|---|---|---|
| Python 3.10 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.7.0 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.8.0dev | CUDA 12.8 |
| Python 3.12 | PyTorch 2.7.1 | CUDA 11.8 |
| Python 3.12 | PyTorch 2.7.1 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.5.1 | Apple silicon |
| Python 3.11 | PyTorch 2.7.0 | Apple silicon |
| Python 3.9 | PyTorch 2.2.2 | CPU |
Windows
Windows ユーザー: (Windows 10 以降でテスト済み)、統合パッケージをダウンロードし、解凍後に go-webui.bat をダブルクリックすると、GPT-SoVITS-WebUI が起動します.
Linux
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <CU126|CU128|ROCM|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]macOS
注: Mac で GPU を使用して訓練されたモデルは、他のデバイスで訓練されたモデルと比較して著しく品質が低下するため、当面は CPU を使用して訓練することを強く推奨します.
以下のコマンドを実行してこのプロジェクトをインストールします:
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <MPS|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]手動インストール
依存関係をインストールします
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pip install -r extra-req.txt --no-deps
pip install -r requirements.txtFFmpeg をインストールします
Conda ユーザー
conda activate GPTSoVits
conda install ffmpegUbuntu/Debian ユーザー
sudo apt install ffmpeg
sudo apt install libsox-devWindows ユーザー
ffmpeg.exe と ffprobe.exe をダウンロードし、GPT-SoVITS のルートフォルダに置きます
Visual Studio 2017 環境をインストールしてください
MacOS ユーザー
brew install ffmpegGPT-SoVITS の実行 (Docker 使用)
Docker イメージの選択
コードベースの更新が頻繁である一方、Docker イメージのリリースは比較的遅いため、以下を確認してください:
- Docker Hub で最新のイメージタグを確認してください
- 環境に合った適切なイメージタグを選択してください
Liteとは、Docker イメージに ASR モデルおよび UVR5 モデルが含まれていないことを意味します. UVR5 モデルは手動でダウンロードし、ASR モデルは必要に応じてプログラムが自動的にダウンロードします- Docker Compose 実行時に、対応するアーキテクチャ (amd64 または arm64) のイメージが自動的に取得されます
- Docker Compose は現在のディレクトリ内のすべてのファイルをマウントします. Docker イメージを使用する前に、プロジェクトのルートディレクトリに移動し、コードを最新の状態に更新してください
- オプション:最新の変更を反映させるため、提供されている Dockerfile を使ってローカルでイメージをビルドすることも可能です
環境変数
is_half:半精度 (fp16) を使用するかどうかを制御します. GPU が対応している場合、trueに設定することでメモリ使用量を削減できます
共有メモリの設定
Windows (Docker Desktop) では、デフォルトの共有メモリサイズが小さいため、予期しない動作が発生する可能性があります. Docker Compose ファイル内の shm_size を (例:16g) に増やすことをおすすめします
サービスの選択
docker-compose.yaml ファイルには次の 2 種類のサービスが定義されています:
GPT-SoVITS-CU126およびGPT-SoVITS-CU128:すべての機能を含むフルバージョンGPT-SoVITS-CU126-LiteおよびGPT-SoVITS-CU128-Lite:依存関係を削減した軽量バージョン
特定のサービスを Docker Compose で実行するには、以下のコマンドを使用します:
docker compose run --service-ports <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128>Docker イメージのローカルビルド
自分でイメージをビルドするには、以下のコマンドを使ってください:
bash docker_build.sh --cuda <12.6|12.8> [--lite]実行中のコンテナへアクセス (Bash Shell)
コンテナがバックグラウンドで実行されている場合、以下のコマンドでシェルにアクセスできます:
docker exec -it <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128> bash事前訓練済みモデル
install.shが正常に実行された場合、No.1,2,3 はスキップしてかまいません.
GPT-SoVITS Models から事前訓練済みモデルをダウンロードし、
GPT_SoVITS/pretrained_modelsディレクトリに配置してください.G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) からモデルをダウンロードし、解凍して
G2PWModelにリネームし、GPT_SoVITS/textディレクトリに配置してください. (中国語 TTS のみ)UVR5 (ボーカル/伴奏 (BGM 等) 分離 & リバーブ除去の追加機能) の場合は、UVR5 Weights からモデルをダウンロードし、
tools/uvr5/uvr5_weightsディレクトリに配置してください.UVR5 で bs_roformer または mel_band_roformer モデルを使用する場合、モデルと対応する設定ファイルを手動でダウンロードし、
tools/UVR5/UVR5_weightsフォルダに配置することができます.モデルファイルと設定ファイルの名前は、拡張子を除いて同じであることを確認してください.さらに、モデルと設定ファイルの名前には**「roformer」が含まれている必要があります**.これにより、roformer クラスのモデルとして認識されます.モデル名と設定ファイル名には、直接モデルタイプを指定することをお勧めします.例: mel_mand_roformer、bs_roformer.指定しない場合、設定文から特徴を照合して、モデルの種類を特定します.例えば、モデル
bs_roformer_ep_368_sdr_12.9628.ckptと対応する設定ファイルbs_roformer_ep_368_sdr_12.9628.yamlはペアです.同様に、kim_mel_band_roformer.ckptとkim_mel_band_roformer.yamlもペアです.
中国語 ASR (追加機能) の場合は、Damo ASR Model、Damo VAD Model、および Damo Punc Model からモデルをダウンロードし、
tools/asr/modelsディレクトリに配置してください.英語または日本語の ASR (追加機能) を使用する場合は、Faster Whisper Large V3 からモデルをダウンロードし、
tools/asr/modelsディレクトリに配置してください.また、他のモデル は、より小さいサイズで高クオリティな可能性があります.
データセット形式
TTS アノテーション .list ファイル形式:
vocal_path|speaker_name|language|text言語辞書:
- 'zh': 中国語
- 'ja': 日本語
- 'en': 英語
例:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.微調整と推論
WebUI を開く
統合パッケージ利用者
go-webui.batをダブルクリックするか、go-webui.ps1を使用します.
V1 に切り替えたい場合は、go-webui-v1.batをダブルクリックするか、go-webui-v1.ps1を使用してください.
その他
python webui.py <言語(オプション)>V1 に切り替えたい場合は
python webui.py v1 <言語(オプション)>または WebUI で手動でバージョンを切り替えてください.
微調整
パス自動補完のサポート
- 音声パスを入力する
- 音声を小さなチャンクに分割する
- ノイズ除去 (オプション)
- ASR
- ASR 転写を校正する
- 次のタブに移動し、モデルを微調整する
推論 WebUI を開く
統合パッケージ利用者
go-webui-v2.batをダブルクリックするか、go-webui-v2.ps1を使用して、1-GPT-SoVITS-TTS/1C-inferenceで推論 webui を開きます.
その他
python GPT_SoVITS/inference_webui.py <言語(オプション)>または
python webui.pyその後、1-GPT-SoVITS-TTS/1C-inferenceで推論 webui を開きます.
V2 リリースノート
新機能:
韓国語と広東語をサポート
最適化されたテキストフロントエンド
事前学習済みモデルが 2 千時間から 5 千時間に拡張
低品質の参照音声に対する合成品質の向上
V1 環境から V2 を使用するには:
pip install -r requirements.txtを使用していくつかのパッケージを更新最新のコードを github からクローン
huggingfaceから V2 の事前学習モデルをダウンロードし、それらを
GPT_SoVITS/pretrained_models/gsv-v2final-pretrainedに配置中国語 V2 追加: G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) (G2PW モデルをダウンロードし、解凍して
G2PWModelにリネームし、GPT_SoVITS/textに配置します)
V3 リリースノート
新機能:
音色の類似性が向上し、ターゲットスピーカーを近似するために必要な学習データが少なくなりました (音色の類似性は、ファインチューニングなしでベースモデルを直接使用することで顕著に改善されます).
GPT モデルがより安定し、繰り返しや省略が減少し、より豊かな感情表現を持つ音声の生成が容易になりました.
v2 環境から v3 を使用する方法:
pip install -r requirements.txtを実行して、いくつかのパッケージを更新します.GitHub から最新のコードをクローンします.
v3 の事前学習済みモデル (s1v3.ckpt、s2Gv3.pth、models--nvidia--bigvgan_v2_24khz_100band_256x フォルダ) をHuggingface からダウンロードし、GPT_SoVITS/pretrained_models フォルダに配置します.
追加: 音声超解像モデルについては、ダウンロード方法を参照してください.
V4 リリースノート
新機能:
- V4 は、V3 で発生していた非整数倍アップサンプリングによる金属音の問題を修正し、音声がこもる問題を防ぐためにネイティブに 48kHz 音声を出力します(V3 はネイティブに 24kHz 音声のみ出力). 作者は V4 を V3 の直接的な置き換えとして推奨していますが、さらなるテストが必要です.
詳細はこちら
V1/V2/V3 環境から V4 への移行方法:
pip install -r requirements.txtを実行して一部の依存パッケージを更新してください.GitHub から最新のコードをクローンします.
huggingface から V4 の事前学習済みモデル (
gsv-v4-pretrained/s2v4.ckptおよびgsv-v4-pretrained/vocoder.pth) をダウンロードし、GPT_SoVITS/pretrained_modelsディレクトリへ配置してください.
V2Pro リリースノート
新機能:
**V2 と比較してやや高いメモリ使用量ですが、ハードウェアコストと推論速度は維持しつつ、V4 よりも高い性能と音質を実現します. **
詳細はこちらV1/V2 と V2Pro シリーズは類似した特徴を持ち、V3/V4 も同様の機能を持っています. 平均音質が低いトレーニングセットの場合、V1/V2/V2Pro は良好な結果を出すことができますが、V3/V4 では対応できません. また、V3/V4 の合成音声はトレーニング全体ではなく、より参考音声に寄った音質になります.
V1/V2/V3/V4 環境から V2Pro への移行方法:
pip install -r requirements.txtを実行して一部の依存パッケージを更新してください.GitHub から最新のコードをクローンします.
huggingface から V2Pro の事前学習済みモデル (
v2Pro/s2Dv2Pro.pth,v2Pro/s2Gv2Pro.pth,v2Pro/s2Dv2ProPlus.pth,v2Pro/s2Gv2ProPlus.pth, およびsv/pretrained_eres2netv2w24s4ep4.ckpt) をダウンロードし、GPT_SoVITS/pretrained_modelsディレクトリへ配置してください.
V5 リリースノート
新機能:
SoVITS のファインチューニングを行わなくても、声質の類似度が大幅に向上します.
新しい vocoder により、高周波のスペクトルミラーリングおよびエイリアシングのアーティファクトを大幅に低減します.
cuda_graphとflash_attentionによる推論の高速化をサポートします. @XXXXRT666 の貢献に感謝します.
V2Pro から V5 へのアップデート方法:
GitHub から最新のコードをクローンします.
Hugging Face から V5 の事前学習済みモデルをダウンロードし、
gsv-v5-pretrainedサブディレクトリを保持したままGPT_SoVITS/pretrained_modelsに配置してください. モデルの配置先はGPT_SoVITS/pretrained_models/gsv-v5-pretrainedです.
Todo リスト
優先度 高:
- 日本語と英語でのローカライズ.
- ユーザーガイド.
- 日本語データセットと英語データセットのファインチューニングトレーニング.
機能:
- ゼロショット音声変換 (5 秒) /数ショット音声変換 (1 分).
- TTS スピーキングスピードコントロール.
-
TTS の感情コントロールの強化. - SoVITS トークン入力を語彙の確率分布に変更する実験.
- 英語と日本語のテキストフロントエンドを改善.
- 小型と大型の TTS モデルを開発する.
- Colab のスクリプト.
- トレーニングデータセットを拡張する (2k→10k).
- より良い sovits ベースモデル (音質向上)
- モデルミックス
(追加の) コマンドラインから実行する方法
コマンド ラインを使用して UVR5 の WebUI を開きます
python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>コマンド ラインを使用してデータセットのオーディオ セグメンテーションを行う方法は次のとおりです.
python audio_slicer.py \
--input_path "<path_to_original_audio_file_or_directory>" \
--output_root "<directory_where_subdivided_audio_clips_will_be_saved>" \
--threshold <volume_threshold> \
--min_length <minimum_duration_of_each_subclip> \
--min_interval <shortest_time_gap_between_adjacent_subclips>
--hop_size <step_size_for_computing_volume_curve>コマンドラインを使用してデータセット ASR 処理を行う方法です (中国語のみ)
python tools/asr/funasr_asr.py -i <input> -o <output>ASR 処理は Faster_Whisper を通じて実行されます(中国語を除く ASR マーキング)
(進行状況バーは表示されません.GPU のパフォーマンスにより時間遅延が発生する可能性があります)
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>カスタムリストの保存パスが有効になっています
クレジット
特に以下のプロジェクトと貢献者に感謝します:
理論研究
事前学習モデル
推論用テキストフロントエンド
WebUI ツール
@Naozumi520 さん、広東語のトレーニングセットの提供と、広東語に関する知識のご指導をいただき、感謝申し上げます.
すべてのコントリビューターに感謝します
File: docs/cn/README.md
功能
零样本文本到语音 (TTS): 输入 5 秒的声音样本, 即刻体验文本到语音转换.
少样本 TTS: 仅需 1 分钟的训练数据即可微调模型, 提升声音相似度和真实感.
跨语言支持: 支持与训练数据集不同语言的推理, 目前支持英语、日语、韩语、粤语和中文.
WebUI 工具: 集成工具包括声音伴奏分离、自动训练集分割、使用 Fun-ASR-Nano、SenseVoice 和经典 FunASR 的多语种自动语音识别 (ASR), 以及文本标注, 协助初学者创建训练数据集和 GPT/SoVITS 模型.
查看我们的介绍视频 demo video
未见过的说话者 few-shot 微调演示:
https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb
SeedTTS Eval Testset_CN2020 零样本 TTS 音色相似度对比图
安装
中国地区的用户可点击此处使用 AutoDL 云端镜像进行体验.
测试通过的环境
| Python Version | PyTorch Version | Device |
|---|---|---|
| Python 3.10 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.7.0 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.8.0dev | CUDA 12.8 |
| Python 3.12 | PyTorch 2.7.1 | CUDA 11.8 |
| Python 3.12 | PyTorch 2.7.1 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.5.1 | Apple silicon |
| Python 3.11 | PyTorch 2.7.0 | Apple silicon |
| Python 3.9 | PyTorch 2.2.2 | CPU |
Windows
如果你是 Windows 用户 (已在 win>=10 上测试), 可以下载整合包, 解压后双击 go-webui.bat 即可启动 GPT-SoVITS-WebUI.
中国地区的用户可以在此处下载整合包.
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pwsh -F install.ps1 --Device <CU126|CU128|CPU> --Source <HF|HF-Mirror|ModelScope> [--DownloadUVR5]Linux
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <CU126|CU128|ROCM|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]macOS
注: 在 Mac 上使用 GPU 训练的模型效果显著低于其他设备训练的模型, 所以我们暂时使用 CPU 进行训练.
运行以下的命令来安装本项目:
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <MPS|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]手动安装
安装依赖
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pip install -r extra-req.txt --no-deps
pip install -r requirements.txt安装 FFmpeg
Conda 用户
conda activate GPTSoVits
conda install ffmpegUbuntu/Debian 用户
sudo apt install ffmpeg
sudo apt install libsox-devWindows 用户
下载并将 ffmpeg.exe 和 ffprobe.exe 放置在 GPT-SoVITS 根目录下
安装 Visual Studio 2017 环境
MacOS 用户
brew install ffmpeg运行 GPT-SoVITS (使用 Docker)
Docker 镜像选择
由于代码库更新频繁, 而 Docker 镜像的发布周期相对较慢, 请注意:
- 前往 Docker Hub 查看最新可用的镜像标签(tags)
- 根据你的运行环境选择合适的镜像标签
LiteDocker 镜像不包含 ASR 模型和 UVR5 模型. 你可以自行下载 UVR5 模型, ASR 模型则会在需要时由程序自动下载- 在使用 Docker Compose 时, 会自动拉取适配的架构镜像 (amd64 或 arm64)
- Docker Compose 将会挂载当前目录的所有文件, 请在使用 Docker 镜像前先切换到项目根目录并拉取代码更新
- 可选:为了获得最新的更改, 你可以使用提供的 Dockerfile 在本地构建镜像
环境变量
is_half:控制是否启用半精度(fp16). 如果你的 GPU 支持, 设置为true可以减少显存占用
共享内存配置
在 Windows (Docker Desktop) 中, 默认共享内存大小较小, 可能导致运行异常. 请在 Docker Compose 文件中根据系统内存情况, 增大 shm_size (例如设置为 16g)
选择服务
docker-compose.yaml 文件定义了两个主要服务类型:
GPT-SoVITS-CU126与GPT-SoVITS-CU128:完整版, 包含所有功能GPT-SoVITS-CU126-Lite与GPT-SoVITS-CU128-Lite:轻量版, 依赖更少, 功能略有删减
如需使用 Docker Compose 运行指定服务, 请执行:
docker compose run --service-ports <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128>本地构建 Docker 镜像
如果你希望自行构建镜像, 请使用以下命令:
bash docker_build.sh --cuda <12.6|12.8> [--lite]访问运行中的容器 (Bash Shell)
当容器在后台运行时, 你可以通过以下命令进入容器:
docker exec -it <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128> bash预训练模型
若成功运行install.sh可跳过 No.1,2,3
中国地区的用户可以在此处下载这些模型.
从 GPT-SoVITS Models 下载预训练模型, 并将其放置在
GPT_SoVITS/pretrained_models目录中.从 G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) 下载模型, 解压并重命名为
G2PWModel, 然后将其放置在GPT_SoVITS/text目录中. (仅限中文 TTS)对于 UVR5 (人声/伴奏分离和混响移除, 额外功能), 从 UVR5 Weights 下载模型, 并将其放置在
tools/uvr5/uvr5_weights目录中.如果你在 UVR5 中使用
bs_roformer或mel_band_roformer模型, 你可以手动下载模型和相应的配置文件, 并将它们放在tools/UVR5/UVR5_weights中.重命名模型文件和配置文件, 确保除后缀外, 模型和配置文件具有相同且对应的名称.此外, 模型和配置文件名必须包含"roformer", 才能被识别为 roformer 类的模型.建议在模型名称和配置文件名中直接指定模型类型, 例如
mel_mand_roformer、bs_roformer.如果未指定, 将从配置文中比对特征, 以确定它是哪种类型的模型.例如, 模型bs_roformer_ep_368_sdr_12.9628.ckpt和对应的配置文件bs_roformer_ep_368_sdr_12.9628.yaml是一对.kim_mel_band_roformer.ckpt和kim_mel_band_roformer.yaml也是一对.
FunASR 模型会在首次使用时自动下载. WebUI 提供适合多语种和方言识别的 Fun-ASR-Nano、适合快速转写的 SenseVoice, 以及通过 FunASR 使用的经典 Paraformer/UniASR 中文和粤语模型. 如需离线预置经典中文模型, 请将 ASR 模型、VAD 模型 和 标点模型 下载到
tools/asr/models.对于英语或日语 ASR (额外功能), 从 Faster Whisper Large V3 下载模型, 并将其放置在
tools/asr/models目录中.此外, 其他模型 可能具有类似效果且占用更少的磁盘空间.
数据集格式
文本到语音 (TTS) 注释 .list 文件格式:
vocal_path|speaker_name|language|text语言字典:
- 'zh': 中文
- 'ja': 日语
- 'en': 英语
- 'ko': 韩语
- 'yue': 粤语
示例:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|zh|我爱玩原神.微调与推理
打开 WebUI
整合包用户
双击go-webui.bat或者使用go-webui.ps1
若想使用 V1,则双击go-webui-v1.bat或者使用go-webui-v1.ps1
其他
python webui.py <language(optional)>若想使用 V1,则
python webui.py v1 <language(optional)>或者在 webUI 内动态切换
微调
现已支持自动填充路径
- 填入训练音频路径
- 切割音频
- 进行降噪(可选)
- 进行 ASR
- 校对标注
- 前往下一个窗口,点击训练
打开推理 WebUI
整合包用户
双击 go-webui.bat 或者使用 go-webui.ps1 ,然后在 1-GPT-SoVITS-TTS/1C-推理 中打开推理 webUI
其他
python GPT_SoVITS/inference_webui.py <language(optional)>或者
python webui.py然后在 1-GPT-SoVITS-TTS/1C-推理 中打开推理 webUI
V2 发布说明
新特性:
支持韩语及粤语
更好的文本前端
底模由 2k 小时扩展至 5k 小时
对低音质参考音频 (尤其是来源于网络的高频严重缺失、听着很闷的音频) 合成出来音质更好
详见wiki
从 v1 环境迁移至 v2
需要 pip 安装 requirements.txt 更新环境
需要克隆 github 上的最新代码
需要从huggingface 下载预训练模型文件放到 GPT_SoVITS/pretrained_models/gsv-v2final-pretrained 下
中文额外需要下载G2PWModel.zip(HF)| G2PWModel.zip(ModelScope) (下载 G2PW 模型,解压并重命名为
G2PWModel,将其放到GPT_SoVITS/text目录下)
V3 更新说明
新模型特点:
音色相似度更像, 需要更少训练集来逼近本人 (不训练直接使用底模模式下音色相似性提升更大)
GPT 合成更稳定, 重复漏字更少, 也更容易跑出丰富情感
详见wiki
从 v2 环境迁移至 v3
需要 pip 安装 requirements.txt 更新环境
需要克隆 github 上的最新代码
从huggingface下载这些 v3 新增预训练模型 (s1v3.ckpt, s2Gv3.pth and models--nvidia--bigvgan_v2_24khz_100band_256x folder)将他们放到
GPT_SoVITS/pretrained_models目录下如果想用音频超分功能缓解 v3 模型生成 24k 音频觉得闷的问题, 需要下载额外的模型参数, 参考how to download
V4 更新说明
新特性:
- V4 版本修复了 V3 版本中由于非整数倍上采样导致的金属音问题, 并原生输出 48kHz 音频以避免声音闷糊 (而 V3 版本仅原生输出 24kHz 音频). 作者认为 V4 是对 V3 的直接替代, 但仍需进一步测试.
更多详情
从 V1/V2/V3 环境迁移至 V4:
执行
pip install -r requirements.txt更新部分依赖包.从 GitHub 克隆最新代码.
从 huggingface 下载 V4 预训练模型 (
gsv-v4-pretrained/s2v4.ckpt和gsv-v4-pretrained/vocoder.pth), 并放入GPT_SoVITS/pretrained_models目录.
V2Pro 更新说明
新特性:
相比 V2 占用稍高显存, 性能超过 V4, 在保留 V2 硬件成本和推理速度优势的同时实现更高音质.
更多详情V1/V2 与 V2Pro 系列具有相同特性, V3/V4 则具备相近功能. 对于平均音频质量较低的训练集, V1/V2/V2Pro 可以取得较好的效果, 但 V3/V4 无法做到. 此外, V3/V4 合成的声音更偏向参考音频, 而不是整体训练集的风格.
从 V1/V2/V3/V4 环境迁移至 V2Pro:
执行
pip install -r requirements.txt更新部分依赖包.从 GitHub 克隆最新代码.
从 huggingface 下载 V2Pro 预训练模型 (
v2Pro/s2Dv2Pro.pth,v2Pro/s2Gv2Pro.pth,v2Pro/s2Dv2ProPlus.pth,v2Pro/s2Gv2ProPlus.pth, 和sv/pretrained_eres2netv2w24s4ep4.ckpt), 并放入GPT_SoVITS/pretrained_models目录.
V5 更新说明
新特性:
大幅提升无需 SoVITS 微调训练时的音色相似度.
更新新版 vocoder, 大幅降低高频镜像混叠伪影.
支持
cuda_graph和flash_attention推理加速, 感谢 @XXXXRT666 的贡献.
从 V2Pro 更新到 V5:
从 GitHub 克隆最新代码.
从 Hugging Face 下载 V5 预训练模型, 并放入
GPT_SoVITS/pretrained_models目录, 保留gsv-v5-pretrained子目录结构, 即模型目录为GPT_SoVITS/pretrained_models/gsv-v5-pretrained.
待办事项清单
高优先级:
- 日语和英语的本地化.
- 用户指南.
- 日语和英语数据集微调训练.
功能:
- 零样本声音转换 (5 秒) / 少样本声音转换 (1 分钟).
- TTS 语速控制.
-
增强的 TTS 情感控制. - 尝试将 SoVITS 令牌输入更改为词汇的概率分布.
- 改进英语和日语文本前端.
- 开发体积小和更大的 TTS 模型.
- Colab 脚本.
- 扩展训练数据集 (从 2k 小时到 10k 小时).
- 更好的 sovits 基础模型 (增强的音频质量).
- 模型混合.
(附加) 命令行运行方式
使用命令行打开 UVR5 的 WebUI
python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>这是使用命令行完成数据集的音频切分的方式
python audio_slicer.py \
--input_path "<path_to_original_audio_file_or_directory>" \
--output_root "<directory_where_subdivided_audio_clips_will_be_saved>" \
--threshold <volume_threshold> \
--min_length <minimum_duration_of_each_subclip> \
--min_interval <shortest_time_gap_between_adjacent_subclips>
--hop_size <step_size_for_computing_volume_curve>使用 FunASR 命令行完成数据集 ASR 处理. 中文、英语、日语、韩语和自动语言检测默认使用 Fun-ASR-Nano, 粤语继续使用经典 FunASR 后端.
python tools/asr/funasr_asr.py -i <input> -o <output> -l zh也可以使用 Faster Whisper 作为 ASR 后端.
(没有进度条, GPU 性能可能会导致时间延迟)
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>启用自定义列表保存路径
致谢
特别感谢以下项目和贡献者:
理论研究
预训练模型
推理用文本前端
WebUI 工具
- ultimatevocalremovergui
- audio-slicer
- SubFix
- FFmpeg
- gradio
- faster-whisper
- FunASR
- Fun-ASR
- SenseVoice
- AP-BWE
感谢 @Naozumi520 提供粤语训练集, 并在粤语相关知识方面给予指导.
感谢所有贡献者的努力
File: GPT_SoVITS/BigVGAN/README.md
BigVGAN: A Universal Neural Vocoder with Large-Scale Training
Sang-gil Lee, Wei Ping, Boris Ginsburg, Bryan Catanzaro, Sungroh Yoon
[Paper] - [Code] - [Showcase] - [Project Page] - [Weights] - [Demo]
News
Sep 2024 (v2.4):
- We have updated the pretrained checkpoints trained for 5M steps. This is final release of the BigVGAN-v2 checkpoints.
Jul 2024 (v2.3):
- General refactor and code improvements for improved readability.
- Fully fused CUDA kernel of anti-alised activation (upsampling + activation + downsampling) with inference speed benchmark.
Jul 2024 (v2.2): The repository now includes an interactive local demo using gradio.
Jul 2024 (v2.1): BigVGAN is now integrated with 🤗 Hugging Face Hub with easy access to inference using pretrained checkpoints. We also provide an interactive demo on Hugging Face Spaces.
Jul 2024 (v2): We release BigVGAN-v2 along with pretrained checkpoints. Below are the highlights:
- Custom CUDA kernel for inference: we provide a fused upsampling + activation kernel written in CUDA for accelerated inference speed. Our test shows 1.5 - 3x faster speed on a single A100 GPU.
- Improved discriminator and loss: BigVGAN-v2 is trained using a multi-scale sub-band CQT discriminator and a multi-scale mel spectrogram loss.
- Larger training data: BigVGAN-v2 is trained using datasets containing diverse audio types, including speech in multiple languages, environmental sounds, and instruments.
- We provide pretrained checkpoints of BigVGAN-v2 using diverse audio configurations, supporting up to 44 kHz sampling rate and 512x upsampling ratio.
Installation
The codebase has been tested on Python 3.10 and PyTorch 2.3.1 conda packages with either pytorch-cuda=12.1 or pytorch-cuda=11.8. Below is an example command to create the conda environment:
conda create -n bigvgan python=3.10 pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
conda activate bigvganClone the repository and install dependencies:
git clone https://github.com/NVIDIA/BigVGAN
cd BigVGAN
pip install -r requirements.txtInference Quickstart using 🤗 Hugging Face Hub
Below example describes how you can use BigVGAN: load the pretrained BigVGAN generator from Hugging Face Hub, compute mel spectrogram from input waveform, and generate synthesized waveform using the mel spectrogram as the model's input.
device = 'cuda'
import torch
import bigvgan
import librosa
from meldataset import get_mel_spectrogram
# instantiate the model. You can optionally set use_cuda_kernel=True for faster inference.
model = bigvgan.BigVGAN.from_pretrained('nvidia/bigvgan_v2_24khz_100band_256x', use_cuda_kernel=False)
# remove weight norm in the model and set to eval mode
model.remove_weight_norm()
model = model.eval().to(device)
# load wav file and compute mel spectrogram
wav_path = '/path/to/your/audio.wav'
wav, sr = librosa.load(wav_path, sr=model.h.sampling_rate, mono=True) # wav is np.ndarray with shape [T_time] and values in [-1, 1]
wav = torch.FloatTensor(wav).unsqueeze(0) # wav is FloatTensor with shape [B(1), T_time]
# compute mel spectrogram from the ground truth audio
mel = get_mel_spectrogram(wav, model.h).to(device) # mel is FloatTensor with shape [B(1), C_mel, T_frame]
# generate waveform from mel
with torch.inference_mode():
wav_gen = model(mel) # wav_gen is FloatTensor with shape [B(1), 1, T_time] and values in [-1, 1]
wav_gen_float = wav_gen.squeeze(0).cpu() # wav_gen is FloatTensor with shape [1, T_time]
# you can convert the generated waveform to 16 bit linear PCM
wav_gen_int16 = (wav_gen_float * 32767.0).numpy().astype('int16') # wav_gen is now np.ndarray with shape [1, T_time] and int16 dtypeLocal gradio demo [](https://github.com/gradio-app/gradio)
You can run a local gradio demo using below command:
pip install -r demo/requirements.txt
python demo/app.pyTraining
Create symbolic link to the root of the dataset. The codebase uses filelist with the relative path from the dataset. Below are the example commands for LibriTTS dataset:
cd filelists/LibriTTS && \
ln -s /path/to/your/LibriTTS/train-clean-100 train-clean-100 && \
ln -s /path/to/your/LibriTTS/train-clean-360 train-clean-360 && \
ln -s /path/to/your/LibriTTS/train-other-500 train-other-500 && \
ln -s /path/to/your/LibriTTS/dev-clean dev-clean && \
ln -s /path/to/your/LibriTTS/dev-other dev-other && \
ln -s /path/to/your/LibriTTS/test-clean test-clean && \
ln -s /path/to/your/LibriTTS/test-other test-other && \
cd ../..Train BigVGAN model. Below is an example command for training BigVGAN-v2 using LibriTTS dataset at 24kHz with a full 100-band mel spectrogram as input:
python train.py \
--config configs/bigvgan_v2_24khz_100band_256x.json \
--input_wavs_dir filelists/LibriTTS \
--input_training_file filelists/LibriTTS/train-full.txt \
--input_validation_file filelists/LibriTTS/val-full.txt \
--list_input_unseen_wavs_dir filelists/LibriTTS filelists/LibriTTS \
--list_input_unseen_validation_file filelists/LibriTTS/dev-clean.txt filelists/LibriTTS/dev-other.txt \
--checkpoint_path exp/bigvgan_v2_24khz_100band_256xSynthesis
Synthesize from BigVGAN model. Below is an example command for generating audio from the model.
It computes mel spectrograms using wav files from --input_wavs_dir and saves the generated audio to --output_dir.
python inference.py \
--checkpoint_file /path/to/your/bigvgan_v2_24khz_100band_256x/bigvgan_generator.pt \
--input_wavs_dir /path/to/your/input_wav \
--output_dir /path/to/your/output_wavinference_e2e.py supports synthesis directly from the mel spectrogram saved in .npy format, with shapes [1, channel, frame] or [channel, frame].
It loads mel spectrograms from --input_mels_dir and saves the generated audio to --output_dir.
Make sure that the STFT hyperparameters for mel spectrogram are the same as the model, which are defined in config.json of the corresponding model.
python inference_e2e.py \
--checkpoint_file /path/to/your/bigvgan_v2_24khz_100band_256x/bigvgan_generator.pt \
--input_mels_dir /path/to/your/input_mel \
--output_dir /path/to/your/output_wavUsing Custom CUDA Kernel for Synthesis
You can apply the fast CUDA inference kernel by using a parameter use_cuda_kernel when instantiating BigVGAN:
generator = BigVGAN(h, use_cuda_kernel=True)You can also pass --use_cuda_kernel to inference.py and inference_e2e.py to enable this feature.
When applied for the first time, it builds the kernel using nvcc and ninja. If the build succeeds, the kernel is saved to alias_free_activation/cuda/build and the model automatically loads the kernel. The codebase has been tested using CUDA 12.1.
Please make sure that both are installed in your system and nvcc installed in your system matches the version your PyTorch build is using.
We recommend running test_cuda_vs_torch_model.py first to build and check the correctness of the CUDA kernel. See below example command and its output, where it returns [Success] test CUDA fused vs. plain torch BigVGAN inference:
python tests/test_cuda_vs_torch_model.py \
--checkpoint_file /path/to/your/bigvgan_generator.ptloading plain Pytorch BigVGAN
...
loading CUDA kernel BigVGAN with auto-build
Detected CUDA files, patching ldflags
Emitting ninja build file /path/to/your/BigVGAN/alias_free_activation/cuda/build/build.ninja..
Building extension module anti_alias_activation_cuda...
...
Loading extension module anti_alias_activation_cuda...
...
Loading '/path/to/your/bigvgan_generator.pt'
...
[Success] test CUDA fused vs. plain torch BigVGAN inference
> mean_difference=0.0007238413265440613
...If you see [Fail] test CUDA fused vs. plain torch BigVGAN inference, it means that the CUDA kernel inference is incorrect. Please check if nvcc installed in your system is compatible with your PyTorch version.
Pretrained Models
We provide the pretrained models on Hugging Face Collections.
One can download the checkpoints of the generator weight (named bigvgan_generator.pt) and its discriminator/optimizer states (named bigvgan_discriminator_optimizer.pt) within the listed model repositories.
| Model Name | Sampling Rate | Mel band | fmax | Upsampling Ratio | Params | Dataset | Steps | Fine-Tuned |
|---|---|---|---|---|---|---|---|---|
| bigvgan_v2_44khz_128band_512x | 44 kHz | 128 | 22050 | 512 | 122M | Large-scale Compilation | 5M | No |
| bigvgan_v2_44khz_128band_256x | 44 kHz | 128 | 22050 | 256 | 112M | Large-scale Compilation | 5M | No |
| bigvgan_v2_24khz_100band_256x | 24 kHz | 100 | 12000 | 256 | 112M | Large-scale Compilation | 5M | No |
| bigvgan_v2_22khz_80band_256x | 22 kHz | 80 | 11025 | 256 | 112M | Large-scale Compilation | 5M | No |
| bigvgan_v2_22khz_80band_fmax8k_256x | 22 kHz | 80 | 8000 | 256 | 112M | Large-scale Compilation | 5M | No |
| bigvgan_24khz_100band | 24 kHz | 100 | 12000 | 256 | 112M | LibriTTS | 5M | No |
| bigvgan_base_24khz_100band | 24 kHz | 100 | 12000 | 256 | 14M | LibriTTS | 5M | No |
| bigvgan_22khz_80band | 22 kHz | 80 | 8000 | 256 | 112M | LibriTTS + VCTK + LJSpeech | 5M | No |
| bigvgan_base_22khz_80band | 22 kHz | 80 | 8000 | 256 | 14M | LibriTTS + VCTK + LJSpeech | 5M | No |
The paper results are based on the original 24kHz BigVGAN models (bigvgan_24khz_100band and bigvgan_base_24khz_100band) trained on LibriTTS dataset.
We also provide 22kHz BigVGAN models with band-limited setup (i.e., fmax=8000) for TTS applications.
Note that the checkpoints use snakebeta activation with log scale parameterization, which have the best overall quality.
You can fine-tune the models by:
- downloading the checkpoints (both the generator weight and its discriminator/optimizer states)
- resuming training using your audio dataset by specifying
--checkpoint_paththat includes the checkpoints when launchingtrain.py
Training Details of BigVGAN-v2
Comapred to the original BigVGAN, the pretrained checkpoints of BigVGAN-v2 used batch_size=32 with a longer segment_size=65536 and are trained using 8 A100 GPUs.
Note that the BigVGAN-v2 json config files in ./configs use batch_size=4 as default to fit in a single A100 GPU for training. You can fine-tune the models adjusting batch_size depending on your GPUs.
When training BigVGAN-v2 from scratch with small batch size, it can potentially encounter the early divergence problem mentioned in the paper. In such case, we recommend lowering the clip_grad_norm value (e.g. 100) for the early training iterations (e.g. 20000 steps) and increase the value to the default 500.
Evaluation Results of BigVGAN-v2
Below are the objective results of the 24kHz model (bigvgan_v2_24khz_100band_256x) obtained from the LibriTTS dev sets. BigVGAN-v2 shows noticeable improvements of the metrics. The model also exhibits reduced perceptual artifacts, especially for non-speech audio.
| Model | Dataset | Steps | PESQ(↑) | M-STFT(↓) | MCD(↓) | Periodicity(↓) | V/UV F1(↑) |
|---|---|---|---|---|---|---|---|
| BigVGAN | LibriTTS | 1M | 4.027 | 0.7997 | 0.3745 | 0.1018 | 0.9598 |
| BigVGAN | LibriTTS | 5M | 4.256 | 0.7409 | 0.2988 | 0.0809 | 0.9698 |
| BigVGAN-v2 | Large-scale Compilation | 3M | 4.359 | 0.7134 | 0.3060 | 0.0621 | 0.9777 |
| BigVGAN-v2 | Large-scale Compilation | 5M | 4.362 | 0.7026 | 0.2903 | 0.0593 | 0.9793 |
Speed Benchmark
Below are the speed and VRAM usage benchmark results of BigVGAN from tests/test_cuda_vs_torch_model.py, using bigvgan_v2_24khz_100band_256x as a reference model.
| GPU | num_mel_frame | use_cuda_kernel | Speed (kHz) | Real-time Factor | VRAM (GB) |
|---|---|---|---|---|---|
| NVIDIA A100 | 256 | False | 1672.1 | 69.7x | 1.3 |
| True | 3916.5 | 163.2x | 1.3 | ||
| 2048 | False | 1899.6 | 79.2x | 1.7 | |
| True | 5330.1 | 222.1x | 1.7 | ||
| 16384 | False | 1973.8 | 82.2x | 5.0 | |
| True | 5761.7 | 240.1x | 4.4 | ||
| NVIDIA GeForce RTX 3080 | 256 | False | 841.1 | 35.0x | 1.3 |
| True | 1598.1 | 66.6x | 1.3 | ||
| 2048 | False | 929.9 | 38.7x | 1.7 | |
| True | 1971.3 | 82.1x | 1.6 | ||
| 16384 | False | 943.4 | 39.3x | 5.0 | |
| True | 2026.5 | 84.4x | 3.9 | ||
| NVIDIA GeForce RTX 2080 Ti | 256 | False | 515.6 | 21.5x | 1.3 |
| True | 811.3 | 33.8x | 1.3 | ||
| 2048 | False | 576.5 | 24.0x | 1.7 | |
| True | 1023.0 | 42.6x | 1.5 | ||
| 16384 | False | 589.4 | 24.6x | 5.0 | |
| True | 1068.1 | 44.5x | 3.2 |
Acknowledgements
We thank Vijay Anand Korthikanti and Kevin J. Shih for their generous support in implementing the CUDA kernel for inference.
References
- HiFi-GAN (for generator and multi-period discriminator)
- Snake (for periodic activation)
- Alias-free-torch (for anti-aliasing)
- Julius (for low-pass filter)
- UnivNet (for multi-resolution discriminator)
- descript-audio-codec and vocos (for multi-band multi-scale STFT discriminator and multi-scale mel spectrogram loss)
- Amphion (for multi-scale sub-band CQT discriminator)
File: GPT_SoVITS/f5_tts/model/backbones/README.md
Backbones quick introduction
unett.py
- flat unet transformer
- structure same as in e2-tts & voicebox paper except using rotary pos emb
- update: allow possible abs pos emb & convnextv2 blocks for embedded text before concat
dit.py
- adaln-zero dit
- embedded timestep as condition
- concatted noised_input + masked_cond + embedded_text, linear proj in
- possible abs pos emb & convnextv2 blocks for embedded text before concat
- possible long skip connection (first layer to last layer)
mmdit.py
- sd3 structure
- timestep as condition
- left stream: text embedded and applied a abs pos emb
- right stream: masked_cond & noised_input concatted and with same conv pos emb as unett
File: GPT_SoVITS/text/zh_normalization/README.md
Supported NSW (Non-Standard-Word) Normalization
| NSW type | raw | normalized |
|---|---|---|
| serial number | 电影中梁朝伟扮演的陈永仁的编号27149 | 电影中梁朝伟扮演的陈永仁的编号二七一四九 |
| cardinal | 这块黄金重达324.75克我们班的最高总分为583分 | 这块黄金重达三百二十四点七五克我们班的最高总分为五百八十三分 |
| numeric range | 12~23-1.5~2 | 十二到二十三负一点五到二 |
| date | 她出生于86年8月18日,她弟弟出生于1995年3月1日 | 她出生于八六年八月十八日, 她弟弟出生于一九九五年三月一日 |
| time | 等会请在12:05请通知我 | 等会请在十二点零五分请通知我 |
| temperature | 今天的最低气温达到-10°C | 今天的最低气温达到零下十度 |
| fraction | 现场有7/12的观众投出了赞成票 | 现场有十二分之七的观众投出了赞成票 |
| percentage | 明天有62%的概率降雨 | 明天有百分之六十二的概率降雨 |
| money | 随便来几个价格12块5,34.5元,20.1万 | 随便来几个价格十二块五,三十四点五元,二十点一万 |
| telephone | 这是固话0421-33441122这是手机+86 18544139121 | 这是固话零四二一三三四四一一二二这是手机八六一八五四四一三九一二一 |
References
Pull requests #658 of DeepSpeech
File: tools/AP_BWE_main/README.md
Towards High-Quality and Efficient Speech Bandwidth Extension with Parallel Amplitude and Phase Prediction
Ye-Xin Lu, Yang Ai, Hui-Peng Du, Zhen-Hua Ling
Abstract:
Speech bandwidth extension (BWE) refers to widening the frequency bandwidth range of speech signals, enhancing the speech quality towards brighter and fuller.
This paper proposes a generative adversarial network (GAN) based BWE model with parallel prediction of Amplitude and Phase spectra, named AP-BWE, which achieves both high-quality and efficient wideband speech waveform generation.
The proposed AP-BWE generator is entirely based on convolutional neural networks (CNNs).
It features a dual-stream architecture with mutual interaction, where the amplitude stream and the phase stream communicate with each other and respectively extend the high-frequency components from the input narrowband amplitude and phase spectra.
To improve the naturalness of the extended speech signals, we employ a multi-period discriminator at the waveform level and design a pair of multi-resolution amplitude and phase discriminators at the spectral level, respectively.
Experimental results demonstrate that our proposed AP-BWE achieves state-of-the-art performance in terms of speech quality for BWE tasks targeting sampling rates of both 16 kHz and 48 kHz.
In terms of generation efficiency, due to the all-convolutional architecture and all-frame-level operations, the proposed AP-BWE can generate 48 kHz waveform samples 292.3 times faster than real-time on a single RTX 4090 GPU and 18.1 times faster than real-time on a single CPU.
Notably, to our knowledge, AP-BWE is the first to achieve the direct extension of the high-frequency phase spectrum, which is beneficial for improving the effectiveness of existing BWE methods.
We provide our implementation as open source in this repository. Audio samples can be found at the demo website.
Pre-requisites
- Python >= 3.9.
- Clone this repository.
- Install python requirements. Please refer requirements.txt.
- Download datasets
- Download and extract the VCTK-0.92 dataset, and move its
wav48directory into VCTK-Corpus-0.92 and rename it aswav48_origin. - Trim the silence of the dataset, and the trimmed files will be saved to
wav48_silence_trimmed.textcd VCTK-Corpus-0.92 python flac2wav.py - Move all the trimmed training files from
wav48_silence_trimmedto wav48/train following the indexes in training.txt, and move all the untrimmed test files fromwav48_originto wav48/test following the indexes in test.txt.
- Download and extract the VCTK-0.92 dataset, and move its
Training
cd train
CUDA_VISIBLE_DEVICES=0 python train_16k.py --config [config file path]
CUDA_VISIBLE_DEVICES=0 python train_48k.py --config [config file path]Checkpoints and copies of the configuration file are saved in the cp_model directory by default.
You can change the path by using the --checkpoint_path option.
Here is an example:
CUDA_VISIBLE_DEVICES=0 python train_16k.py --config ../configs/config_2kto16k.json --checkpoint_path ../checkpoints/AP-BWE_2kto16kInference
cd inference
python inference_16k.py --checkpoint_file [generator checkpoint file path]
python inference_48k.py --checkpoint_file [generator checkpoint file path]You can download the pretrained weights we provide and move all the files to the checkpoints directory.
Generated wav files are saved in generated_files by default.
You can change the path by adding --output_dir option.
Here is an example:
python inference_16k.py --checkpoint_file ../checkpoints/2kto16k/g_2kto16k --output_dir ../generated_files/2kto16kModel Structure
Comparison with other speech BWE methods
2k/4k/8kHz to 16kHz
8k/12k/16/24kHz to 16kHz
Acknowledgements
We referred to HiFi-GAN and NSPP to implement this.
Citation
@article{lu2024towards,
title={Towards high-quality and efficient speech bandwidth extension with parallel amplitude and phase prediction},
author={Lu, Ye-Xin and Ai, Yang and Du, Hui-Peng and Ling, Zhen-Hua},
journal={arXiv preprint arXiv:2401.06387},
year={2024}
}
@inproceedings{lu2024multi,
title={Multi-Stage Speech Bandwidth Extension with Flexible Sampling Rate Control},
author={Lu, Ye-Xin and Ai, Yang and Sheng, Zheng-Yan and Ling, Zhen-Hua},
booktitle={Proc. Interspeech},
pages={2270--2274},
year={2024}
}