목차 SoftVC VITS 및 Bert-VITS2를 사용한 음성 복제에 대한 심층 분석 데이터 세트 준비 노래에서 추출 UVR 작업 흐름 보컬 녹음 준비 Cheapskate의 오디오 장비 대담한 워크플로 오디오 슬라이서 데이터세트 정리 음량 일치 so-vits-svc 환경 설정 초기화 사전 훈련된 모델 다운로드 데이터 세트 준비 구성 편집 훈련 추론 오디오 편집 so-vits-svc-포크 설치 준비 훈련 추론 DDSP-SVC 준비 훈련 추론 Bert-vits2-V2.3 초기화 준비 전사 훈련과 추론 vits-simple-api 개조 모델 공유 에서 조금 사용해 보았는데 재미있더군요. 그래서 나는 내 목소리로 사용 가능한 모델을 훈련시키기로 결정했습니다. 이전 포스팅 TTS Generation WebUI를 이 음성 복제 프로젝트에서는 음성 변경을 위한 SVC와 텍스트 음성 변환을 위한 모두 살펴봅니다. 모든 작업을 수행하는 하나의 도구는 없습니다. VITS를 저는 이 프로젝트를 위해 여러 도구를 테스트했습니다. , this , 같은 좋은 가이드 중 상당수는 중국어로 되어 있습니다. 그래서 영어로 노트를 게시하는 것이 도움이 될 것이라고 생각했습니다. this this 와 억압으로 인해 몇 달 동안 아카이브되었지만 여전히 최상의 결과를 위한 도구입니다. so-vits-svc는 , , 및 와 같은 기타 관련 도구는 더 빠른/리터 최적화, 더 많은 기능 또는 더 나은 인터페이스를 제공합니다. so-vits-svc-fork so-vits-svc-5.0 DDSP-SVC RVC 그러나 시간과 자원이 충분하다면 이러한 대안 중 어느 것도 원래 so-vits-svc가 생성한 우수한 결과와 경쟁할 수 없습니다. TTS의 경우 라는 새로운 도구가 환상적으로 작동하며 지난 달 최종 릴리스를 통해 이미 성숙해졌습니다. 예를 들어 오디오 콘텐츠 제작과 같이 매우 다양한 사용 사례가 있습니다. Bert-VITS2 데이터 세트 준비 데이터세트의 오디오 파일은 WAV 형식, 44100Hz, 16비트, 모노, 이상적으로는 1~2시간이어야 합니다. 노래에서 추출 는 이 작업을 위한 가장 쉬운 도구입니다. 모든 것을 자세히 설명하는 있습니다. Ultimate Vocal Remover 스레드가 UVR 작업흐름 Instrumental 제거 및 추출 모델 : VR - UVR(4_HP-Vocal-UVR) 설정: 512 - 10 - GPU 출력 및 부정한 보컬 악기 배경 보컬을 제거하고 추출합니다. 모델 : VR - UVR(5_HP-노래방-UVR) 설정: 512 - 10 - GPU 출력 과 깨끗하지 않은 메인 보컬 배경 보컬 리버브와 노이즈를 제거합니다. 모델: VR - UVR-DeEcho-DeReverb 및 UVR-DeNoise 설정: 512 - 10 - GPU - 없음 기타만 출력 클린 메인보컬 (선택 사항) RipX(무료)를 사용하여 수동 미세 청소를 수행합니다. 보컬 녹음 준비 콘덴서 마이크를 사용하여 처리된 방에서 녹음하는 것이 더 낫습니다. 그렇지 않으면 방향성 또는 동적 마이크를 사용하여 소음을 줄입니다. Cheapskate의 오디오 장비 제가 처음으로 음악에 입문한 것은 고등학교 시절 파란색 Sennheiser MX500과 Koss Porta Pro였습니다. Cool Edit Pro를 사용하여 Sony VAIO에 있는 노래를 처음으로 녹음했던 때를 아직도 기억합니다. 요즘 나는 아마추어로서 오디오 하드웨어에 많은 돈을 쓰는 것을 여전히 거부합니다. 왜냐하면 그것은 말 그대로 돈을 빨아들이는 블랙홀이기 때문입니다. 그럼에도 불구하고 이렇게 값싼 생산 장비의 신뢰성은 정말 감사합니다. 내 설정의 핵심 부분은 Behringer UCA202이며 내 사용 사례에 딱 맞습니다. 가격 인하 기간에 10달러에 구입했습니다. 소위 "오디오 인터페이스"이지만 기본적으로는 여러 포트가 있는 사운드 카드일 뿐입니다. 헤드폰에는 RCA-3.5mm TRS 케이블을 사용했고, 일반 출력에는 반개방형 K240을, 모니터 출력에는 폐쇄형 HD669/MDR7506을 사용했습니다. 언급된 세 가지 헤드폰 모두 정상 가격으로 100달러 미만입니다. 그리고 Samson, Tascam, Knox Gear 등의 클론 제품이 50달러 미만의 가격으로 판매되고 있습니다. 입력장치로는 주변 소음을 고려하여 다이나믹 마이크를 사용하고 있습니다. SM58 카피(Pyle) + Tascam DR-05 레코더(앰프용)입니다. SL84c 또는 wm58과 같은 다른 클론도 이를 수행합니다. XLR-3.5mm TRS 케이블을 사용하여 마이크를 레코더의 MIC/외부 입력에 연결한 다음 AUX 케이블을 사용하여 레코더의 라인 출력과 UCA202의 입력을 연결합니다. 내 설정을 복제하기 위해 "오디오 인터페이스"와 전용 앰프를 구입하는 것은 권장되지 않습니다. 10달러짜리 c-media USB 사운드 카드면 충분합니다. 제가 소유한 Syba 모델은 다이내믹 마이크를 직접 "프리앰핑"할 수 있으며 일부 저가형 팬텀 전원 마이크도 사용할 수 있습니다. 설정은 매우 저렴할 수 있지만($40~60) UCA202 및 DR-05를 사용하면 사운드가 훨씬 깨끗해집니다. 그리고 나는 기존의 좋은 디지털 레코더의 물리적 제어, 다용성 및 휴대성을 정말 좋아합니다. 대담한 작업 흐름 비록 디자이너로서 월급을 받았을 때 오디션에 꽤 만족했습니다. 그러나 재미있는 프로젝트에서 개인적으로 사용하는 경우 Audacity는 Adobe의 혼란스러운 악을 피하는 방법입니다. 소음 감소 반향 제거 침묵 자르기 정규화 오디오 슬라이서 나중에 사용할 수 있도록 또는 사용하여 오디오 파일을 작은 조각으로 분할합니다. 오디오 슬라이서 오디오 슬라이서(gui)를 기본 설정은 훌륭하게 작동합니다. 데이터세트 정리 매우 짧은 것을 제거하고 여전히 10초가 넘는 것을 다시 자릅니다. 데이터 세트가 큰 경우 4초 미만의 데이터를 모두 제거합니다. 작은 데이터 세트의 경우 2초 미만의 데이터만 제거합니다. 필요한 경우 모든 단일 파일에 대해 수동 검사를 수행합니다. 음량 일치 과 함께 Audacity를 다시 사용하십시오. 0db가 해야 합니다. Loudness Normalization so-vits-svc 환경 설정 하나의 시스템 내에서 여러 Python 도구를 실행하려면 가상 환경이 필수적입니다. 저는 VM과 Docker를 사용했지만 이제는 다른 것보다 훨씬 빠르고 편리하다는 것을 알았습니다. anaconda가 so-vits-svc에 대한 새 환경을 생성하고 활성화합니다. conda create -n so-vits-svc python=3.8 conda activate so-vits-svc 그런 다음 요구사항을 설치합니다. 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 로그/44k 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 로그/44k/확산 wget https://huggingface.co/datasets/ms903/Diff-SVC-refactor-pre-trained-model/resolve/main/fix_pitch_add_vctk_600k/model_0.pt (대체) wget https://huggingface.co/datasets/ms903/DDSP-SVC-4.0/resolve/main/pre-trained-model/model_0.pt (대체) wget https://huggingface.co/datasets/ms903/Diff-SVC-refactor-pre-trained-model/blob/main/hubertsoft_fix_pitch_add_vctk_500k/model_0.pt 사전 훈련/nsf_hifigan 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 데이터 세트 준비 준비된 모든 audio.wav 파일을 에 넣습니다. dataset_raw/character 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 구성 편집 파일은 에 있습니다. configs/config.json : 인쇄 빈도 로그 : 체크포인트 저장 빈도 : 총 단계 : 저장된 체크포인트 수, 0은 무제한입니다. : fp32 제 경우에는 : 작을수록 빠르며(거칠게), 클수록 느립니다(더 좋습니다). log interval eval interval epochs keep ckpts half_type batch_size VRAM당 권장 배치 크기: 4=6G; 6=8G; 10=12G; 14=16G; 20=24G 의 기본값을 유지합니다. configs/diffusion.yaml 훈련 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 학습 단계: 사용하여 기본 모델을 훈련합니다. 일반적으로 20k~30k를 사용할 수 있으며 50k 이상이면 충분합니다. GPU 속도에 따라 며칠이 걸릴 수 있습니다. train.py 자유롭게 눌러 중지하면 언제든지 다시 실행하여 학습을 계속합니다. ctrl+c python train.py -c configs/config.json -m 44k 확산 모델을 훈련하려면 사용하세요. 학습 단계는 기본 모델의 1/3에서 권장됩니다. train_diff.py 과도한 훈련에 주의하세요. 사용하여 플롯을 모니터링하여 플랫 상태인지 확인하세요. tensorboard --logdir=./logs/44k 필요한 경우 0.0001에서 0.00005로 변경합니다. learning rate 완료되면 추론을 위해 이러한 파일을 공유/전송합니다. 구성/ 구성.json 확산.yaml 로그/44k feature_and_index.pkl kmeans_10000.pt model_0.pt G_xxxxx.pt 추론 이제 훈련된 모델을 시험해 볼 시간입니다. 매개변수 조정의 편의성 때문에 Webui를 선호합니다. 하지만 실행하기 전에 LAN 액세스를 위해 에서 다음 줄을 편집하세요. webUI.py os.system("start http://localhost:7860") app.launch(server_name="0.0.0.0", server_port=7860) 실행합니다. 그런 다음 웹 브라우저에서 에 액세스합니다. python webUI.py ipaddress:7860 webui에는 영어 현지화가 없지만 도움이 될 것입니다. Immersive Translate가 대부분의 매개변수는 기본값과 잘 작동합니다. 변경하려면 및 참조하십시오. this this 을 다음 5개 파일을 업로드하세요. 및 해당 main model.pt config.json 및 해당 diffusion model.pt diffusion.yaml 말하기를 위한 클러스터 모델 또는 노래를 위한 기능 검색 . kmeans_10000.pt feature_and_index.pkl 는 말하기 전용이며 노래용이 아닙니다. 사용시 권장합니다. F0 predictor RMVPE 남성적인 목소리의 모델을 사용하여 여성적인 노래를 부를 때 유용하며, 그 반대의 경우도 마찬가지입니다. Pitch change 톤을 제어하는 방법입니다. 가장 선명한 음성을 얻으려면 사용하고 모델에 가장 가까운 톤을 얻으려면 사용하십시오. Clustering model/feature retrieval mixing ratio 0.1 0.9 약 으로 설정해야 하며, 단계에서 결과가 향상됩니다. shallow diffusion steps 50 30-100 오디오 편집 이 절차는 선택 사항입니다. 더 나은 노래를 만들기 위해서요. 내가 사용하고 있는 오디오 편집 소프트웨어, 즉 소위 DAW(디지털 오디오 워크스테이션)가 무료가 아니기 때문에 이에 대해 자세히 설명하지 않겠습니다. 업계 전체가 유료화되고 비공개 소스로 운영되고 있더라도 독점 소프트웨어를 옹호할 생각은 없습니다. Audacity는 멀티트랙, 효과 등을 지원합니다. 일부 고급 VST 플러그인도 로드합니다. Audacity로 노래를 마스터하는 방법에 대한 튜토리얼을 찾는 것은 어렵지 않습니다. 일반적으로 마스터링 프로세스는 믹싱/밸런싱, EQ/압축, 리버브, 이미징 순입니다. 도구가 고급화될수록 프로세스가 더 쉬워집니다. 앞으로 마스터링 과정에 Audacity를 채택하는 데 더 많은 시간을 할애할 것이며 모든 사람이 그렇게 할 것을 권장합니다. so-vits-svc-포크 실시간 지원이 가능한 so-vits-svc 이며, 모델이 호환됩니다. 사용하기는 더 쉽지만 확산 모델을 지원하지 않습니다. 전용 실시간 음성 변경을 위해서는 사용하는 것이 좋습니다. 포크 음성 변경 장치를 설치 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 준비 데이터세트 .wav 파일을 에 넣습니다. so-vits-svc-fork/dataset_raw svc pre-resample svc pre-config 에서 편집합니다. 이 포크는 원본보다 더 큰 크기입니다. configs/44k/config.json batch_size 훈련 svc pre-hubert svc train -t svc train-cluster 추론 와 함께 GUI를 사용하십시오. 이를 위해서는 로컬 데스크탑 환경이 필요합니다. svcg 또는 실시간으로 와 함께 CLI를 사용하고 . svc vc svc infer -m "logs/44k/xxxxx.pth" -c "configs/config.json" raw/xxx.wav DDSP-SVC so-vits-svc보다 더 적은 하드웨어 리소스를 필요로 하며 더 빠르게 실행됩니다. 실시간 모델과 확산 모델(Diff-SVC)을 모두 지원합니다. DDSP-SVC는 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 두 파일에 대한 참조하세요. 초기화 섹션을 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 추론 DDSP와 확산 모델이 모두 포함되어 있으므로 사용하는 것이 좋습니다. main_diff.py python main_diff.py -i "input.wav" -diff "model_xxxxxx.pt" -o "output.wav" 음성 복제를 위한 실시간 GUI: python gui_diff.py Bert-vits2-V2.3 이것은 위의 모든 것과 완전히 다른 TTS 도구입니다. 이를 사용하여 이미 부모님을 위해 내 목소리로 여러 오디오북을 만들었고 부모님이 정말 좋아하셨습니다. 사용하는 대신 더 쉬운 설정을 위해 의 포크를 사용했습니다. 원본을 v3u 초기화 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 사전 학습된 모델 다운로드(중국어, 일본어, 영어 포함): 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 캐릭터 모델 폴더 생성 mkdir -p Data/xxx/models/ 기본 모델 다운로드: !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 모든 으로 바꿔 편집합니다. bfloat16 float16 train_ms.py LAN 액세스를 위해 편집합니다. webui.py webbrowser.open(f"start http://localhost:7860") app.launch(server_name="0.0.0.0", server_port=7860) 및 에 대한 편집합니다. batch_size spk2id Data/xxx/config.json 준비 과 유사한 작업 흐름입니다. 이전 섹션 노이즈와 무음을 제거하고 정규화한 다음 슬라이스되지 않은 WAV 파일을 에 넣습니다. Data/xxx/raw , 및 에 대한 편집합니다. dataset_path num_workers keep_ckpts config.yml 실행하여 WAV 파일을 슬라이스합니다. python3 audio_slicer.py 2초 미만의 작은 파일을 제거하여 데이터 세트( )를 정리합니다. Data/xxx/raw 전사 속삭임 설치 pip install git+https://github.com/openai/whisper.git 언어 자동 감지를 끄려면 영어로만 설정하고 모델을 사용하세요. 아래와 같이 편집합니다. large short_audio_transcribe.py # 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) 실행하여 전사를 시작합니다. python3 short_audio_transcribe.py 분할된 데이터세트를 다시 샘플링합니다. python3 resample.py --sr 44100 --in_dir ./Data/zizek/raw/ --out_dir ./Data/zizek/wavs/ 전처리 전사: python3 preprocess_text.py --transcription-path ./Data/zizek/esd.list BERT 기능 구성 생성: python3 bert_gen.py --config-path ./Data/zizek/configs/config.json 훈련과 추론 실행하여 학습 시작 python3 train_ms.py 모델 경로에 대한 편집합니다. config.yml model: "models/G_20900.pth" 추론을 위해 webui를 시작하려면 실행하세요. python3 webui.py vits-simple-api 훈련된 모델을 사용하기 위한 웹 프런트엔드입니다. 나는 주로 원본 프로젝트에 없는 긴 텍스트 지원을 위해 이것을 사용합니다. vits-simple-api는 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 (선택 사항) 사전 학습된 모델 파일을 에서 로 복사합니다. Bert-vits2-V2.3/ vits-simple-api/bert_vits2/ 및 에 복사합니다. Bert-vits2-V2.3/Data/xxx/models/G_xxxxx.pth Bert-vits2-V2.3/Data/xxx/config.json vits-simple-api/Model/xxx/ 및 에 대한 원하는 대로 편집하세요. MODEL_LIST Default parameter config.py 아래와 같이 편집합니다. Model/xxx/config.json "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] 실행 python app.py 개조 음색의 , 무작위성의 , 발음의 , 속도의 입니다. 과 자명하다 SDP Ratio Noise Noise_W Length emotion style 모델 공유 에는 다른 사람들이 공유하는 VITS 모델이 많이 있습니다. 먼저 사용해 본 후 에서 원하는 모델을 다운로드할 수 있습니다. Hugging Face 저장소 파일 높은 품질로 인해 일부 콘텐츠 제작 커뮤니티에서 널리 사용됩니다. 수백 개의 문자가 포함되어 있지만 중국어와 일본어만 지원됩니다. Genshin 모델은 에는 인기 있는 중국 스트리머와 VTuber로 만든 Bert-vits2 모델이 많이 있습니다. 또 다른 저장소 이미 AI 브이튜버를 만드는 프로젝트도 있고 있습니다. 이 기술이 가까운 미래에 어떻게 업계를 변화시킬 수 있을지 기대됩니다. 이런 이런 것도 https://techshinobi.org/posts/voice-vits/https://techshinobi.org/posts/voice-vits/