【Suno】マスタリングは大事だが自分でやってみる2回目【ACE-Step1.5】

以前の記事から変わった部分が大きいのでと言うか、サーバー側のデータが吹っ飛んだので作り直したのですが、大きく考え方が変わったので処理に関してずいぶん変わりました。
現状として、動画生成にGPUを回しっぱなしなのですが、780Mの方が空いているのでROCmで多少重くても高精度処理を行う方向でやってみているつもりでしたが、そんなに重い処理が無さそう。ただ、どうすべきかと言う部分がピンと来ていないので、ClaudeCodeに指示を出せない。ここら辺は知識が無いと何をしたらいいか分からないし、そもそも音楽を聴いていいか悪いかが分からない人にはマスタリングの修正も分からない。
処理も相変わらず全てClaudeCodeに丸投げなので、何の意味があってやっているのかもわからないが何となくは良くなったのかな?とりあえずサンプル。
まぁ、違うものにはなっているがこれ以上は何をどうしたら良いのか分からない。なので指示が出せない感じ。
と言うことで、以下、どんなことをしているかと言う説明です。ClaudeCodeに記事にしてもらいました。
AI Mastering v2 リファレンス
概要
AMD Radeon 780M (ROCm) を活用したAI生成音楽専用マスタリングシステム。
従来のマスタリングとは異なり、AI曲の特性を壊さずに品質を向上させることを目的とする。
設計思想
従来マスタリング vs AI曲マスタリング
| 観点 | 従来マスタリング | AI曲マスタリング v2 |
|------|-----------------|---------------------|
| 目的 | 問題を修正する | 調整する(壊さない) |
| アプローチ | 積極的なEQ/コンプ | 控えめな処理 |
| ノイズ | 除去する | 構成要素として保護 |
| ステム分離 | 有効 | 無効(位相破壊を防止) |
| 評価基準 | 音質向上 | 構造保存 + 音質向上 |
核心的原則
「AI曲では全てがノイズであり、全てが構成要素でもある」
AI生成音楽には「見えない関連性」が存在する:
余韻がテクスチャに埋め込まれている
楽器間の境界が曖昧
ステム分離すると位相関係が壊れる
このため、非破壊型処理を採用。
処理チェーン
入力(AI生成WAV)
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Phase 1: AI特性解析 │
│ ├─ AI生成器の判定(Suno/ACE-Step/Unknown) │
│ ├─ 高域カットオフ検出(通常15-17kHz) │
│ └─ ダイナミクス一貫性スコア │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Phase 2-5: 非破壊型AI処理 │
│ ├─ Mid/Side処理(空間調整) │
│ ├─ マルチバンド処理(周波数別調整) │
│ ├─ トランジェント補強(リズムの存在感) │
│ ├─ クラリティ強化(抜け改善) │
│ ├─ サチュレーション(暖かさ追加) │
│ └─ エキサイター(高域の輝き) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Phase 6: 位相補正 │
│ └─ 低域モノ化(100Hz以下) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Phase 7: 知覚品質検証 │
│ ├─ 構造保存スコア計算(Auraloss) │
│ └─ スコア < 0.85 の場合は処理強度を下げて再処理 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Phase 8: ラウドネス正規化 & リミッティング │
│ ├─ LUFS正規化(-14 LUFS) │
│ └─ True Peakリミッティング(-1.0 dBTP) │
└─────────────────────────────────────────────────────────────┘
│
▼
出力(マスタリング済みWAV)各処理の詳細
1. Mid/Side処理
目的: 空間の調整(奥行き感と存在感の両立)
原理:
Mid(中央)= (L + R) / 2 → ボーカル、ベース
Side(左右差)= (L - R) / 2 → ステレオ感、空間
設定:
`side_boost`: 0.12(Side成分を12%強化)
Midにはハイパスフィルタのみ(クラリティEQは後段で統一)
効果:
奥行き感を出しながら存在感を維持
「遠いけど薄くない」を実現
AI曲での注意:
過度なSideブーストは位相問題を起こす
控えめな設定が重要
2. マルチバンド処理
目的: 周波数帯域別の精密な調整
バンド構成:
| バンド | 範囲 | 処理 |
|--------|------|------|
| 低域 | < 250Hz | 軽いコンプ(締め) |
| 中域 | 250Hz - 4kHz | コンプ + 3kHzクラリティ |
| 高域 | > 4kHz | 圧縮なし(空気感保護) |
効果:
低域の締まり
中域のクラリティ
高域の自然さ維持
3. トランジェント補強
目的: リズムの「細切れ感」を軽減
問題: AI曲は余韻がテクスチャに埋め込まれており、トランジェントが弱い
アプローチ: パラレルコンプレッション
速いアタック(5ms)でトランジェントをキャッチ
短いリリース(50ms)
元の音とブレンド(sustain: 0.10 = 10%)
設定:
`transient_attack`: 0.08
`transient_sustain`: 0.10
効果:
パンチ感向上
つながり感向上
元のダイナミクスを破壊しない
4. クラリティ強化
目的: 厚みを維持したままクリアに
Web調査結果に基づく設計:
| 帯域 | 周波数 | 効果 | 注意 |
|------|--------|------|------|
| Sibilance | 5-8kHz | シャープ | 避ける(ハーシュ) |
| Air | 12-16kHz | 空気感・輝き | ブースト推奨 |
| Body | 200-400Hz | 暖かさ・太さ | カットしない |
設定:
`clarity_air_freq`: 12000Hz
`clarity_air_db`: 2.0dB(ハイシェルフ)
`clarity_presence_freq`: 3500Hz
`clarity_presence_db`: 1.0dB(控えめ)
`clarity_body_protect`: True(250Hzを+0.5dB)
処理方式: Mid/Side両方に同じ処理を均等適用
以前の問題:Midだけクリアになり、Sideとの差が気になる
解決:統一処理で均一なクラリティ
5. デノイズ(デフォルトOFF)
目的: AIヒス/ホワイトノイズの軽減
問題:
AI曲はホワイトノイズから生成されるため、特有のヒスが残る
しかし、デノイズは音を薄くする副作用がある
判断: デフォルトでOFF
音の太さを維持することを優先
必要な場合のみ有効化
有効化時の設定:
`denoise_highpass_freq`: 14000Hz(14kHz以上のみ)
`denoise_prop_decrease`: 0.2(控えめ)
`denoise_blend`: 0.3(元の音を70%維持)
6. サチュレーション
目的: 暖かさ・太さの追加
問題: AI曲は「デジタル臭い」「音が細い」
原理: テープサチュレーション風の倍音付加
tanh関数で柔らかいクリッピング
偶数倍音を生成(暖かさ)
設定:
`saturation_drive`: 0.15(控えめなドライブ)
`saturation_warmth_freq`: 250Hz(暖かさの中心)
`saturation_parallel`: 0.3(ドライ70% + サチュ30%)
パラレル処理の理由:
「ドライ信号の明瞭さを維持しながら、サチュレーションで厚みを加える」
7. ハーモニックエキサイター
目的: 高域の輝き・抜けの改善
問題: AI曲は15-17kHzでカットオフされ、こもって聞こえる
原理: Aural Exciter風の処理
高域にサチュレーションを適用
倍音を生成して「失われた高域」を補完
設定:
`exciter_freq`: 12000Hz(12kHz以上に適用)
`exciter_amount`: 0.25
周波数選択の理由:
8kHz: Sibilance帯域に近く、ハーシュになる
12kHz: Air帯域、自然な輝きを追加
8. 構造保存検証
目的: AI曲の特性を壊していないか確認
メトリクス:
構造保存スコア(Auraloss MelSTFTLoss)
スペクトル類似度
閾値:
`min_preservation_score`: 0.85
動作:
スコア < 0.85: 警告 + 処理強度を下げて再処理
スコア < 0.70: 元の音と50%ブレンド
9. ラウドネス正規化
目的: プラットフォーム準拠
設定:
| プラットフォーム | LUFS | True Peak |
|-----------------|------|-----------|
| Spotify | -14 | -1 dBTP |
| Apple Music | -16 | -1 dBTP |
| YouTube | -14 | -1 dBTP |
デフォルト: -14 LUFS / -1 dBTP(Spotify/YouTube向け)
確定パラメータ一覧
"ai_enhance": {
# 基本設定
"eq": 0.25,
"dynamics": 0.25,
"phase": 0.2,
# ステム分離(OFF - AI曲では位相を壊す)
"use_stems": False,
# Mid/Side処理
"use_midside": True,
"side_boost": 0.12,
# マルチバンド処理
"use_multiband": True,
"presence_band": (2000, 5000),
# ルーム補強(OFF - AI特性を壊す)
"room_enhance": False,
# トランジェント補強
"transient_enhance": True,
"transient_attack": 0.08,
"transient_sustain": 0.10,
# クラリティ強化
"clarity_enhance": True,
"clarity_air_freq": 12000,
"clarity_air_db": 2.0,
"clarity_presence_freq": 3500,
"clarity_presence_db": 1.0,
"clarity_body_protect": True,
# デノイズ(OFF - 音を薄くする)
"denoise_ai_hiss": False,
"denoise_stationary": True,
"denoise_prop_decrease": 0.2,
"denoise_freq_mask_smooth_hz": 500,
"denoise_highfreq_only": True,
"denoise_highpass_freq": 14000,
"denoise_blend": 0.3,
# サチュレーション
"saturation_enable": True,
"saturation_drive": 0.15,
"saturation_warmth_freq": 250,
"saturation_parallel": 0.3,
# エキサイター
"exciter_enable": True,
"exciter_freq": 12000,
"exciter_amount": 0.25,
}試行錯誤の履歴
失敗したアプローチ
| アプローチ | 問題 | 教訓 |
|-----------|------|------|
| ステム分離 | 音が薄くなる | AI曲では位相関係が壊れる |
| ルーム補強 | 構造保存スコア低下 | AI曲に「足す」処理は危険 |
| 8kHzエキサイター | ハーシュ | Sibilance帯域を避ける |
| 強いデノイズ | 音が薄くなる | 高域の倍音も削られる |
| Midだけクラリティ | 中心と周囲の差 | Mid/Side均等処理が必要 |
成功したアプローチ
| アプローチ | 効果 | 理由 |
|-----------|------|------|
| 非破壊型処理 | 構造保存 | ステム分離なしで位相を保護 |
| サチュレーション | 暖かさ | パラレル処理で明瞭さ維持 |
| 12kHzエキサイター | 抜け改善 | Air帯域で自然な輝き |
| デノイズOFF | 太さ維持 | AI曲ではノイズも構成要素 |
使用方法
from pipeline.mastering.engine_v2 import AIMasteringEngineV2
# AI曲専用モードでエンジン初期化
engine = AIMasteringEngineV2(
mode="ai_enhance", # AI曲専用モード
platform="spotify", # ターゲットプラットフォーム
min_preservation_score=0.85 # 構造保存閾値
)
# マスタリング実行
report = engine.process(
input_path="input.wav",
output_path="output.wav"
)
# 結果確認
print(f"構造保存スコア: {report.structure_preservation_score}")
print(f"検証合格: {report.validation_passed}")パフォーマンス
| 項目 | 値 |
|------|-----|
| バックエンド | ROCm (AMD Radeon 780M) |
| 処理速度 | 約16倍速(リアルタイム比) |
| 3分半の曲 | 約12秒で処理完了 |
参考資料
Web調査結果
Matchering - GitHub - リファレンスマッチング
Auraloss - GitHub - 知覚的損失関数
iZotope - Mastering EQ - EQガイドライン
Sound On Sound - Saturation - サチュレーション技術
How to improve Suno tracks - AI曲改善
周波数帯域リファレンス
| 帯域 | 範囲 | 特性 |
|------|------|------|
| Sub | 20-60Hz | 振動感 |
| Bass | 60-250Hz | 厚み、暖かさ |
| Low-Mid | 250-500Hz | ボディ(カットしない) |
| Mid | 500-2kHz | 明瞭さ |
| Upper-Mid | 2-4kHz | プレゼンス |
| Sibilance | 5-8kHz | シャープ(注意) |
| Air | 12-16kHz | 輝き、抜け |
| Brilliance | 16kHz+ | きらめき |
更新履歴
2024-XX-XX: v2.0 初版作成
AI曲専用非破壊型処理
サチュレーション/エキサイター追加
構造保存検証システム
SwitchBot公式ページ
クーポン「AF-4903」で5%引き(アフィリエイトクーポンになりますのでご協力お願いします)
割引の詳しい仕組みに関してはこちらのページを参照ください。