RAVE の公式実装: Antoine Caillon と Philippe Esling による、高速かつ高品質のニューラル オーディオ合成のための変分オートエンコーダー(記事リンク)。
音楽パフォーマンスやインスタレーションの一部として RAVE を使用する場合は、このリポジトリまたは記事を必ず引用してください。
RAVE について共有/議論/質問したい場合は、Discord サーバーで行うことができます。
問題を投稿する前に FAQ を確認してください。
RAVE VST Windows、Mac、Linux 用の RAVE VST は、対応するフォーラム IRCAM Web ページでベータ版として入手できます。問題がある場合は、ここまたはフォーラム IRCAM ディスカッション ページに問題を書いてください。
チュートリアル: 新しいチュートリアルはフォーラム IRCAM Web ページで入手でき、ビデオ版も近日公開予定です。
RAVE モデルの元の実装は、次を使用して復元できます。
git checkout v1
RAVEをインストールするには
pip install acids-rave
警告ライブラリ Web サイトで適切なバージョンの torch を選択できるように、 acids-rave
の前にtorch
とtorchaudio
インストールすることを強くお勧めします。新しいデバイス (および最新の Python 環境) との将来の互換性のために、 rave-acids
torch==1.13 を強制しなくなりました。
コンピュータにffmpegが必要です。次を使用して仮想環境内にローカルにインストールできます。
conda install ffmpeg
hexorcismos のおかげで、RAVEv2 をトレーニングするための colab が利用可能になりました。
RAVE モデルのトレーニングには、通常、データセットの準備、トレーニング、エクスポートという 3 つの個別のステップが含まれます。
通常と遅延という 2 つの方法を使用してデータセットを準備することができます。遅延前処理により、最初に変換せずに、RAW ファイル (mp3、ogg) で直接 RAVE をトレーニングできます。警告: データセットの遅延読み込みは、特に Windows でトレーニング中に CPU 負荷を大幅に増加させます。ただし、これは、非圧縮ではハード ドライブに収まらない大規模なオーディオ コーパスをトレーニングする場合に役立ちます。いずれの場合も、次を使用してデータセットを準備します。
rave preprocess --input_path /audio/folder --output_path /dataset/path --channels X (--lazy)
RAVEv2 にはさまざまな構成があります。 v1 の改良版はv2
と呼ばれるため、次のようにトレーニングできます。
rave train --config v2 --db_path /dataset/path --out_path /model/out --name give_a_name --channels X
SoundStream や EnCodec と同様の個別構成も提供します
rave train --config discrete ...
デフォルトでは、RAVE は非因果的畳み込みを使用して構築されます。モデルを因果関係にしたい場合 (したがって、モデルの全体的なレイテンシーを短縮したい場合)、因果モードを使用できます。
rave train --config discrete --config causal ...
2.3 の新機能であるデータ拡張も、低データ領域でのモデルの一般化を改善するために利用できます。 --augment
キーワードを使用して拡張構成ファイルを追加することで、データ拡張を追加できます。
rave train --config v2 --augment mute --augment compress
他の多くの設定ファイルがrave/configs
で利用可能であり、組み合わせることができます。利用可能なすべての構成と拡張のリストは次のとおりです。
タイプ | 名前 | 説明 |
---|---|---|
建築 | v1 | オリジナル連続モデル(最小GPUメモリ:8Go) |
v2 | 改良された連続モデル (より高速、高品質) (最小 GPU メモリ : 16Go) | |
v2_small | より小さな受容野、適応された敵対的トレーニング、および定常信号の音色転送に適応されたノイズ ジェネレーターを備えた v2 (最小 GPU メモリ : 8Go) | |
v2_nopqmf | (実験的) ジェネレーターに pqmf を含まない v2 (ベンディング目的でより効率的) (最小 GPU メモリ : 16Go) | |
v3 | リアル スタイル転送のためのスネーク アクティベーション、記述ディスクリミネーター、およびアダプティブ インスタンス正規化を備えた v2 (最小 GPU メモリ : 32Go) | |
離散 | ディスクリート モデル (SoundStream または EnCodec と同様) (最小 GPU メモリ : 18Go) | |
オンクス | onnx 使用のためのノイズレス v1 構成 (最小 GPU メモリ: 6Go) | |
ラズベリー | リアルタイムRaspberryPi 4推論に対応した軽量構成(最小GPUメモリ:5Go) | |
正規化 (v2 のみ) | デフォルト | 変分自動エンコーダ対物レンズ (ELBO) |
ワッサースタイン | Wasserstein オートエンコーダー対物レンズ (MMD) | |
球状 | 球面オートエンコーダ対物レンズ | |
ディスクリミネーター | spectral_discriminator | EnCodec の MultiScale 識別子を使用します。 |
その他 | 因果的な | 因果畳み込みを使用する |
ノイズ | ノイズ シンセサイザー V2 を有効にします | |
ハイブリッド | メルスペクトログラム入力を有効にする | |
拡張 | ミュート | データ バッチをランダムにミュートします (デフォルトの確率: 0.1)。モデルに沈黙を学習させる |
圧縮する | 波形をランダムに圧縮します(バッチの光非線形増幅に相当) | |
得 | 波形にランダムなゲインを適用します (デフォルト範囲: [-6, 3]) |
トレーニングが完了したら、次を使用してモデルを torchscript ファイルにエクスポートします。
rave export --run /path/to/your/run (--streaming)
--streaming
フラグを設定すると、キャッシュされた畳み込みが有効になり、モデルがリアルタイム処理と互換性を持つようになります。ストリーミング モードの使用を忘れて Max にモデルをロードしようとすると、クリック音が聞こえます。
離散モデルの場合、ここでユーザーをmsprior
ライブラリにリダイレクトします。ただし、このライブラリはまだ実験段階であるため、バージョン 1.x の以前のライブラリは v2.3 に再統合されています。
事前トレーニングされた RAVE モデルの事前学習をトレーニングするには:
rave train_prior --model /path/to/your/run --db_path /path/to/your_preprocessed_data --out_path /path/to/output
これにより、事前トレーニングされたモデルpath/to/your/run
のレイテンツに対して事前トレーニングが行われ、モデルとテンソルボードのログがフォルダー/path/to/output
に保存されます。
RAVE モデルとともに事前分布をスクリプト化するには、事前トレーニングされた事前分布に--prior
キーワードを指定してモデルをエクスポートします。
rave export --run /path/to/your/run --prior /path/to/your/prior (--streaming)
いくつかの事前トレーニング済みストリーミング モデルがここで利用できます。新しいモデルについてはリストを更新し続けます。
このセクションでは、Max/MSP または PureData でライブで使用するために、RAVE をnn~
内にロードする方法を説明します。
コンピューター上で利用可能なdarbouka.gin
という名前の事前トレーニング済み RAVE モデルは、次の構文を使用してnn~
内にロードできます。デフォルトのメソッドは転送 (つまり、エンコードしてからデコード) に設定されています。
これは次のパッチと同じことを行いますが、少し速くなります。
RAVE によって生成された潜在表現に明示的にアクセスできるため、Max/MSP または PureData 信号処理ツールを使用して表現を操作できるようになります。
デフォルトでは、RAVE はモデルの大きな圧縮率に基づいてスタイル転送ツールとして使用できます。最近、StyleGAN からインスピレーションを得た手法を追加して、アダプティブ インスタンス正規化を再構築プロセスに組み込み、 nn~
の属性システムを使用して、Max/MSP または PureData 内でソース スタイルとターゲットスタイルを直接定義できるようにします。
その他の属性 ( enable
やgpu
など) では、計算を有効/無効にしたり、GPU を使用して処理を高速化したりできます (まだ実験段階です)。
大量のファイルの変換を可能にするバッチ生成スクリプトが v2.3 でリリースされました。
rave generate model_path path_1 path_2 --out out_path
ここで、 model_path
はトレーニング済みモデル (オリジナルまたはスクリプト) へのパス、 path_X
オーディオ ファイルまたはディレクトリのリスト、 out_path
世代の出力ディレクトリです。
質問がある場合、RAVE での経験を共有したい場合、またはモデルで作成した音楽作品を共有したい場合は、ディスカッション タブを使用できます。
RAVE と maxmsp の nn~ 外部で何ができるかを示します。
puredata に nn~ を使用すると、RAVE を組み込みプラットフォームでリアルタイムに使用できます。
質問: 前処理がスタックし、 0it[00:00, ?it/s]
が表示されます。
回答: これは、データセット内のオーディオ ファイルが短すぎて、RAVE に十分な時間スコープを提供できないことを意味します。 --num_signal XXX(samples)
とpreprocess
を使用して信号ウィンドウを減らしてみてください。その後、 train
を使用して--n_signal XXX(samples)
を追加することを忘れないでください。
質問: トレーニング中に、 ValueError: n_components=128 must be between 0 and min(n_samples, n_features)=64 with svd_solver='full'
回答: これは、データセットにインターン潜在 PCA を計算するのに十分なデータ バッチがないことを意味します。それには、少なくとも 128 個のサンプル (その後バッチ) が必要です。
この研究は IRCAM で主導され、以下のプロジェクトから資金提供を受けています。