Text-zu-Musik
Zwei Möglichkeiten, einen Song mit Gesang + Begleitung zu erstellen, gespeichert als MP3. Jede Anfrage produziert zwei Varianten.
- Generieren — ein neuer Song aus einer Musikbeschreibung plus Liedtext.
- Covern — einen vorhandenen Song in einem neuen Stil neu einsingen, wobei die Melodie erhalten bleibt. Liedtexte können der Originaltext (automatisch erkannt) oder neue sein.
Auslöser
- mach einen Song / Musik generieren / Text zu Musik / komponieren
- verwandle diese Liedtexte in einen Song / sing das / Jingle / Titellied / Geburtstagslied
- cover diesen Song / mach eine Jazz-Version / in einem anderen Stil neu machen
- 写歌 / 生成音乐 / 作曲 / 唱首歌 / 歌词谱曲 / 翻唱 / 改编 / 换个风格唱
Generieren — neuer Song aus Text
Eine Anfrage benötigt einen Prompt (die Musikbeschreibung) und genau eine Liedtext-Quelle:
# Lasse den Server Liedtexte zu einem Thema schreiben
python3 skills/text-to-music/scripts/t2m.py "upbeat indie pop, bright guitars, 120 BPM" \
--lyrics-prompt "ein Lied über Sommer-Roadtrips mit Freunden"
# Verwende eigene Liedtexte (inline oder aus einer Datei)
python3 skills/text-to-music/scripts/t2m.py "Mandopop-Ballade, Klavier und Streicher" \
--lyrics $'[Strophe]
窗外の雨停了
[Refrain]
我还在等你' --vocal-gender Female --title "雨停了"
python3 skills/text-to-music/scripts/t2m.py "lo-fi Hip Hop, entspannt, Vinyl-Knistern" \
--lyrics-file song.txt --duration 120 -o chill.mp3
# Modelliere den Gesang/Stil nach einem Referenzsong (lokale Datei ≤20 MB oder öffentliche URL)
python3 skills/text-to-music/scripts/t2m.py "verträumter Synth-Pop" --lyrics-file song.txt --ref-audio ./ref.mp3
Ausgabe: song_v1.mp3 und song_v2.mp3 (oder <Stamm>_v1.mp3 / <Stamm>_v2.mp3 mit -o). Wenn Liedtexte vom Server geschrieben wurden, werden sie auch in <Stamm>_lyrics.txt gespeichert.
| Argument | Standard | Beschreibung |
|---|---|---|
prompt | erforderlich | Musikbeschreibung: Genre, Stimmung, Instrumente, Tempo (≤1500 Zeichen) |
--lyrics / -l | — | Liedtext; [Strophe], [Refrain], [Brücke] Markierungen helfen bei der Strukturierung |
--lyrics-file | — | UTF-8 .txt Datei mit Liedtext (≤64 KB) |
--lyrics-prompt | — | Thema für die serverseitige Liedtexterstellung |
--tags | — | Stil-Tags, durch Kommata getrennt (≤50 Zeichen) |
--negative-tags | — | Zu vermeidende Stile |
--duration / -d | auto | Ziellängen-Hinweis: 60, 120 oder 180 Sekunden. Ein Hinweis, keine Garantie. |
--ref-audio | — | Referenzsong, lokaler Pfad oder öffentliche URL |
--lyrics, --lyrics-file und --lyrics-prompt schließen sich gegenseitig aus; eines ist erforderlich.
Covern — einen vorhandenen Song neu einsingen
Benötigt den Quellsong, Liedtext und eine Beschreibung des neuen Sounds (--style und/oder --prompt):
# Gleicher Liedtext, neuer Stil: Liedtext aus dem Original erkennen, dann covern
python3 skills/text-to-music/scripts/t2m.py cover original.mp3 \
--style "Jazz, rauchige weibliche Stimme" --recognize-lyrics -o jazz_cover.mp3
# Neuer Liedtext über der Originalmelodie, lockereres Arrangement
python3 skills/text-to-music/scripts/t2m.py cover https://example.com/song.mp3 \
--prompt "akustischer Folk, Fingerpicking-Gitarre, intim" --lyrics-file new_lyrics.txt \
--adherence main_melody --vocal-gender Male
# Nur Liedtext erkennen (zum Überprüfen oder Bearbeiten vor dem Covern)
python3 skills/text-to-music/scripts/t2m.py lyrics original.mp3 -o lyrics.txt
Empfohlener Ablauf, wenn der Benutzer Liedtexte anpassen möchte: lyrics ausführen → Datei bearbeiten → cover --lyrics-file.
| Argument | Standard | Beschreibung |
|---|---|---|
source | erforderlich | Originalsong: lokale Datei (≤100 MB; mp3/wav/m4a/aac/flac/ogg) oder öffentliche URL |
--style / -s | — | Kurze Stil-Tags, z.B. "Rock, männlicher Gesang" (≤50 Zeichen) |
--prompt / -p | — | Längere Beschreibung des Cover-Sounds (≤1500 Zeichen) |
--adherence | high | high = dem Originalarrangement eng folgen; main_melody = nur die Hauptmelodie behalten, mehr Freiheit |
--lyrics / -l | — | Zu singender Liedtext |
--lyrics-file | — | UTF-8 .txt Datei mit Liedtext (≤64 KB) |
--recognize-lyrics | aus | Liedtext der Quelle zuerst transkribieren und verwenden |
--output / -o | cover.mp3 | Ausgabepfad; Varianten erhalten _v1 / _v2 Suffixe |
Mindestens eines von --style / --prompt ist erforderlich; genau eine Liedtext-Quelle ist erforderlich.
Gemeinsame Argumente
| Argument | Standard | Beschreibung |
|---|---|---|
--title | — | Songtitel (≤80 Zeichen) |
--vocal-gender | — | Male oder Female |
--vocal-timbre | — | Freie Stimmbeschreibung, z.B. "rauchiger warmer Alt" (≤50 Zeichen) |
--output / -o | song.mp3 (cover.mp3 für Covers) | Ausgabepfad; Varianten erhalten _v1 / _v2 Suffixe |
--no-wait | aus | Einreichen, die Job-ID(s) ausgeben, dann beenden |
--poll-interval | 10 | Sekunden zwischen Statusabfragen |
--timeout | 1800 | Maximale Wartezeit in Sekunden (der Job läuft serverseitig weiter) |
--api-key | aus Umgebung/Konfiguration | Noiz API-Schlüssel (überschreibt gespeicherten Schlüssel) |
Fortsetzen / Überprüfen von Jobs
Die Generierung gibt zwei gen_product_ids aus; ein Cover gibt eine task_id aus. Falls die Wartezeit abläuft oder Sie --no-wait verwendet haben, setzen Sie fort mit:
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 # nur Status ausgeben
Der Status durchläuft submitted → running → succeeded / failed. Covers melden auch eine stage (Analyse läuft vor dem Gesang, daher dauern Covers länger). Download-URLs laufen nach ~24h ab; führen Sie status erneut aus, um neue zu erhalten.
Gute Prompts schreiben
- Prompt / Stil = der Sound: Genre + Stimmung + Instrumentierung + Tempo.
"cinematic orchestral pop, soaring strings, 90 BPM, hopeful". - Liedtexte: Abschnitte kurz halten und beschriften. Chinesische, englische und gemischte Liedtexte funktionieren alle.
- Kurze Songs: Für Jingles oder Grüße
-d 60übergeben und nur eine Strophe + Refrain schreiben. - Covers: Wählen Sie
high, um das Cover erkennbar zu halten; wählen Siemain_melodyfür einen größeren Genrewechsel. - Nicht zufrieden? Führen Sie es erneut aus – jeder Durchlauf gibt zwei frische Varianten.
Kosten
- Songs und Covers werden einmal pro Job abgerechnet (nicht pro Variante):
ceil(längste Variante in Sekunden) × 15Credits, belastet nachdem beide Varianten erfolgreich sind. Ein 2-minütiger Song kostet etwa 1.800 Credits. Wenn die Abonnement-Credits nicht den gesamten Job abdecken, wird er als Pay-as-you-go zu $0,00015/s abgerechnet. Das Skript gibt den berechneten Betrag bei Fertigstellung aus. - Liedtexterkennung (
lyrics/--recognize-lyrics): 100 Credits (oder $0,001 Pay-as-you-go), nur berechnet, wenn Gesang erkannt wird.
Ratenbegrenzungen: 5 Einreichungen pro Minute pro Schlüssel pro Endpunkt; Statusabfrage 60 pro Minute.
Einschränkungen
- Reine Instrumentalmusik wird nicht unterstützt – Liedtexte sind immer erforderlich.
--durationist nur ein Hinweis; die tatsächliche Länge kann abweichen. Covers folgen der Länge der Quelle.- Prompts oder Liedtexte, die sensible Inhalte enthalten, werden abgelehnt (
code=400).
Konfiguration
python3 skills/text-to-music/scripts/t2m.py config --set-api-key DEIN_SCHLÜSSEL
# oder
export NOIZ_API_KEY=DEIN_SCHLÜSSEL
Holen Sie sich Ihren API-Schlüssel unter developers.noiz.ai.
Anforderungen
- Python 3.6+
requestsPaket:uv pip install requests- Noiz API-Schlüssel von developers.noiz.ai
Sicherheit & Datenweitergabe
- API-Schlüssel: Gespeichert in
~/.config/noiz/api_key(Berechtigungen0600) oder über die UmgebungsvariableNOIZ_API_KEY. - Netzwerk: Prompts, Liedtexte und jegliche Referenz-/Quell-Audio (Datei-Upload oder URL) werden an
https://noiz.ai/v1/text-to-musicundhttps://noiz.ai/v1/text-to-music/cover*gesendet; der Job-Status wird von denselben Endpunkten abgefragt. Es werden keine anderen Daten übertragen. - Ausgabe: Generierte MP3s (und Liedtext-Textdateien) werden von signierten Noiz-Speicher-URLs heruntergeladen und am Ausgabepfad gespeichert. Es werden keine anderen Dateien geändert.