Suno SDK シリーズ 03:generate、extend、cover、歌詞、人声分離を本番でどう接続するか
Crazyrouter の Suno SDK は、単一のモデルではなく、複数の音楽生成・編集タスクをまとめたモデルファミリーとして扱うのが自然です。
主なモデルは次の通りです。
suno/generate
suno/extend
suno/upload-extend
suno/cover
suno/timestamped-lyrics
suno/vocal-separation
本番実装では、最初からすべてを UI に出すべきではありません。まず suno/generate を安定させ、その結果から得られる audio_url やタスク ID を確認してから派生機能を開放するのが安全です。
推奨する実装順序
1. suno/generate
2. 生成結果の audio_url ダウンロード検証
3. audioId / audio_url / task_id の保存
4. suno/extend
5. suno/upload-extend
6. suno/cover
7. timestamped-lyrics / vocal-separation
なぜなら、後続の機能は前段の生成結果に依存することが多いからです。generate の結果に安定した音声 URL や ID がなければ、extend や cover は UI 上で有効化すべきではありません。
バージョン指定
Suno 統一タスクでは、バージョンは model_version として指定します。
V5_5
V5
V4_5PLUS
V4_5ALL
V4_5
V4
古いルートで使われる mv と混同しないようにします。
generate の扱い
suno/generate は最初に接続すべき基本機能です。
用途:
歌詞から曲を作る
音楽スタイルの説明からデモ曲を作る
広告や動画用の短い音楽を生成する
プロダクト内のサンプル音源を作る
最小テストでは、タスク送信とポーリングに加えて、resultJson.data[0].audio_url のダウンロードまで確認します。
extend / cover の注意点
extend は既存音源を延長する機能、cover は既存音源を別スタイルに変換する機能として考えると分かりやすいです。
どちらも次の情報に依存します。
元の audio URL
元の task_id
上流が返す audioId 相当の識別子
これらがない場合、フロントエンドでボタンを表示しても失敗率が上がるだけです。
timestamped-lyrics と vocal-separation
時間付き歌詞や人声分離は、生成本体よりもフィールド依存が強い機能です。最初のリリースではオプション扱いにして、少数の実データで検証してから公開することを推奨します。
本番チェックリスト
| チェック | 合格条件 |
|---|---|
| 送信 |
task_id が返る |
| ポーリング | 終端状態を正しく処理する |
| ダウンロード |
audio_url が HTTP 200 を返す |
| ファイル検証 |
audio/* かつ十分なサイズ |
| 派生機能 | 必要な ID と URL が保存されている |
| 失敗分類 |
task_failed と content_unavailable を分ける |
まとめ
Suno SDK は、まず generate を安定させるところから始めるべきです。タスクが成功しただけでは不十分で、audio_url の取得、ダウンロード、保存までが最小の本番単位です。
その上で、extend、cover、時間付き歌詞、人声分離を段階的に開放するのが、最も事故の少ない進め方です。
