İçindekiler
Önceki yazıda TTS Generation WebUI'yi biraz denedim ve ilginç buldum. Ben de kendi sesimle kullanışlı bir model eğitmeye karar verdim.
Bu ses klonlama projesi hem Ses Değiştirme için SVC'yi hem de Metin-Konuşma için VITS'yi araştırıyor. Tüm işleri yapan tek bir araç yoktur.
Bu proje için çeşitli araçları test ettim. Bunun , bunun ve bunun gibi iyi rehberlerin çoğu Çincedir. Bu yüzden notlarımı İngilizce olarak yayınlamanın faydalı olacağını düşündüm.
Her ne kadar so-vits-svc muhtemelen baskı nedeniyle birkaç aydır arşivlenmiş olsa da hala en iyi sonucu veren araçtır.
so-vits-svc-fork , so-vits-svc-5.0 , DDSP-SVC ve RVC gibi diğer ilgili araçlar daha hızlı/litre optimizasyonu, daha fazla özellik veya daha iyi arayüzler sağlar.
Ancak yeterli zaman ve kaynakla bu alternatiflerin hiçbiri orijinal so-vits-svc'nin ürettiği üstün sonuçla rekabet edemez.
TTS için Bert-VITS2 adı verilen yeni bir araç harika çalışıyor ve geçen ayki son sürümüyle zaten olgunlaştı. Ses içeriği oluşturma gibi çok farklı kullanım durumları vardır.
Veri setinin ses dosyaları WAV formatında, 44100 Hz, 16bit, mono, ideal olarak 1-2 saat olmalıdır.
Ultimate Vocal Remover bu iş için en kolay araçtır. Her şeyi ayrıntılı olarak açıklayan bir konu var.
Modeli: VR - UVR(4_HP-Vokal-UVR)
Ayarlar: 512 - 10 - GPU
Çıkış Enstrümantal ve kirli vokal
Modeli: VR - UVR(5_HP-Karaoke-UVR)
Ayarlar: 512 - 10 - GPU
Çıkış arka vokali ve kirli ana vokal
Model: VR - UVR-DeEcho-DeReverb ve UVR-DeNoise
Ayarlar: 512 - 10 - GPU - Yalnızca Başkası Yok
Çıkış temiz ana vokal
Yoğunlaştırılmış bir mikrofonla işlenmiş bir odada kayıt yapmak daha iyidir, aksi takdirde gürültüyü azaltmak için yönlü veya dinamik bir mikrofon kullanın.
Müziğe ilk kez lise yıllarımda mavi Sennheiser MX500 ve Koss Porta Pro ile başladım. Cool Edit Pro ile Sony VAIO'da ilk kez bir şarkıyı kaydettiğim zamanı hâlâ hatırlıyorum.
Bugünlerde amatör olarak ses donanımına çok fazla para harcamaya hala direniyorum çünkü bu tam anlamıyla para emen bir kara delik.
Yine de bu ucuz üretim ekipmanlarının güvenilirliğini gerçekten takdir ediyorum.
Kurulumumun temel parçası Behringer UCA202'dir ve kullanım durumlarım için mükemmeldir. İndirim döneminde 10$'a aldım.
Bu, “Ses Arayüzü” olarak adlandırılan, ancak temelde yalnızca birden fazla bağlantı noktasına sahip bir ses kartıdır. Kulaklıklarım için RCA'dan 3,5 mm'ye TRS kabloları, normal çıkış için yarı açık K240'ları ve monitör çıkışı için arkası kapalı HD669/MDR7506'yı kullandım.
Bahsedilen üç kulaklığın tümü normal fiyat için 100 doların altındadır. Ayrıca Samson, Tascam, Knox Gear ve daha fazlasının 50 dolardan daha düşük fiyata klonları var.
Giriş cihazı olarak çevresel gürültüleri önlemek adına dinamik bir mikrofon kullanıyorum. Bu bir SM58 kopyası (Pyle) + Tascam DR-05 kaydedicidir (amplifikatör olarak). SL84c veya wm58 gibi diğer klonlar da bunu yapabilir.
Mikrofonu kayıt cihazının MIC/Harici girişine bağlamak için bir XLR - 3,5 mm TRS kablosu kullanıyorum ve ardından kayıt cihazının hat çıkışı ile UCA202'nin girişi arasına bağlantı kurmak için bir AUX kablosu kullanıyorum.
Kurulumumu kopyalamak için bir "ses arayüzü" ve özel bir amplifikatör satın almanız önerilmez. 10 dolarlık bir c-media USB ses kartı yeterince iyi olmalıdır. Sahip olduğum Syba modeli, dinamik mikrofonları doğrudan ve hatta bazı alt seviye fantom güçlü mikrofonları "ön ampingleme" kapasitesine sahip.
Kurulum son derece ucuz olabilir (40~60 $), ancak UCA202 ve DR-05 ile ses çok daha temiz. Ve eski iyi dijital kayıt cihazımın fiziksel kontrollerini, çok yönlülüğünü ve taşınabilirliğini gerçekten seviyorum.
Tasarımcı olarak para aldığım dönemde Audition'dan oldukça memnundum. Ancak eğlenceli bir projede kişisel kullanım için Audacity, Adobe'nin kaotik kötülüğünden kaçınmanın yoludur.
Ses dosyasını daha sonra kullanmak üzere küçük parçalara bölmek için ses dilimleyiciyi veya ses dilimleyiciyi (gui) kullanın.
Varsayılan ayar harika çalışıyor.
Çok kısa olanları çıkarın ve 10 saniyenin üzerinde olanları yeniden dilimleyin.
Büyük bir veri kümesi olması durumunda, 4 saniyeden kısa olanların tümünü kaldırın. Küçük bir veri kümesi olması durumunda, yalnızca 2 saniyenin altındakileri kaldırın.
Gerekirse her bir dosya için manuel inceleme gerçekleştirin.
Audacity'yi Loudness Normalization ile tekrar kullanın; 0db bunu yapmalı.
Tek bir sistemde birden fazla Python aracını çalıştırmak için sanal ortam gereklidir. Eskiden VM'leri ve Docker'ı kullanıyordum ama şimdi anaconda'nın diğerlerinden çok daha hızlı ve kullanışlı olduğunu buldum.
so-vits-svc için yeni bir ortam oluşturun ve onu etkinleştirin.
conda create -n so-vits-svc python=3.8 conda activate so-vits-svc
Daha sonra gereksinimleri yükleyin.
git clone https://github.com/svc-develop-team/so-vits-svc cd so-vits-svc pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 #for linux pip install -r requirements.txt #for windows pip install -r requirements_win.txt pip install --upgrade fastapi==0.84.0 pip install --upgrade gradio==3.41.2 pip install --upgrade pydantic==1.10.12 pip install fastapi uvicorn
wget https://huggingface.co/WitchHuntTV/checkpoint_best_legacy_500.pt/resolve/main/checkpoint_best_legacy_500.pt
wget https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/rmvpe.pt
wget https://huggingface.co/datasets/ms903/sovits4.0-768vec-layer12/resolve/main/sovits_768l12_pre_large_320k/clean_D_320000.pth
wget https://huggingface.co/datasets/ms903/sovits4.0-768vec-layer12/resolve/main/sovits_768l12_pre_large_320k/clean_G_320000.pth
wget https://huggingface.co/datasets/ms903/Diff-SVC-refactor-pre-trained-model/resolve/main/fix_pitch_add_vctk_600k/model_0.pt
(Alternatif) wget https://huggingface.co/datasets/ms903/DDSP-SVC-4.0/resolve/main/pre-trained-model/model_0.pt
(Alternatif) wget https://huggingface.co/datasets/ms903/Diff-SVC-refactor-pre-trained-model/blob/main/hubertsoft_fix_pitch_add_vctk_500k/model_0.pt
wget -P pretrain/ https://github.com/openvpi/vocoders/releases/download/nsf-hifigan-v1/nsf_hifigan_20221211.zip
unzip -od pretrain/nsf_hifigan pretrain/nsf_hifigan_20221211.zip
Hazırlanan tüm audio.wav dosyalarını dataset_raw/character
içine koyun
cd so-vits-svc python resample.py --skip_loudnorm python preprocess_flist_config.py --speech_encoder vec768l12 --vol_aug python preprocess_hubert_f0.py --use_diff
Dosya configs/config.json
konumunda bulunur
log interval
: yazdırma sıklığı günlük eval interval
: kontrol noktalarının kaydedilme sıklığı epochs
: toplam adım keep ckpts
: kaydedilen kontrol noktalarının sayısı, sınırsız için 0. half_type
: fp32 Benim durumumda, batch_size
: Ne kadar küçük olursa o kadar hızlı (daha kaba), ne kadar büyükse o kadar yavaş (daha iyi).
VRAM başına önerilen parti_boyutu: 4=6G;6=8G;10=12G;14=16G;20=24G
configs/diffusion.yaml
için varsayılanı koruyun
python cluster/train_cluster.py --gpu python train_index.py -c configs/config.json python train.py -c configs/config.json -m 44k python train_diff.py -c configs/diffusion.yaml
Eğitim adımlarında:
Ana modeli eğitmek için train.py
kullanın; genellikle 20k-30k kullanılabilir ve 50k ve üzeri yeterince iyi olur. Bu, GPU hızına bağlı olarak birkaç gün sürebilir.
Bunu ctrl+c
ile durdurmaktan çekinmeyin; python train.py -c configs/config.json -m 44k
istediğiniz zaman yeniden çalıştırılarak eğitime devam edilecektir.
Difüzyon modelini eğitmek için train_diff.py
kullanın; Ana modelin 1/3'ünde eğitim adımları önerilir.
Aşırı antrenmanın farkında olun. Düz olup olmadığını görmek amacıyla grafikleri izlemek için tensorboard --logdir=./logs/44k
kullanın.
Gerekirse learning rate
0,0001'den 0,00005'e değiştirin.
İşiniz bittiğinde, çıkarım için bu dosyaları paylaşın/aktarın.
yapılandırma.json
difüzyon.yaml
Eğitilen modeli denemenin zamanı geldi. Parametreleri ayarlamanın rahatlığı için Webui'yi tercih ederim.
Ancak başlatmadan önce, LAN erişimi için webUI.py
aşağıdaki satırları düzenleyin:
os.system("start http://localhost:7860") app.launch(server_name="0.0.0.0", server_port=7860)
python webUI.py
çalıştırın; daha sonra bir web tarayıcısından ipaddress:7860
erişin.
Webui'nin İngilizce yerelleştirmesi yoktur, ancak Sürükleyici Çeviri faydalı olacaktır.
Çoğu parametre varsayılan değerle iyi çalışır. Değişiklik yapmak için buna ve buna bakın.
Bu 5 dosyayı yükleyin:
main model.pt
ve config.json
diffusion model.pt
ve diffusion.yaml
Konuşma için küme modeli kmeans_10000.pt
veya şarkı söylemek için özellik alma feature_and_index.pkl
.
F0 predictor
şarkı söylemek için değil, yalnızca konuşmak içindir. Kullanırken RMVPE
önerin.
Pitch change
kadınsı bir şarkıyı erkeksi bir sese sahip bir model kullanarak söylerken veya tam tersi durumda faydalıdır.
Clustering model/feature retrieval mixing ratio
tonu kontrol etmenin yoludur. En net konuşmayı elde etmek için 0.1
, modele en yakın tonu elde etmek için 0.9
kullanın.
shallow diffusion steps
50
civarında ayarlanmalıdır, 30-100
adımda sonucu iyileştirir.
Bu prosedür isteğe bağlıdır. Sadece daha iyi bir şarkının prodüksiyonu için.
Kullandığım ses düzenleme yazılımı veya DAW (dijital ses iş istasyonu) ücretsiz olmadığı için bu konunun ayrıntılarına girmeyeceğim. Sektörün tamamı ödeme duvarlı ve kapalı kaynaklı olmasına rağmen özel mülk yazılımı savunmak gibi bir niyetim yok.
Audacity çoklu parçayı, efektleri ve çok daha fazlasını destekler. Bazı gelişmiş VST eklentilerini de yükler.
Audacity ile şarkılarda ustalaşmaya yönelik eğitimler bulmak zor değil.
Tipik olarak mastering süreci miksaj/dengeleme, EQ/sıkıştırma, reverb ve görüntüleme olmalıdır. Araç ne kadar gelişmiş olursa süreç o kadar kolay olacaktır.
Gelecekte mastering sürecim için Audacity'yi benimsemeye kesinlikle daha fazla zaman ayıracağım ve herkesin bunu yapmasını tavsiye ediyorum.
Bu, gerçek zamanlı desteğe sahip bir so-vits-svc çatalıdır ve modeller uyumludur. Kullanımı daha kolaydır ancak Difüzyon modelini desteklemez. Özel gerçek zamanlı ses değişimi için bir ses değiştirici önerilir.
conda create -n so-vits-svc-fork python=3.10 pip conda activate so-vits-svc-fork git clone https://github.com/voicepaw/so-vits-svc-fork cd so-vits-svc-fork python -m pip install -U pip setuptools wheel pip install -U torch torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install -U so-vits-svc-fork pip install click sudo apt-get install libportaudio2
Veri kümesi .wav dosyalarını so-vits-svc-fork/dataset_raw
yerleştirin
svc pre-resample svc pre-config
configs/44k/config.json
dosyasında batch_size
değerini düzenleyin. Bu çatal orijinalinden daha büyük boyuttadır.
svc pre-hubert svc train -t svc train-cluster
GUI'yi svcg
ile kullanın. Bu, yerel bir masaüstü ortamı gerektirir.
Veya gerçek zamanlı olarak svc vc
ile CLI'yi ve oluşturmak için svc infer -m "logs/44k/xxxxx.pth" -c "configs/config.json" raw/xxx.wav
kullanın.
DDSP-SVC, daha az donanım kaynağı gerektirir ve so-vits-svc'den daha hızlı çalışır. Hem gerçek zamanlı hem de difüzyon modellerini (Diff-SVC) destekler.
conda create -n DDSP-SVC python=3.8 conda activate DDSP-SVC git clone https://github.com/yxlllc/DDSP-SVC cd DDSP-SVC pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install -r requirements.txt
İki dosya için Başlatma bölümüne bakın:
pretrain/rmvpe/model.pt pretrain/contentvec/checkpoint_best_legacy_500.pt
python draw.py python preprocess.py -c configs/combsub.yaml python preprocess.py -c configs/diffusion-new.yaml
configs/
batch_size: 32 (16 for diffusion) cache_all_data: false cache_device: 'cuda' cache_fp16: false
conda activate DDSP-SVC python train.py -c configs/combsub.yaml python train_diff.py -c configs/diffusion-new.yaml tensorboard --logdir=exp
Hem DDSP hem de difüzyon modelini içerdiğinden main_diff.py
kullanılması tavsiye edilir.
python main_diff.py -i "input.wav" -diff "model_xxxxxx.pt" -o "output.wav"
Ses klonlama için gerçek zamanlı GUI:
python gui_diff.py
Bu, yukarıdakilerden tamamen farklı bir TTS aracıdır. Bunu kullanarak ailem için kendi sesimle birkaç sesli kitap oluşturdum ve onlar bundan gerçekten keyif alıyorlar.
Orijinali kullanmak yerine, daha kolay kurulum için v3u çatalını kullandım.
conda create -n bert-vits2 python=3.9 conda activate bert-vits2 git clone https://github.com/v3ucn/Bert-vits2-V2.3.git cd Bert-vits2-V2.3 pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 --index-url https://download.pytorch.org/whl/cu118 pip install -r requirements.txt
Önceden eğitilmiş modelleri indirin (Çince, Japonca ve İngilizce içerir):
wget -P slm/wavlm-base-plus/ https://huggingface.co/microsoft/wavlm-base-plus/resolve/main/pytorch_model.bin wget -P emotional/clap-htsat-fused/ https://huggingface.co/laion/clap-htsat-fused/resolve/main/pytorch_model.bin wget -P emotional/wav2vec2-large-robust-12-ft-emotion-msp-dim/ https://huggingface.co/audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim/resolve/main/pytorch_model.bin wget -P bert/chinese-roberta-wwm-ext-large/ https://huggingface.co/hfl/chinese-roberta-wwm-ext-large/resolve/main/pytorch_model.bin wget -P bert/bert-base-japanese-v3/ https://huggingface.co/cl-tohoku/bert-base-japanese-v3/resolve/main/pytorch_model.bin wget -P bert/deberta-v3-large/ https://huggingface.co/microsoft/deberta-v3-large/resolve/main/pytorch_model.bin wget -P bert/deberta-v3-large/ https://huggingface.co/microsoft/deberta-v3-large/resolve/main/pytorch_model.generator.bin wget -P bert/deberta-v2-large-japanese/ https://huggingface.co/ku-nlp/deberta-v2-large-japanese/resolve/main/pytorch_model.bin
Bir karakter modeli klasörü oluşturun mkdir -p Data/xxx/models/
Temel modelleri indirin:
!wget -P Data/xxx/models/ https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/resolve/main/DUR_0.pth !wget -P Data/xxx/models/ https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/resolve/main/D_0.pth !wget -P Data/xxx/models/ https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/resolve/main/G_0.pth !wget -P Data/xxx/models/ https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/resolve/main/WD_0.pth #More options https://openi.pcl.ac.cn/Stardust_minus/Bert-VITS2/modelmanage/model_filelist_tmpl?name=Bert-VITS2_2.3%E5%BA%95%E6%A8%A1 https://huggingface.co/Erythrocyte/bert-vits2_base_model/tree/main https://huggingface.co/OedoSoldier/Bert-VITS2-2.3/tree/main
Tüm bfloat16
float16
ile değiştirerek train_ms.py
düzenleyin
LAN erişimi için webui.py
düzenleyin:
webbrowser.open(f"start http://localhost:7860") app.launch(server_name="0.0.0.0", server_port=7860)
batch_size
ve spk2id
için Data/xxx/config.json
düzenleyin
Önceki bölümdekine benzer iş akışı.
Gürültüyü ve sessizliği kaldırın, normalleştirin, ardından dilimlenmemiş WAV dosyasını Data/xxx/raw
içine yerleştirin.
dataset_path
, num_workers
ve keep_ckpts
için config.yml
düzenleyin.
WAV dosyasını dilimlemek için python3 audio_slicer.py
çalıştırın.
2 saniyenin altındaki küçük dosyaları kaldırarak veri kümesini ( Data/xxx/raw
) temizleyin.
Fısıltı pip install git+https://github.com/openai/whisper.git
Dilin otomatik algılanmasını kapatmak için, onu yalnızca İngilizce olarak ayarlayın ve large
modeli kullanın; short_audio_transcribe.py
aşağıdaki gibi düzenleyin:
# set the spoken language to english print('language: en') lang = 'en' options = whisper.DecodingOptions(language='en') result = whisper.decode(model, mel, options) # set to use large model parser.add_argument("--whisper_size", default="large") #Solve error "Given groups=1, weight of size [1280, 128, 3], expected input[1, 80, 3000] to have 128 channels, but got 80 channels instead" while using large model mel = whisper.log_mel_spectrogram(audio,n_mels = 128).to(model.device)
Transkripsiyonu başlatmak için python3 short_audio_transcribe.py
çalıştırın.
Dilimlenmiş veri kümesini yeniden örnekleyin: python3 resample.py --sr 44100 --in_dir ./Data/zizek/raw/ --out_dir ./Data/zizek/wavs/
İşlem öncesi transkripsiyon: python3 preprocess_text.py --transcription-path ./Data/zizek/esd.list
BERT özelliği yapılandırması oluşturun: python3 bert_gen.py --config-path ./Data/zizek/configs/config.json
Eğitime başlamak için python3 train_ms.py
çalıştırın
Model yolu için config.yml
dosyasını düzenleyin:
model: "models/G_20900.pth"
Çıkarım için webui'yi başlatmak üzere python3 webui.py
çalıştırın
vits-simple-api, eğitimli modelleri kullanmaya yönelik bir web ön ucudur. Bunu esas olarak orijinal projede bulunmayan uzun metin desteği için kullanıyorum.
git clone https://github.com/Artrajz/vits-simple-api git pull https://github.com/Artrajz/vits-simple-api cd vits-simple-api conda create -n vits-simple-api python=3.10 pip conda activate vits-simple-api && pip install -r requirements.txt
(İsteğe bağlı) Önceden eğitilmiş model dosyalarını Bert-vits2-V2.3/
den vits-simple-api/bert_vits2/
ye kopyalayın
Bert-vits2-V2.3/Data/xxx/models/G_xxxxx.pth
ve Bert-vits2-V2.3/Data/xxx/config.json
dosyasını vits-simple-api/Model/xxx/
kopyalayın
MODEL_LIST
için config.py
ve Default parameter
tercih edildiği gibi düzenleyin
Model/xxx/config.json
aşağıdaki gibi düzenleyin:
"data": { "training_files": "Data/train.list", "validation_files": "Data/val.list", "version": "2.3"
config.yml
model_list
[xxx/G_xxxxx.pth, xxx/config.json]
olarak kontrol edin/düzenleyin
python app.py
çalıştırın
Ton için SDP Ratio
, rastgelelik için Noise
, telaffuz için Noise_W
ve hız için Length
. emotion
ve style
kendini açıklayıcıdır
Hugging Face deposunda başkaları tarafından paylaşılan çok sayıda VITS modeli var. Önce deneyebilir, ardından istediğiniz modelleri Dosyalar'dan indirebilirsiniz.
Genshin modeli, yüksek kalitesi nedeniyle bazı içerik oluşturma topluluklarında yaygın olarak kullanılmaktadır. Yüzlerce karakter içermesine rağmen yalnızca Çince ve Japonca desteklenmektedir.
Başka bir repoda , popüler Çin yayıncılarından ve VTuber'lardan yapılmış çok sayıda Bert-vits2 modeli var.
Zaten bunun gibi AI Vtuber'lar yapan projeler var. Bu teknolojinin yakın gelecekte sektörü nasıl değiştirebileceğini sabırsızlıkla bekliyorum.
https://techshinobi.org/posts/voice-vits/https://techshinobi.org/posts/voice-vits/