文本转音乐 是做什么的?
两种方式生成带人声和伴奏的歌曲,保存为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字符) |
--adherence | high | high = 紧密遵循原曲编排;main_melody = 仅保留主旋律,更多自由度 |
--lyrics / -l | — | 要唱的歌词 |
--lyrics-file | — | 包含歌词的 UTF-8 .txt 文件(≤64 KB) |
--recognize-lyrics | 关 | 首先转录源歌词并使用它们 |
--output / -o | cover.mp3 | 输出路径;变体将添加 _v1 / _v2 后缀 |
至少需要 --style / --prompt 中的一个;恰好需要一个歌词来源。
共享参数
| 参数 | 默认值 | 描述 |
|---|---|---|
--title | — | 歌曲标题(≤80字符) |
--vocal-gender | — | Male 或 Female |
--vocal-timbre | — | 自由形式的声音描述,例如 "husky warm alto"(≤50字符) |
--output / -o | song.mp3(翻唱用 cover.mp3) | 输出路径;变体将添加 _v1 / _v2 后缀 |
--no-wait | 关 | 提交,打印作业ID,然后退出 |
--poll-interval | 10 | 状态检查间隔秒数 |
--timeout | 1800 | 最长等待秒数(作业在服务器端继续运行) |
--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下载并保存到输出路径。不修改其他文件。