はじめに
音声の特徴を別人のものに変えることができる、DDSP-SVCをMacで試した時の記録です。 今回はDDSP-SVCのコードと学習済みモデルを使って音声変換を試しました。
2024-02-24 : Ver5.0に合わせて更新を行いました。
環境について
動作環境は以下になります。
準備
pythonがインストールされていることが前提になります。
実行コードの準備
適当なディレクトリへ、以下のgitリポジトリからコードをクローンします。
ターミナルで任意のディレクトリに移動し、
git clone https://github.com/yxlllc/DDSP-SVC.git
を実行します。
または、DownloadZipでコードを直接ダウンロードし展開します。
CUDA以外で音声変換の処理を実行するためにencoder/rmvpe/inference.pyの以下のコードを変更します。
def __init__(self, model_path, hop_length=160): self.resample_kernel = {} model = E2E0(4, 1, (2, 2)) - ckpt = torch.load(model_path) + ckpt = torch.load(model_path, map_location=torch.device('cpu')) model.load_state_dict(ckpt['model'], strict=False) model.eval() self.model = model self.mel_extractor = MelSpectrogram(N_MELS, SAMPLE_RATE, WINDOW_LENGTH, hop_length, None, MEL_FMIN, MEL_FMAX) self.resample_kernel = {}
必要な訓練済みモデルのダウンロード
DDSP-SVCのリポジトリから訓練済みモデルをダウンロードします。
遷移先の以下の項目のContentVec、HuberSoft、NSF-HiFiGan、RMVPEをクリックしてダウンロードします。
2. Configuring the pretrained model Feature Encoder (choose only one): (1) Download the pre-trained ContentVec encoder and put it under pretrain/contentvec folder. (2) Download the pre-trained HubertSoft encoder and put it under pretrain/hubert folder, and then modify the configuration file at the same time. Vocoder or enhancer: Download the pre-trained NSF-HiFiGAN vocoder and unzip it into pretrain/ folder. Or use the https://github.com/openvpi/SingingVocoders project to fine-tune the vocoder for higher sound quality. Pitch extractor: Download the pre-trained RMVPE extractor and unzip it into pretrain/ folder.
「pretrain」に以下の構成になるように配置します。
モデルの準備
DDSP-SVCのモデルを準備します。 Google Colaboratroryで訓練する方法は以下になります。
学習済みのモデルと設定ファイルを同じディレクトリに配置する必要があります。 例として以下のようにモデルを配置していきます。
./exp ┗/model_name ┣モデル.pt ┗config.yml
環境の準備
実行のためのライブラリを準備します。
ターミナルでDDSP-SVCのディレクトリに移動して、仮装環境を構築します。
python -m venv venv
作成した仮装環境へ切り替えます。
. ./venv/bin/activate
必要なライブラリのインストールを行います。
pip install -r requirements.txt
以上で準備は完了です。
音声変換
以下のコマンドで音声変換を行います。
ver4.0、Ver5.0の場合
python main.py -i "変換する音声" -o "変換した音声の出力先" -diff "./exp/model_name/モデル.pt"
音声への処理とモデルによる変換が行われます。 初めて変換する音声の場合、音声への処理が長くなります。 二回目以降の変換では音声の要素への分解処理は、キャッシュを利用して省略されるため処理時間が短くなります。
キーを変更する場合は以下のように指定します。
python main.py -i "変換する音声" -o "変換した音声" -diff "./exp/model_name/モデル.pt" -k キーの値
ver2.0の場合(旧バージョン)
python main.py -i "変換する音声" -o "変換した音声の出力先" -m "./exp/model_name/モデル.pt"
キーを変更する場合は以下のように指定します。
python main.py -i "変換する音声" -o "変換した音声" -m "./exp/model_name/モデル.pt" -k キーの値
終わりに
モデル学習時のデータセット精度によりますが、RVCでは掠れた声になっていた箇所がしっかりと変換できていると感じました。 初回の音声の場合、多少時間がかかりますが、Macでも生成は十分に可能なことがわかりました。
最後に、関連するリポジトリをメンテナンスしている皆様に感謝いたします。