A Technologist who Cares about People
Walkthroughs, tutorials, guides, and tips. This story will teach you how to do something new or how to do something better.
目次
前回の投稿では、 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 は、この作業に最も簡単なツールです。すべてを詳細に説明するスレッドがあります。
モデル: 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 - なし その他のみ
クリーンなメインボーカルを出力
処理された部屋でコンデンサーマイクを使用して録音することをお勧めします。それ以外の場合は、ノイズを減らすために指向性マイクまたはダイナミックマイクを使用してください。
私が初めて音楽に興味を持ったのは高校生の時で、青いゼンハイザー 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 を使用すると、サウンドがはるかにクリーンになります。そして私は、昔ながらのデジタルレコーダーの物理的なコントロール、多機能性、携帯性がとても気に入っています。
とはいえ、デザイナーとして給料をもらっていた頃は、Audition にかなり満足していました。しかし、楽しいプロジェクトで個人的に使用する場合、Audacity は Adobe の混沌とした悪を回避する方法です。
audio-slicerまたはaudio-slicer (gui)を使用して、後で使用できるようにオーディオ ファイルを小さな部分にスライスします。
デフォルト設定はうまく機能します。
非常に短いものを削除し、まだ 10 秒を超えているものを再度スライスします。
データセットが大きい場合は、4 秒未満のものをすべて削除します。小さなデータセットの場合は、2 秒未満のみを削除します。
必要に応じて、すべての単一ファイルに対して手動検査を実行します。
ラウドネス正規化を使用して Audacity を再度使用します。 0dbでやるべきです。
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
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
(代替) 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
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
にあります。
log interval
: ログを出力する頻度eval interval
: チェックポイントを保存する頻度epochs
: 合計ステップkeep ckpts
: 保存されたチェックポイントの数、無制限の場合は 0。 half_type
: fp32 私の場合、 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
トレーニングのステップについて:
train.py
を使用してメイン モデルをトレーニングします。通常は 20k ~ 30k が使用可能で、50k 以上あれば十分です。 GPU の速度によっては、これに数日かかる場合があります。
ctrl+c
で自由に停止してください。いつでもpython train.py -c configs/config.json -m 44k
を再実行することでトレーニングが継続されます。
train_diff.py
使用して拡散モデルをトレーニングします。トレーニング ステップはメイン モデルの 1/3 で推奨されます。
オーバートレーニングには注意しましょう。 tensorboard --logdir=./logs/44k
を使用してプロットを監視し、平坦になるかどうかを確認します。
必要に応じて、 learning rate
0.0001 から 0.00005 に変更します。
完了したら、推論のためにこれらのファイルを共有/転送します。
config.json
diffusion.yaml
トレーニングされたモデルを試してみましょう。パラメーターを調整するのに便利なため、Webui の方が良いと思います。
ただし、起動する前に、LAN アクセス用にwebUI.py
内の次の行を編集します。
os.system("start http://localhost:7860") app.launch(server_name="0.0.0.0", server_port=7860)
python webUI.py
を実行します。次に、Web ブラウザからその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フォークであり、モデルには互換性があります。使いやすくなりましたが、拡散モデルはサポートされていません。リアルタイム音声変更専用の場合は、ボイスチェンジャーを推奨します。
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
svcg
で GUI を使用します。これにはローカルのデスクトップ環境が必要です。
または、リアルタイムにはsvc vc
を指定した CLI を使用し、生成にはsvc infer -m "logs/44k/xxxxx.pth" -c "configs/config.json" raw/xxx.wav
使用します。
DDSP-SVC は、 so-vits-svc よりも必要なハードウェア リソースが少なく、高速に実行されます。リアルタイム モデルと拡散モデル (Diff-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
これは、上記のものとはまったく異なる 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
を編集します。
python3 audio_slicer.py
を実行して、WAV ファイルをスライスします。
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"
python3 webui.py
を実行して、推論のために webui を開始します
vits-simple-api は、トレーニングされたモデルを使用するための Web フロントエンドです。私は主に、元のプロジェクトにはない長いテキストのサポートのためにこれを使用しています。
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
説明不要です
そのHugging Face リポジトリには、他の人が共有している VITS モデルが多数あります。まず試してから、ファイルから必要なモデルをダウンロードできます。
Genshin モデルは、その高品質のため、一部のコンテンツ作成コミュニティで広く使用されています。中国語と日本語のみがサポートされていますが、数百の文字が含まれています。
別のリポジトリには、人気の中国のストリーマーや VTuber から作られた Bert-vits2 モデルが多数あります。
すでにこのような AI Vtuber を作成するプロジェクトが存在します。この技術が近い将来、業界をどう変えるのか楽しみです。
https://techshinobi.org/posts/voice-vits/https://techshinobi.org/posts/voice-vits/
SoftVC VITS および Bert-VITS2 を使用して音声クローンを作成する方法: 詳細 | HackerNoon