目次 SoftVC VITS および Bert-VITS2 を使用した音声クローン作成の詳細 データセットの準備 曲からの抜粋 UVR ワークフロー ボーカル録音の準備 チープスケートのオーディオ機器 Audacity ワークフロー オーディオスライサー データセットのクリーニング ラウドネスを一致させる so-vits-SVC 環境をセットアップする 初期化 事前トレーニングされたモデルをダウンロードする データセットの準備 構成の編集 トレーニング 推論 音声編集 so-vits-svc-fork インストール 準備 トレーニング 推論 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 形式、44100 Hz、16 ビット、モノラル、理想的には 1 ~ 2 時間である必要があります。 曲から抜粋 、この作業に最も簡単なツールです。すべてを詳細に説明する があります。 Ultimate Vocal Remover は スレッド UVR ワークフロー インストゥルメンタルを削除して抽出します モデル: VR - UVR(4_HP-ボーカル-UVR) 設定: 512 - 10 - GPU 出力 メンタルと汚れたボーカル インストゥル バックグラウンドボーカルを削除して抽出します。 モデル: VR - UVR(5_HP-カラオケ-UVR) 設定: 512 - 10 - GPU とクリーンメインボーカルを出力 バックグラウンドボーカル 残響やノイズを除去します。 モデル: VR - UVR-DeEcho-DeReverb および UVR-DeNoise 設定: 512 - 10 - GPU - なし その他のみ を出力 クリーンなメインボーカル (オプション) RipX (無料) を使用して、手動による精密クリーニングを実行します。 ボーカル録音の準備 処理された部屋でコンデンサーマイクを使用して録音することをお勧めします。それ以外の場合は、ノイズを減らすために指向性マイクまたはダイナミックマイクを使用してください。 チープスケートのオーディオ機器 私が初めて音楽に興味を持ったのは高校生の時で、青いゼンハイザー MX500 とコス ポルタ プロを使っていました。 Sony VAIO にある曲を Cool Edit Pro を使って初めて録音したときのことを今でも覚えています。 今でもアマチュアとしてオーディオハードウェアに多額のお金をかけることに抵抗があります。それは文字通りお金を吸い取るブラックホールだからです。 それにもかかわらず、私はこれらの安価な製造装置の信頼性を本当に高く評価しています。 私のセットアップの中核となる部分は Behringer UCA202 であり、私のユースケースに最適です。値下げ中に10ドルで購入しました。 いわゆる「オーディオインターフェイス」ですが、基本的には複数のポートを備えた単なるサウンドカードです。ヘッドフォンには RCA - 3.5 mm TRS ケーブルを使用し、通常の出力にはセミオープンの K240 を、モニター出力にはクローズバックの HD669/MDR7506 を使用しました。 前述の 3 つのヘッドフォンはすべて、通常価格で 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 ワークフロー とはいえ、デザイナーとして給料をもらっていた頃は、Audition にかなり満足していました。しかし、楽しいプロジェクトで個人的に使用する場合、Audacity は Adobe の混沌とした悪を回避する方法です。 ノイズ減少 デリバーブ 沈黙を切り詰める ノーマライズ オーディオスライサー または を使用して、後で使用できるようにオーディオ ファイルを小さな部分にスライスします。 audio-slicer audio-slicer (gui) デフォルト設定はうまく機能します。 データセットのクリーニング 非常に短いものを削除し、まだ 10 秒を超えているものを再度スライスします。 データセットが大きい場合は、4 秒未満のものをすべて削除します。小さなデータセットの場合は、2 秒未満のみを削除します。 必要に応じて、すべての単一ファイルに対して手動検査を実行します。 ラウドネスの一致 を使用して Audacity を再度使用します。 0dbでやるべきです。 ラウドネス正規化 so-vits-SVC 環境をセットアップする 1 つのシステム内で複数の 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 完了したら、推論のためにこれらのファイルを共有/転送します。 構成/ config.json diffusion.yaml ログ/44k feature_and_index.pkl kmeans_10000.pt モデル_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) を実行します。次に、Web ブラウザからその にアクセスします。 python webUI.py ipaddress:7860 WebUI には英語ローカライズがありませんが、 が役立つでしょう。 Immersive Translate ほとんどのパラメーターはデフォルト値で適切に機能します。変更するには、 と を参照してください。 これ これ 次の 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-fork これはリアルタイム サポートを備えた 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 2 つのファイルについては、 を参照してください。 「初期化」セクション 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 推論 main_diff.py には 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 を編集して、すべての を に置き換えます。 train_ms.py bfloat16 float16 LAN アクセス用に 編集します。 webui.py webbrowser.open(f"start http://localhost:7860") app.launch(server_name="0.0.0.0", server_port=7860) を編集して、 と を設定します。 Data/xxx/config.json batch_size spk2id 準備 と同様のワークフロー。 前のセクション ノイズと無音部分を除去し、正規化してから、スライスされていない 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 トレーニングされたモデルを使用するための Web フロントエンドです。私は主に、元のプロジェクトにはない長いテキストのサポートのためにこれを使用しています。 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 Vtuber を作成するプロジェクトが存在します。この技術が近い将来、業界をどう変えるのか楽しみです。 この よう https://techshinobi.org/posts/voice-vits/https://techshinobi.org/posts/voice-vits/