テキストから音楽へ
ボーカル+伴奏付きの曲を作る二つの方法。MP3で保存されます。すべてのリクエストで二つのバリアントが生成されます。
- Generate(生成) — 音楽の説明と歌詞から新しい曲を作成。
- Cover(カバー) — 既存の曲を新しいスタイルで歌い直し、メロディーはそのまま維持。歌詞はオリジナル(自動認識)か新しいものを使えます。
トリガー
- 曲を作って / 音楽を生成して / テキストから音楽へ / 作曲して
- この歌詞を曲にして / 歌って / ジングル / テーマソング / 誕生日ソング
- この曲をカバーして / ジャズバージョンにして / 別のスタイルで作り直して
- 写歌 / 生成音乐 / 作曲 / 唱首歌 / 歌词谱曲 / 翻唱 / 改编 / 换个风格唱
Generate — テキストから新しい曲
リクエストにはプロンプト(音楽の説明)とちょうど一つの歌詞ソースが必要です。
# テーマからサーバーに歌詞を書かせる
python3 skills/text-to-music/scripts/t2m.py "アップビートなインディーポップ、明るいギター、120 BPM" \
--lyrics-prompt "友達との夏のロードトリップについての曲"
# 自分で書いた歌詞を使う(インラインまたはファイルから)
python3 skills/text-to-music/scripts/t2m.py "マンドポップバラード、ピアノとストリングス" \
--lyrics $'[Verse]\n窓の外の雨が止んだ\n[Chorus]\nまだ君を待っている' --vocal-gender Female --title "雨が止んだ"
python3 skills/text-to-music/scripts/t2m.py "ローファイヒップホップ、まったり、ビニールのノイズ" \
--lyrics-file song.txt --duration 120 -o chill.mp3
# 参照曲でボーカル/スタイルをモデリング(ローカルファイル20MB以下または公開URL)
python3 skills/text-to-music/scripts/t2m.py "ドリーミーなシンセポップ" --lyrics-file song.txt --ref-audio ./ref.mp3
出力: song_v1.mp3 と song_v2.mp3 (または -o 指定時は <stem>_v1.mp3 / <stem>_v2.mp3)。サーバーが歌詞を書いた場合、それらは <stem>_lyrics.txt にも保存されます。
| 引数 | デフォルト | 説明 |
|---|---|---|
prompt | 必須 | 音楽の説明:ジャンル、ムード、楽器、テンポ(1500文字以下) |
--lyrics / -l | — | 歌詞テキスト; [Verse]、[Chorus]、[Bridge] のマーカーで構造化を助ける |
--lyrics-file | — | UTF-8 .txt 歌詞ファイル(64KB以下) |
--lyrics-prompt | — | サーバー側の歌詞作成のためのテーマ |
--tags | — | スタイルタグ、カンマ区切り(50文字以下) |
--negative-tags | — | 避けるスタイル |
--duration / -d | 自動 | 目標長さのヒント:60、120、180 秒。ヒントであり、保証ではありません。 |
--ref-audio | — | 参照曲、ローカルパスまたは公開URL |
--lyrics、--lyrics-file、--lyrics-prompt は相互排他的です。いずれか一つが必要です。
Cover — 既存の曲を歌い直す
ソース曲、歌詞、新しいサウンドの説明(--style または --prompt)が必要です:
# 同じ歌詞、新しいスタイル:元の曲から歌詞を認識し、カバーする
python3 skills/text-to-music/scripts/t2m.py cover original.mp3 \
--style "ジャズ、スモーキーな女性ボーカル" --recognize-lyrics -o jazz_cover.mp3
# 元のメロディーに新しい歌詞、より自由なアレンジ
python3 skills/text-to-music/scripts/t2m.py cover https://example.com/song.mp3 \
--prompt "アコースティックフォーク、フィンガーピッキングギター、親密な" --lyrics-file new_lyrics.txt \
--adherence main_melody --vocal-gender Male
# 歌詞のみ認識(カバー前に確認または編集するため)
python3 skills/text-to-music/scripts/t2m.py lyrics original.mp3 -o lyrics.txt
ユーザーが歌詞を編集したい場合のおすすめフロー: lyrics を実行 → ファイルを編集 → cover --lyrics-file。
| 引数 | デフォルト | 説明 |
|---|---|---|
source | 必須 | 元の曲:ローカルファイル(100MB以下;mp3/wav/m4a/aac/flac/ogg)または公開URL |
--style / -s | — | 短いスタイルタグ、例:"ロック、男性ボーカル"(50文字以下) |
--prompt / -p | — | カバーのサウンドの長い説明(1500文字以下) |
--adherence | high | high = 元のアレンジに忠実に従う;main_melody = メインメロディーのみ保持し、より自由に |
--lyrics / -l | — | 歌う歌詞 |
--lyrics-file | — | UTF-8 .txt 歌詞ファイル(64KB以下) |
--recognize-lyrics | off | ソースの歌詞を最初に書き起こして使用する |
--output / -o | cover.mp3 | 出力パス;バリアントには _v1 / _v2 の接尾辞が付く |
--style / --prompt の少なくとも一方が必要です。歌詞ソースは一つだけ必要です。
共通引数
| 引数 | デフォルト | 説明 |
|---|---|---|
--title | — | 曲のタイトル(80文字以下) |
--vocal-gender | — | Male または Female |
--vocal-timbre | — | 自由形式の声の説明、例:"ハスキーで温かみのあるアルト"(50文字以下) |
--output / -o | song.mp3(カバーの場合は cover.mp3) | 出力パス;バリアントには _v1 / _v2 の接尾辞が付く |
--no-wait | off | ジョブを送信し、ジョブIDを表示して終了 |
--poll-interval | 10 | ステータス確認の間隔(秒) |
--timeout | 1800 | 最大待機時間(秒)(ジョブはサーバー上で実行され続ける) |
--api-key | env/configから | Noiz APIキー(保存済みキーを上書き) |
ジョブの再開 / 確認
生成では二つの gen_product_id、カバーでは一つの task_id が出力されます。待機がタイムアウトした場合や --no-wait を使用した場合は、以下で再開します:
python3 skills/text-to-music/scripts/t2m.py status <id_v1> <id_v2> -o song.mp3
python3 skills/text-to-music/scripts/t2m.py status --cover <task_id> -o cover.mp3
python3 skills/text-to-music/scripts/t2m.py status --cover <task_id> --no-wait # ステータスのみ表示
ステータスは submitted → running → succeeded / failed と遷移します。カバーは stage も報告します(分析が歌唱の前に行われるため、カバーは時間がかかります)。ダウンロードURLは約24時間で期限切れになります。新しいURLを取得するには status を再実行してください。
良いプロンプトを書くために
- プロンプト / スタイル = サウンド:ジャンル+ムード+楽器構成+テンポ。
"シネマティックオーケストラポップ、高揚するストリングス、90 BPM、希望に満ちた"。 - 歌詞:セクションを短く保ち、ラベルを付けてください。中国語、英語、混在した歌詞もすべて動作します。
- 短い曲:ジングルや挨拶用の場合は、
-d 60を渡し、バースとコーラスのみを書いてください。 - カバー:認識可能なカバーにするには
highを選び、大きなジャンル変更にはmain_melodyを選んでください。 - 満足できない場合?もう一度実行してください — 毎回新しい二つのバリアントが生成されます。
料金
- 曲とカバーはジョブごとに一回課金されます(バリアントごとではありません):
ceil(最も長いバリアントの秒数) × 15クレジット。両方のバリアントが成功した後に課金されます。2分の曲の場合、約1800クレジットかかります。サブスクリプションクレジットがジョブ全体をカバーしない場合、従量課金として $0.00015/秒 で課金されます。スクリプトは完了時に課金額を表示します。 - 歌詞認識(
lyrics/--recognize-lyrics):100クレジット(または従量課金 $0.001)。ボーカルが検出された場合のみ課金されます。
レート制限:キーあたり、エンドポイントあたり、毎分5サブミッション。ステータスポーリングは毎分60回。
制限事項
- 純粋なインストゥルメンタル音楽はサポートされていません — 常に歌詞が必要です。
--durationはあくまでヒントです。実際の長さは異なる可能性があります。カバーはソースの長さに従います。- センシティブなコンテンツを含むプロンプトや歌詞は拒否されます(
code=400)。
設定
python3 skills/text-to-music/scripts/t2m.py config --set-api-key YOUR_KEY
# または
export NOIZ_API_KEY=YOUR_KEY
APIキーは developers.noiz.ai で取得してください。
必要条件
- Python 3.6+
requestsパッケージ:uv pip install requests- developers.noiz.ai からの Noiz APIキー
セキュリティとデータ開示
- APIキー:
~/.config/noiz/api_keyに保存(パーミッション0600)またはNOIZ_API_KEY環境変数経由。 - ネットワーク:プロンプト、歌詞、参照/ソース音声(ファイルアップロードまたはURL)は
https://noiz.ai/v1/text-to-musicおよびhttps://noiz.ai/v1/text-to-music/cover*に送信されます。ジョブステータスは同じエンドポイントからポーリングされます。その他のデータは送信されません。 - 出力:生成されたMP3(および歌詞テキストファイル)は署名付きのNoizストレージURLからダウンロードされ、出力パスに保存されます。他のファイルは変更されません。