Communitygithub.com

文本转音乐

当用户想要通过文本描述和/或歌词生成带人声的歌曲或音乐,或者以新风格翻唱现有歌曲时使用此技能。

文本转音乐 是什么?

该技能使AI助手能够根据文本描述生成带有人声和伴奏的歌曲,并以MP3格式保存,每次请求提供两个变体。它支持两种模式:"生成"模式基于音乐描述和歌词创建全新歌曲;"翻唱"模式保留原有旋律,以新风格重新演绎现有歌曲,可以自动识别原歌词或使用新歌词。它适用于Claude Code等AI代理,通过Python脚本 `t2m.py` 操作,需要Python 3.6+、requests库和Noiz API密钥。生成的歌曲在服务器端处理,脚本提供状态检查和恢复功能,并支持通过ref-audio引用参考歌曲。此技能专为带人声的音乐生成设计,不适用于纯乐器音轨、短音效或语音旁白。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/NoizAI/skills/tree/HEAD/skills/text-to-music

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

文本转音乐 是做什么的?

两种方式生成带人声和伴奏的歌曲,保存为MP3。每个请求产生两个变体。

  • 生成——根据音乐描述和歌词创作全新歌曲。
  • 翻唱——以新风格重新演唱现有歌曲,保留其旋律。歌词可以是原歌词(自动识别)或新歌词。

触发词

  • 写歌 / 生成音乐 / 文本转音乐 / 作曲
  • 把这些歌词变成一首歌 / 唱首歌 / 广告歌 / 主题曲 / 生日歌
  • 翻唱这首歌 / 做爵士版 / 换个风格重制
  • make a song / generate music / text to music / compose
  • turn these lyrics into a song / sing this / jingle / theme song / birthday song
  • cover this song / make a jazz version / remake in another style

生成——从文本创作新歌

请求需要一个提示词(音乐描述)和恰好一个歌词来源:

# 让服务器根据主题写歌词
python3 skills/text-to-music/scripts/t2m.py "upbeat indie pop, bright guitars, 120 BPM" \
  --lyrics-prompt "a song about summer road trips with friends"

# 使用你自己的歌词(内联或从文件读取)
python3 skills/text-to-music/scripts/t2m.py "mandopop ballad, piano and strings" \
  --lyrics $'[Verse]\n窗外的雨停了\n[Chorus]\n我还在等你' --vocal-gender Female --title "雨停了"
python3 skills/text-to-music/scripts/t2m.py "lo-fi hip hop, mellow, vinyl crackle" \
  --lyrics-file song.txt --duration 120 -o chill.mp3

# 用参考歌曲塑造人声/风格(本地文件≤20 MB 或公共URL)
python3 skills/text-to-music/scripts/t2m.py "dreamy synth-pop" --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 文件(≤64 KB)
--lyrics-prompt—服务器端歌词创作的主题
--tags—风格标签,逗号分隔(≤50字符)
--negative-tags—要避免的风格
--duration / -d自动目标长度提示:60、120 或 180 秒。提示,非保证。
--ref-audio—参考歌曲,本地路径或公共URL

--lyrics、--lyrics-file 和 --lyrics-prompt 互斥;必须提供其中一个。

翻唱——重新演唱现有歌曲

需要源歌曲、歌词和新声音的描述(--style 和/或 --prompt):

# 相同歌词,新风格:从原曲识别歌词,然后翻唱
python3 skills/text-to-music/scripts/t2m.py cover original.mp3 \
  --style "jazz, smoky female vocal" --recognize-lyrics -o jazz_cover.mp3

# 新歌词搭配原曲旋律,更自由的编排
python3 skills/text-to-music/scripts/t2m.py cover https://example.com/song.mp3 \
  --prompt "acoustic folk, fingerpicked guitar, intimate" --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必填原始歌曲:本地文件(≤100 MB;mp3/wav/m4a/aac/flac/ogg)或公共URL
--style / -s—简短风格标签,例如 "rock, male vocal"(≤50字符)
--prompt / -p—翻唱声音的较长描述(≤1500字符)
--adherencehighhigh = 紧密遵循原曲编排;main_melody = 仅保留主旋律,更多自由度
--lyrics / -l—要唱的歌词
--lyrics-file—包含歌词的 UTF-8 .txt 文件(≤64 KB)
--recognize-lyrics关首先转录源歌词并使用它们
--output / -ocover.mp3输出路径;变体将添加 _v1 / _v2 后缀

至少需要 --style / --prompt 中的一个;恰好需要一个歌词来源。

共享参数

参数默认值描述
--title—歌曲标题(≤80字符)
--vocal-gender—Male 或 Female
--vocal-timbre—自由形式的声音描述,例如 "husky warm alto"(≤50字符)
--output / -osong.mp3(翻唱用 cover.mp3)输出路径;变体将添加 _v1 / _v2 后缀
--no-wait关提交,打印作业ID,然后退出
--poll-interval10状态检查间隔秒数
--timeout1800最长等待秒数(作业在服务器端继续运行)
--api-key来自环境/配置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小时后过期;重新运行 status 以获取新的URL。

编写好的提示词

  • 提示词/风格 = 声音:流派 + 情绪 + 乐器 + 速度。"cinematic orchestral pop, soaring strings, 90 BPM, hopeful"。
  • 歌词:保持段落简短并加上标签。中文、英文和混合歌词均可。
  • 短歌曲:对于广告歌或问候语,传递 -d 60 并只写一段主歌和副歌。
  • 翻唱:选择 high 以保持翻唱可识别;选择 main_melody 以进行更大的风格改变。
  • 不满意?重新运行——每次运行都会产生两个新鲜变体。

费用

  • 歌曲和翻唱按每次作业收费(而非按变体):ceil(最长变体秒数) × 15 积分,两个变体成功后扣费。一首2分钟的歌曲大约花费1,800积分。如果订阅积分不足以覆盖整个作业,则按即用即付计费,价格为 $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

在 developers.noiz.ai 获取您的API密钥。

要求

  • 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下载并保存到输出路径。不修改其他文件。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能