前書き#
この記事では、vc-lm について簡単に紹介します。
vc-lm は音色変換器であり、どんな人の声でも数千種類以上の異なる声に変換することができます。
本文#
一、vc-lm とは何ですか#
このプロジェクトは音色変換器であり、どんな人の声でも数千種類以上の異なる声に変換することができます。音声をトークンに離散化するためにエンコーダを使用し、トークン上にトランスフォーマーモデルを構築します。このプロジェクトには 2 つの段階のモデル、AR モデルと NAR モデルが含まれています。自己教師ありの方法を使用して、大量の one-to-any のパラレルデータを生成し、これらのデータを使用して Any-to-One の声変換モデルを訓練することができます。目標の人のデータを訓練するには、わずか 10 分で十分な効果が得られます。
二、vc-lm のアルゴリズムアーキテクチャ#
論文 Vall-E を参考にし、エンコーダアルゴリズムを使用して音声をトークンに離散化し、トークン上にトランスフォーマーモデルを構築します。このプロジェクトには 2 つの段階のモデル、AR モデルと NAR モデルが含まれています。
三、vc-lm の使用とトレーニング#
vc-lm のトレーニングは 2 つのステップに分かれています。まず、one2any の生成データをトレーニングし、その後、これらのデータを使用して any2one の変換モデルをトレーニングします。
プレトレーニング:
tools/construct_wavs_file.py
を参考にして、wav ソースファイルを 10〜24 秒の長さに処理します。
tools/construct_dataset.py
を参考にして、データセットを構築します。
whisper からエンコーダモジュールを抽出するためにpython tools/extract_whisper_encoder_model.py --input_model=../whisper/medium.pt --output_model=../whisper-encoder/medium-encoder.pt
を使用します。
関連する保存パスを設定ファイルで調整し、AR モデルと NAR モデルをそれぞれトレーニングします:
python run.py fit --config configs/ar_model.yaml
python run.py fit --config configs/nar_model.yaml
トレーニングが完了したら、推論テストを行います:
from vc_lm.vc_engine import VCEngine
engine = VCEngine('/pathto/vc-models/ar.ckpt',
'/pathto/vc-models/nar.ckpt',
'../configs/ar_model.json',
'../configs/nar_model.json')
output_wav = engine.process_audio(content_wav,style_wav, max_style_len=3, use_ar=True)
any2one のトレーニング:
目標のデータセットを構築し、上記の方法と同様にします。
Any-to-one のパラレルデータを構築します:python tools.construct_parallel_dataset.py
。
プレトレーニングモデルをロードし、目標のデータセットでトレーニングします:
python run.py fit --config configs/finetune_ar_model.yaml
python run.py fit --config configs/finetune_nar_model.yaml
推論テストを行います:
from vc_lm.vc_engine import VCEngine
engine = VCEngine('/pathto/jr-ar.ckpt',
'/pathto/jr-nar.ckpt',
'../configs/ar_model.json',
'../configs/nar_model.json')
output_wav = engine.process_audio(content_wav,style_wav, max_style_len=3, use_ar=True)
四、まとめ#
公式プロジェクトには、ダウンロードして直接試すことができるプレトレーニング済みのモデルがあります。
注意点としては、このプロジェクトは TTS とは異なることに注意が必要です。vc-lm は音声の音色変換であり、少量の目標データを使用して微調整することで良好な変換効果を得ることができます。
最後に#
参考文献:
免責事項#
この記事は個人の学習記録として提供されています。
この記事はHBlogと同期しています。