song-generation について
song-generation は each::sense を使い、ボーカルと伴奏を含む楽曲を生成するスキルです。歌詞、ジャンル、テンポ、声質、楽器を指定でき、モデルは自動で選択されます。
主な機能
- 01ボーカル入りの楽曲と伴奏生成
- 02短い音声や音楽の生成
- 03歌詞と曲構成の指定
- 04参考画像によるムード指定
- 05ストリーミングまたは一括応答
活用シーン
- 01コンセプトから歌入り楽曲を制作
- 02短いフックやイントロを生成
- 03画像に着想を得た楽曲を制作
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ awesome-genmedia/ skills --skill song-generationインストール後、Claude Code で/song-generationを入力して読み込まれたか確認します。
詳細
楽曲生成
each::sense を使って、ボーカルと完全なインストゥルメンタル制作を含む楽曲を生成します。each::sense は、リクエストに最適なモデルを自動で選択するインテリジェントな AI エージェントです。
クイックスタート
each::labs の API キーが必要です。eachlabs.ai で取得してください。
curl を使用する
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "Generate an upbeat indie pop song about road trips and summer freedom, female vocal, 120 BPM, with acoustic guitar, claps, and a catchy whistling hook in the chorus"}],
"stream": false
}'
Python を使用する(OpenAI SDK)
from openai import OpenAI
client = OpenAI(
api_key="YOUR_EACHLABS_API_KEY",
base_url="https://eachsense-agent.core.eachlabs.run/v1"
)
response = client.chat.completions.create(
model="eachsense/beta",
messages=[{"role": "user", "content": "Generate an upbeat indie pop song about road trips and summer freedom, female vocal, 120 BPM, with acoustic guitar, claps, and a catchy whistling hook in the chorus"}]
)
print(response.choices[0].message.content)
参照画像を使用する
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Generate a song inspired by the mood and atmosphere of this image. Match the emotion, whether it feels melancholy, joyful, or mysterious."},
{"type": "image_url", "image_url": {"url": "https://example.com/mood-photo.jpg"}}
]
}
],
"stream": false
}'
画像は OpenAI のマルチモーダルコンテンツ形式を使用して、メッセージ内に送信されます。1 リクエストにつき最大 4 枚の画像を送信できます。
ストリーミング
リアルタイムの SSE レスポンスには "stream": true を、単一のレスポンスで結果をすべて受け取るには "stream": false を設定します。ストリーミングは UI で進行状況を表示する場合に便利です。スクリプトや自動化には、ストリーミングを使わない方法がよりシンプルです。
利用可能なモデル
| モデル | 強み | 最適な用途 |
|---|---|---|
| mureka-generate-music | ボーカル、歌詞、プロダクションを含む楽曲全体の生成 | あらゆるジャンルの完成した楽曲 |
| stable-audio-2-5 | 高品質な短いオーディオの生成 | 短い音楽の断片、フック、イントロ |
each::sense が適切なモデルを自動で選択します。ボーカル入りの楽曲全体を生成する場合、主なモデルは mureka-generate-music です。
楽曲構成ガイド
標準的な楽曲構成
| 構成 | パターン | 長さ |
|---|---|---|
| ポップの標準構成 | ヴァース - コーラス - ヴァース - コーラス - ブリッジ - コーラス | 3-4 分 |
| シンプル | ヴァース - コーラス - ヴァース - コーラス | 2-3 分 |
| 拡張型 | イントロ - ヴァース - プリコーラス - コーラス - ヴァース - プリコーラス - コーラス - ブリッジ - コーラス - アウトロ | 4-5 分 |
| ヒップホップ | イントロ - ヴァース - フック - ヴァース - フック - ヴァース - フック - アウトロ | 3-4 分 |
| バラード | イントロ - ヴァース - ヴァース - コーラス - ヴァース - コーラス - アウトロ | 3-5 分 |
歌詞を指定する
構成を示すマーカーとともに、プロンプトに歌詞を直接含めます。
Generate a pop rock song, male vocal, 110 BPM:
[Verse 1]
Walking down these empty streets at dawn
Shadows fading as the night moves on
Every step I take leads back to you
Underneath this sky of fading blue
[Chorus]
We were golden, we were fire
Burning brighter, climbing higher
Now I'm standing in the rain
Chasing echoes of your name
ジャンルガイド
| ジャンル | 標準的な BPM | 主な特徴 | ボーカルスタイル |
|---|---|---|---|
| ポップ | 100-130 | キャッチーなフック、洗練されたプロダクション | クリアで明るく、ハーモニーを重ねた歌声 |
| ロック | 110-140 | エレキギター、力強いドラム | パワフルで生々しく、表情豊かな歌声 |
| ヒップホップ | 80-100 | 808 ベース、ハイハット、トラップビート | リズミカルなフロウ、ラップ |
| R&B | 60-90 | 滑らかなベース、豊かなコード | ソウルフルでメリスマを効かせた歌声 |
| カントリー | 90-130 | アコースティックギター、フィドル、スティールギター | 温かみがあり、物語を語るような歌声 |
| エレクトロニック | 120-150 | シンセサイザー、ドロップ、ビルドアップ | エフェクト処理、ボコーダー、チョップを施した歌声 |
| インディー | 100-130 | ローファイな質感、ジャングリーなギター | 親密で会話のような歌声 |
| ジャズ | 80-140 | スウィング、即興演奏、ブラス | 滑らかでスキャットを交えた歌声 |
プロンプトのヒント
ボーカルの指定
ボーカルの特徴を具体的に指定します。
"female vocal, alto range, smooth and breathy tone"
"male vocal, deep baritone, raspy rock voice"
"duet with male and female vocals trading verses"
"choir-style harmonies in the chorus"
ムードと感情
感情を表す特徴を重ねることで、よりニュアンスのある出力が得られます。
"bittersweet and nostalgic, like remembering a perfect day you can never return to"
"triumphant and empowering, building from quiet determination to explosive confidence"
楽器の詳細
細かくコントロールするには、具体的な楽器を列挙します。
"acoustic guitar, brush drums, upright bass, warm Rhodes piano, subtle strings"
"heavy distorted electric guitar, double kick drums, bass guitar, screaming lead solo"
例
カスタム歌詞を使ったポップソング
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "Generate an upbeat pop song, female vocal, 118 BPM, with synth bass and claps:\n\n[Verse 1]\nWoke up to the golden light\nEverything is feeling right\nGot my coffee, got my song\nNothing here can go wrong\n\n[Chorus]\nThis is our summer, this is our time\nDancing in the sunshine, feeling so alive\nWe are unstoppable, we are on fire\nTaking it higher and higher"}],
"stream": false
}'
ロックアンセム
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "Generate an arena rock anthem about never giving up. Male vocal with a gritty, powerful voice. 130 BPM. Driving electric guitar riff, pounding drums, bass guitar, and a massive singalong chorus. Think Foo Fighters meets Queen. 3 minutes long."}],
"stream": false
}'
ヒップホップトラック
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "Generate a chill hip-hop track about city nights and ambition. Male rap vocal with a smooth flow. 88 BPM. Dark trap beat with 808 bass, hi-hats, ambient synth pads, and a soulful R&B female vocal hook on the chorus. Moody and atmospheric."}],
"stream": false
}'
アコースティックバラード
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "Generate a tender acoustic ballad about saying goodbye to a childhood home. Female vocal, intimate and emotional. 72 BPM. Fingerpicked acoustic guitar, soft cello, and gentle piano. Build to a fuller arrangement in the final chorus with strings. Bittersweet and moving."}],
"stream": false
}'
ジングル/短い楽曲
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "Generate a 15-second catchy jingle for a coffee brand called Morning Brew. Upbeat and cheerful, male and female vocals harmonizing, ukulele and handclaps, with the tagline: Rise and brew, the best in you. Earworm melody that sticks."}],
"stream": false
}'
よくある落とし穴
- ボーカルの指示がない場合、ありきたりな歌声になります。性別、スタイル、エネルギーレベルを必ず指定してください。
- テンポを指定しない場合、モデルが BPM を推測するため、イメージと異なることがあります。BPM を指定してください。
- 構成を示すマーカーがない歌詞では、モデルがヴァースとコーラスを正しく割り当てにくくなります。
- ジャンルを混ぜすぎると(例:「ジャズ・メタル・カントリー・エレクトロニックの融合」)、出力の方向性がぼやけます。混ぜるジャンルは最大 2 つにしてください。
- 楽曲の長さを指定しないと、必要より短い、または長いクリップが生成されることがあります。
関連スキル
- 歌詞生成 — まず歌詞を生成し、その後に楽曲を制作します
- 音楽生成 — ボーカルのないインストゥルメンタルトラックを生成します
- 音声生成 — 話し声やナレーションの音声を生成します
- 効果音 — 制作物に効果音を重ねます
ドキュメント
コメント
Markdown 対応