RoformerずApplioを䜿ったAIカバヌ曲の䜜り方

📢 この蚘事は gemini-3.5-flash によっお翻蚳されたした

音源を手に入れる

トレヌニングには、本物の無劣化音源぀たり pcm_f32le フォヌマットの音声ファむルを䜿うのがおすすめ。CDなどの物理アルバムを賌入しおむンポヌトするのが䞀番だね。やり方は https://www.bilibili.com/opus/925630344961458181 を参考にしおみお。ただし、flacには倉換せずにそのたたwav圢匏で出力しよう。

この蚘事ではRVCベヌスのApplioを䜿うよ。トレヌニングには、良い結果を埗るためにだいたい10分〜60分のクリヌンなボヌカル音源也声/ドラむバブルが必芁になる。でも、長くおも2時間は超えないようにしよう。あず、量より質が倧事「Garbage In, Garbage Outゎミを入力しおもゎミしか出おこない」だからね。

Youtube

YouTubeから音源を取埗する方法に぀いおだけど、yt-dlp を䜿っおダりンロヌドできる。ただ、ここから取埗する音源は有劣化フォヌマットからの倉換になるから、本物の無劣化音源ではないよ。

Github: yt-dlp/yt-dlp

最高音質のYouTube動画から音声をダりンロヌドするコマンド

1
yt-dlp -x --audio-format wav --audio-quality 0 --embed-thumbnail [video_url]

もし長めの音声10分以䞊なら、ffmpegを䜿っお分割できるよ。

1
ffmpeg -i input.wav -f segment -segment_time 600 -c copy output_%03d.wav

ここでは10分600秒ごずに分割しおいるけど、別の時間にするなら -segment_time 600 の数倀を倉曎しおね。

䞀぀のファむルに結合するには、たず filelist.txt を䜜っお、すべおのパヌツをリストアップする。

1
2
3
file 'output_000.wav'
file 'output_001.wav'
file 'output_002.wav'

それから、このコマンドで結合するよ。

1
ffmpeg -f concat -safe 0 -i filelist.txt -c copy finished.wav

特定の郚分だけをきれいに切り出したいずき、䟋えば10分から始めお15分間分を切り出したい堎合はこうする

1
ffmpeg -ss 00:10:00 -i input.wav -t 00:15:00 -c copy part1.wav

その他の゜ヌス

他の゜ヌスから入手した flac や mp3 などのフォヌマットの音楜は、ffmpegを䜿っお掚論甚にフォヌマット倉換しよう。

1
2
for %i in (*.flac) do ffmpeg -i "%i" "%~ni.wav"
for %i in (*.mp3) do ffmpeg -i "%i" "%~ni.wav"

でも、有劣化フォヌマットから無劣化フォヌマットに倉換したからずいっお、曲自䜓がロスレスになるわけじゃない。やっぱり物理アルバムから盎接取り出したwav音源を䜿うのが䞀番おすすめ。

ボヌカル也声の抜出

環境の構築

たずはMiniCondaをむンストヌルしよう。環境を䜜成しおアクティベヌトするよ。

1
2
conda create -n roformer python=3.12
conda activate roformer 

PyTorchのむンストヌル。

1
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

openmirlab/bs-roformer-infer のむンストヌル。

1
pip install bs-roformer-infer

nomadkaraoke/python-audio-separator のむンストヌル。

1
pip install audio-separator[gpu]

モデルのダりンロヌド

次のコマンドで、珟圚利甚可胜なモデルを確認できるよ。

1
2
3
bs-roformer-download --list-models
# audio-separator
audio-separator --list_models

2026幎5月21日時点での bs-roformer-download の出力はこんな感じ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Name                                                             Category      Checkpoint
-----------------------------------------------------------------------------------------
Roformer Model: BS Roformer SW by jarredou                       vocals        BS-Rofo-SW-Fixed.ckpt
Roformer Model: BS Roformer | Chorus Male-Female by Sucial       vocals        model_chorus_bs_roformer_ep_267_sdr_24.1275.ckpt
Roformer Model: BS Roformer | Instrumental Resurrection by unwa  instrumental  bs_roformer_instrumental_resurrection_unwa.ckpt
Roformer Model: BS Roformer | Male-Female by aufr33              vocals        bs_roformer_male_female_by_aufr33_sdr_7.2889.ckpt
Roformer Model: BS Roformer | Vocals Resurrection by unwa        vocals        bs_roformer_vocals_resurrection_unwa.ckpt
Roformer Model: BS Roformer | Vocals Revive V2 by Unwa           vocals        bs_roformer_vocals_revive_v2_unwa.ckpt
Roformer Model: BS Roformer | Vocals Revive V3e by Unwa          vocals        bs_roformer_vocals_revive_v3e_unwa.ckpt
Roformer Model: BS Roformer | Vocals Revive by Unwa              vocals        bs_roformer_vocals_revive_unwa.ckpt
Roformer Model: BS Roformer | Vocals by Gabox                    vocals        bs_roformer_vocals_gabox.ckpt
Roformer Model: BS-Roformer-De-Reverb                            dereverb      deverb_bs_roformer_8_384dim_10depth.ckpt

Available categories: dereverb, instrumental, vocals

各モデルの䞻な甚途はこんな感じ

  • BS Roformer SW by jarredou: bass、drums、guitar、instrumental、other、piano、vocalsの7぀の音軌マルチトラックに分離できる。
  • BS Roformer | Chorus Male-Female by Sucial: 男声、女声、そしおコヌラスを分離できる。
  • BS Roformer | Instrumental Resurrection by unwa: 䌎奏甚の超高音質再構築モデル。叀い曲の䌎奏を修埩する。
  • BS Roformer | Male-Female by aufr33: 男声ず女声を分離する。
  • BS Roformer | Vocals Resurrection by unwa: ボヌカルの超高音質再構築モデル。Reviveのよりアグレッシブなバヌゞョンで、叀い曲のボヌカルを修埩する。
  • BS Roformer | Vocals Revive Series: ボヌカル修埩モデル。画像の「超解像」みたいな感芚。
  • BS Roformer | Vocals by Gabox: 暙準的なボヌカル抜出モデル。最初のSWモデルが7぀のトラックに分けるのに察しお、これは䌎奏ずボヌカルの2぀だけに分離する。
  • BS-Roformer-De-Reverb: デリバヌブ残響陀去。

必芁なモデルをダりンロヌドしよう。ここでは2぀のモデルをダりンロヌドするけど、䞀郚ダりンロヌドリンクが切れおいるため、片方は別途ダりンロヌドする必芁があるよ。

1
2
3
bs-roformer-download --model "Roformer Model: BS Roformer SW by jarredou"
# 以䞋の内蔵ダりンロヌドリンクは珟圚倱効しおいる
bs-roformer-download --model "Roformer Model: BS-Roformer-De-Reverb"

デリバヌブ残響陀去モデルは huggingface.co で芋぀けるこずができるよ。リンクはこちら anvuew/dereverb_bs_roformer

モデルファむルず蚭定甚の yaml ファむルをダりンロヌドしお、察応するフォルダに配眮しおね。蚭定ファむルの yaml はモデルず同じファむル名にリネヌムしおおくのがおすすめ。

音声の凊理

ここでは3぀のステップで凊理を行うよ。たず BS Roformer SW by jarredou を䜿っおボヌカルを分離し、次に Roformer Model: MelBand Roformer | Karaoke V2 by Gabox でコヌラスを分離、最埌に Roformer Model: BS-Roformer-De-Reverb で残響を陀去しお、最終的なクリヌンなボヌカル也声を手に入れる。

もちろん、2番目ず3番目のステップは順序を入れ替えお詊しおみるのもあり。曲によっお最適な組み合わせが倉わるからね。

たずは入力甚ず出力甚のフォルダを䜜成しよう。今回は3ステップあるから、それぞれのステップ甚のフォルダを甚意するよ。

1
mkdir step1_input, step1_outputs, step2_input, step2_outputs, step3_input, step3_outputs

step1_input に音楜ファむルを入れようファむル名は英語掚奚。必ず無劣化ファむルのwav圢匏を䜿っおね。

<1> マルチトラック分離

BS Roformer SW by jarredou を䜿っおマルチトラックに分解する。モデルの yaml ファむルを線集しお、関連する蚭定を远加しおねパスは models/roformer-model-bs-roformer-sw-by-jarredou。

1
2
3
4
5
6
inference:
  batch_size: 16
  dim_t: 1101
  chunk_size: 352768
  num_overlap: 8
  normalize: false

これらの蚭定項目はマシンのスペックに合わせお調敎しおね。

  • batch_size: VRAMビデオメモリの容量に合わせお遞ぶ。メモリが倚いほど数倀を倧きくできる。䟋えば16GBのVRAMなら16に蚭定する。
  • dim_t: 倉曎しないでね。これはモデル蚓緎時の時間領域の次元数だよ。
  • chunk_size: ダりンロヌドした蚭定にこの項目がない堎合があるので、䞊の䟋のように 352768 を远加しお入力しおね。
  • num_overlap: VRAMの容量に合わせお2〜10の間で遞ぶ。
  • normalize: falseのたたにしおおく。

掚論を開始しよう

1
bs-roformer-infer --config_path models/roformer-model-bs-roformer-sw-by-jarredou/BS-Rofo-SW-Fixed.yaml --model_path models/roformer-model-bs-roformer-sw-by-jarredou/BS-Rofo-SW-Fixed.ckpt --input_folder ./step1_input --store_dir ./step1_outputs

掚論が終わったら、ファむル名が _vocals.wav で終わるファむルを2番目のステップの入力フォルダ step2_input に移動させおね。

(optional) MSSTずブレンドしおクオリティをさらに䞊げる

普通はどれか䞀぀だけでも十分な効果が埗られるけど、究極のクオリティを目指すなら、MSST-BSRNNを䞀床走らせおボヌカル音源 vocals_msst.wav を䜜り、それをRoformerで出力した vocals_roformer.wav ずステレオで融合ブレンドさせる方法がある。このブレンドしたファむルを䜿っお次のステップに進むんだ。融合には ffmpeg が盎接䜿えるよ。

1
ffmpeg -i vocals_roformer.wav -i vocals_msst.wav -filter_complex "amix=inputs=2:duration=longest:normalize=0" -c:a pcm_s16le vocals_combined.wav

パラメヌタの簡単な説明

  • normalize=0: 音声のディテヌルや音量が急激に倉化するのを防ぐため、動的オヌトボリュヌム調敎をオフにする。
  • -c:a pcm_s16le: ロスレス無劣化出力。

<2> ボヌカルの抜出・玔化

コヌラスを分離するためのモデルは、アヌキテクチャが異なるため audio-separator を䜿う。このツヌルを実行するず自動でダりンロヌドされるよ。

1
audio-separator ./step2_input --model_filename mel_band_roformer_karaoke_gabox_v2.ckpt --model_file_dir ./models/audio-separator-models --output_format WAV --output_dir ./step2_outputs

掚論が終わるず、Vocals がメむンボヌカル、Instrumental がコヌラスハモリになる。Vocals ファむルを3番目の入力フォルダ step3_input に入れよう。

<3> 空間のクレンゞングデリバヌブ

BS-Roformer-De-Reverb を䜿っおボヌカルの残響リバヌブを取り陀くよ。yaml の蚭定を調敎できる。

1
2
3
4
inference:
  batch_size: 16
  dim_t: 876
  num_overlap: 8

dim_t は倉曎せず、他の2぀の項目はVRAMに合わせお倉曎しおね。

掚論を開始

1
bs-roformer-infer --config_path ./models/roformer-model-bs-roformer-de-reverb/dereverb_bs_roformer_anvuew_sdr_22.5050.yaml --model_path ./models/roformer-model-bs-roformer-de-reverb/dereverb_bs_roformer_anvuew_sdr_22.5050.ckpt --input_folder ./step3_input --store_dir ./step3_outputs

掚論が終わるず、_noreverb.wav ずいう名前のファむルができあがる。これが最終的なクリヌンなボヌカル音源也声だよ。

(optional) 男声ず女声を分離する

もし男女のデュ゚ット曲なら、先に BS Roformer | Chorus Male-Female by Sucial を䜿っお声を分離しおから抜出するずいいよこのモデルは Sucial/Chorus_Male_Female_BS_Roformer からダりンロヌドできる。

1
bs-roformer-infer --config_path ./models/roformer-model-bs-roformer-chorus-male-female-by-sucial/model_chorus_bs_roformer_ep_267_sdr_24.1275.yaml --model_path ./models/roformer-model-bs-roformer-chorus-male-female-by-sucial/model_chorus_bs_roformer_ep_267_sdr_24.1275.ckpt --input_folder ./step3_input --store_dir ./step3_outputs

ボむスチェンゞ倉声

ApplioRVCアヌキテクチャを䜿っおボむスチェンゞ凊理を行うよ。

プロゞェクトのURL: IAHispano/Applio

むンストヌル

むンストヌルはすごく簡単。゜ヌスコヌドをクロヌンしよう。

1
git clone https://github.com/IAHispano/Applio.git

ルヌトディレクトリに移動しお run-install.bat を実行すれば、むンストヌルが始たるよ。

むンストヌルが終わったら、run-applio.bat を実行しお起動しよう。

モデルのトレヌニング

「Training」タブを遞んで、Model Settingsで新しい「Model Name」を䜜成する。

次に「Preprocess前凊理」モゞュヌルで新しいデヌタセットを䜜成し、いく぀かのクリヌンなボヌカル音源也声をアップロヌドする。アップロヌドが終わったら Preprocess Dataset をクリックしよう。

「Extract」モゞュヌルはデフォルトのたたでOK。Extract Features をクリック。

「Training」モゞュヌルでは、VRAMの容量に合わせおBatch Sizeを調敎しおね。

  • 8G: 4 たたは 8
  • 12-16G: 12-16
  • 24G-: 24-32

「Save Every Epoch」はデフォルトの10のたたで倧䞈倫。

「Total Epoch」は200〜300がおすすめ。䞀般的なデヌタセットなら、このくらいの゚ポック数で良い結果が出るよだいたい220〜250゚ポックあたりが䞀番良いモデルになるこずが倚い。ここを基準に増やしたり枛らしたりしおみおね。

調敎が終わったら芏玄に同意しお、トレヌニングを開始Start Trainingしよう。その埌、むンデックスを䜜成Generate Indexしよう。

掚論ボむスチェンゞの適甚

モデルのトレヌニングが終わったら、「Inference掚論」タブでボむスチェンゞを行うよ。モデルを遞択しよう。たずは200〜250゚ポックのモデルでテストしおみお、それから必芁に応じお゚ポック数を䞊げ䞋げするのがいいね。

「Advanced Settings詳现蚭定」の各オプションに぀いお

  • Split Audio: 音声ファむルを分割する蚭定。長い音声の堎合はVRAM溢れを防ぐためにチェックを入れる。3分皋床の短い曲なら、チェックを倖したほうがクオリティが高くなるかも。
  • Autotune(自劚电音/修音): オヌトチュヌン自動ピッチ補正/ケロケロ。歌の堎合はチェックを入れお、語りや独り蚀の堎合は倖しおおこう。
  • Clean Audio(音频降噪): ノむズ陀去。状況に合わせおチェックを入れおね。

その䞋の調敎スラむダヌ

  • Pitch(音高): キヌ調敎。男声を女声にするなら +12、女声を男声にするなら -12、同じなら 0 に。
  • Search Feature Ratio(检玢特埁占比/玢匕率): 特城量怜玢比率むンデックス比率。歌なら0.7〜0.8、ポッドキャストや長い語りなら0.6〜0.7がおすすめ。
  • Protect Voiceless Consonants(保技枅蟅音和呌吞声): 無声音やブレス音の保護。歌なら0.33前埌か0.5、その他なら0.5で調敎しおみお。

調敎が終わったら芏玄に同意しお、倉換Convertを開始しよう。

(オプション) ステレオ音声での掚論

Applioはモノラル出力しかできないから、ステレオ音声を入力するず仕䞊がりがすごく䞍自然になっちゃうんだ。だから、たずはチャンネルを分離しおから掚論しお、そのあず再床結合する方法をずるよ。

ffmpeg を䜿っおチャンネルを分離する。

1
ffmpeg -i input.wav -filter_complex "[0:a]pan=mono|c0=c0[left];[0:a]pan=mono|c0=c1[right]" -map "[left]" left.wav -map "[right]" right.wav

それぞれ個別に掚論したあず、ステレオに再結合する。

1
ffmpeg -i left_output.wav -i right_output.wav -filter_complex "[0:a][1:a]join=inputs=2:channel_layout=stereo[a]" -map "[a]" final_stereo.wav

(よくある質問) ポヌト競合問題

もしポヌトが䜿甚䞭占有ず衚瀺された堎合は、プログラムのルヌトディレクトリにある app.py を開いお、DEFAULT_PORT = 6969 を別の数倀に倉曎しよう。

Windowsの予玄枈みポヌトは避けるようにしおね。これらはPowerShellで次のコマンドを実行するず確認できるよ。

1
netsh int ipv4 show excludedportrange protocol=tcp

ミキシング

ボむスチェンゞしたボヌカル音源ず、最初の マルチトラック分離 ステップで分けた䌎奏むンストを合わせれば完成だよ。

コヌラスを分離しおあるから、たずは2番目のステップで分けたコヌラスず最初のステップの䌎奏をミックスしお「新しい䌎奏」を䜜り、その埌に ffmpeg でボヌカルず新しい䌎奏をミックスしおみるのもおすすめ。コマンドは同じで、以䞋のようになる

1
ffmpeg -i vocal.wav -i instrumental.wav -filter_complex amix=inputs=2:duration=longest output.wav

もちろん、完党にクリヌンなボヌカルドラむ音のたただず少し物足りないから、リバヌブ゚コヌを少し加えるずより良くなるよ。

1
ffmpeg -i vocal.wav -i instrumental.wav -filter_complex "[0:a]aecho=0.8:0.88:40:0.4[v_rev]; [v_rev][1:a]amix=inputs=2:duration=longest:normalize=1" -c:a pcm_s16le output.wav

aecho=0.8:0.88:40:0.4 のパラメヌタの意味はこんな感じ

  • 0.8: In Gain。入力音量、぀たり゚フェクタヌに入る前のボヌカルの音量。
  • 0.88: Out Gain。出力音量、リバヌブがかかった埌の党䜓の音量。
  • 40: Delays。遅延時間。音が壁に反射しお返っおくるたでの時間だね。
  • 0.4: Decays。枛衰係数。音に心地よい䜙韻残響の消え方を持たせる蚭定。

この蚭定は「シンプルな簡易スタゞオ」のような響きになるよ。もっずステヌゞっぜい広い感じにしたいなら aecho=0.8:0.88:80:0.5 に、ほんの少し埮調敎するくらいなら aecho=0.8:0.88:35:0.25 を䜿っおみおね。


䞊の䟋は均等なミックスだけど、それぞれの音量を別々に調敎しおミックスするこずもできるよ。

1
ffmpeg -i vocal.wav -i instrumental.wav -filter_complex "[0:a]volume=1.0[v]; [1:a]volume=0.4[b]; [v][b]amix=inputs=2:duration=longest:dropout_transition=0[a]" -map "[a]" output.wav

ここでは最初に入力した音声ボヌカルを100%の音量 [0:a]volume=1.0[v]、2番目の音声䌎奏を40%の音量 [1:a]volume=0.4[b] に蚭定しおいるよ。

リバヌブをかけ぀぀、䌎奏の音量も調敎したい堎合はこうなる

1
ffmpeg -i vocal.wav -i instrumental.wav -filter_complex "[0:a]aecho=0.8:0.88:35:0.25[v_rev]; [1:a]volume=0.8[bgm_v]; [v_rev][bgm_v]amix=inputs=2:duration=longest:normalize=1" -c:a pcm_s16le output.wav

おわりに

こういう「完党自動手動の調敎なし」での凊理は、だいたい3぀くらいのモデルで詊しおみたんだけど、正盎そこたで完璧な結果にはならなかった。やっぱり䞀郚の音源に぀いおは、少し手䜜業で手を入れお調敎しおあげたほうがクオリティは䞊がるず思う。

あず、ここで玹介した bs-roformer-infer は少し叀いツヌルだから、モデルが少なかったり、リンク切れでダりンロヌドできなかったりするこずが倚いんだ。もしタむミングがあれば、今床はもっず新しいツヌルを詊しおみお、たた蚘事にたずめお公開するね。

今回の蚘事は決しお完璧なものではないけれど、自分の勉匷の蚘録ずしお残しおおくよ。ブログっおそもそもこういうのを曞き残しおおくための堎所だしね

This post is licensed under CC BY-NC-SA 4.0 by the author.
最終曎新 2026-05-23 17:50 +0900

Visits Since 2025-02-28

Hugo で構築されおいたす。 | テヌマ Stack は Jimmy によっお蚭蚈されおいたす。