はじめに
SongGenは、テキストから曲への生成タスクのために設計された、オープンソースの単一ステージ自己回帰変換モデルです。SongGenは、歌詞、楽器の説明、音楽スタイル、ムード、音色など、幅広い音楽属性をきめ細かく制御することができる。ハイブリッド・モードではボーカルとバッキング・ボーカルを含むミックス・トラックを直接生成し、2トラック・モードでは後続のアプリケーション用にボーカルとバッキング・トラックを別々に生成します。このプロジェクトはまた、自動化されたデータ前処理パイプラインと、コミュニティへの参加と将来の研究を促進するために設計された効率的な品質管理メカニズムを提供する。
機能一覧
- テキストから曲への変換
- 歌詞、楽器の説明、音楽スタイル、ムード、音色のきめ細かなコントロールに対応
- サウンドクローン用に3秒間のリファレンスオーディオクリップを提供
- ミックス・モードおよびデュアル・トラック・モード出力
- 自動化されたデータ前処理パイプライン
- オープンソースのモデル重み、トレーニングコード、アノテーションデータ、処理パイプライン
ヘルプの使用
公式のインストールプロセス情報を提供してくれてありがとう!これに基づいて修正させていただきます。以下は、使用するために更新されたヘルプセクションです:
ヘルプの使用
設置プロセス
- クローン・プロジェクト・ウェアハウス
git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
- 新しいConda環境を作成し、アクティベートする:
conda create -n songgen python=3.9.18
condaでsonggenをアクティブにする
- CUDA 11.8と関連する依存関係をインストールします:
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
- SongGenは推論モードでのみ使用する:
pip install .
ダウンロード Checkpoints
xcodecとsonggenの訓練済みモデルのチェックポイントをダウンロードしてください。
走り推理
ハイブリッドモデル
- 必要なライブラリをインポートする:
インポートトーチ
インポート os
from songgen import (
VoiceBpeTokenizer、
SongGenMixedForConditionalGeneration、SongGenProcessor、SongGenMixedForConditionalGeneration、SongGenProcessor
ソングジェンプロセッサー
)
sfとしてサウンドファイルをインポート
- 訓練済みモデルをロードする:
ckpt_path = "..." #事前学習済みモデルへのパス
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = SongGenMixedForConditionalGeneration.from_pretrained(
ckpt_path、
attn_implementation='sdpa').to(device)
processor = SongGenProcessor(ckpt_path, device)
- 入力テキストと歌詞を定義する:
歌詞 = "..." #歌詞テキスト
テキスト = "..." # 音楽説明テキスト
ref_voice_path = 'path/to/your/reference_audio.wav' # 参照オーディオのパス、オプション
separate = True # 参照オーディオからボーカルトラックを分離するかどうか
- 曲を作る:
model_inputs = processor(text=text, lyrics=lyrics, ref_voice_path=ref_voice_path, separate=True)
generation = model.generate(**model_inputs, do_sample=True)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("songgen_out.wav", audio_arr, model.config.sampling_rate)
デュアルトラックモデル
- 必要なライブラリをインポートする:
インポートトーチ
インポート os
from songgen import (
VoiceBpeTokenizer、
SongGenDualTrackForConditionalGeneration、
ソングジェンプロセッサー
)
sfとしてサウンドファイルをインポート
- 訓練済みモデルをロードする:
ckpt_path = "..." #事前学習済みモデルへのパス
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = SongGenDualTrackForConditionalGeneration.from_pretrained(
ckpt_path、
attn_implementation='sdpa').to(device)
processor = SongGenProcessor(ckpt_path, device)
- 入力テキストと歌詞を定義する:
歌詞 = "..." #歌詞テキスト
テキスト = "..." # 音楽説明テキスト
ref_voice_path = 'path/to/your/reference_audio.wav' # 参照オーディオのパス、オプション
separate = True # 参照オーディオからボーカルトラックを分離するかどうか
- 曲を作る:
model_inputs = processor(text=text, lyrics=lyrics, ref_voice_path=ref_voice_path, separate=True)
generation = model.generate(**model_inputs, do_sample=True)
vocal_array = generation.vocal_sequences[0, :generation.vocal_audios_length[0]].cpu().numpy()
acc_array = generation.acc_sequences[0, :generation.acc_audios_length[0]].cpu().numpy()
min_len = min(vocal_array.shape[0], acc_array.shape[0])
vocal_array = vocal_array[:min_len].
acc_array = acc_array[:min_len].
audio_arr = vocal_array + acc_array
sf.write("songgen_out.wav", audio_arr, model.config.sampling_rate)
詳細な機能操作
- テキストから曲への変換歌詞と楽曲の説明を含むテキストを入力すると、モデルが対応する楽曲の音声を生成する。
- きめ細かなコントロールテキストに説明を入力することで、インストゥルメンテーション、スタイル、ムードなど、生成される曲の様々な属性をコントロールすることができます。
- サウンドクローニング3秒間のリファレンス・オーディオ・クリップが提供され、モデルはその音を模倣して曲を生成することができる。
- 出力モード選択ハイブリッドモードとデュアルトラックモードを使い分けることで、様々なシーンに柔軟に対応。
- データ前処理パイプライン自動化されたデータ前処理と品質管理により、生成された結果の高い品質を保証。