Musik mit Lyria 3 generieren
Lyria 3 ist die Familie der Musikgenerierungsmodelle von Google, die über die Gemini API verfügbar ist. Mit Lyria 3 können Sie aus Text-Prompts oder Bildern hochwertiges Stereo-Audio mit 44,1 kHz generieren. Diese Modelle liefern strukturelle Kohärenz, einschließlich Gesang, zeitgesteuerter Songtexte und vollständiger Instrumentalarrangements.
Die Lyria 3-Familie umfasst zwei Modelle:
| Modell | Modell-ID | Optimal für | Dauer | Ausgabe |
|---|---|---|---|---|
| Lyria 3 Clip | lyria-3-clip-preview |
Kurze Clips, Loops, Vorschauen | 30 Sekunden | MP3 |
| Lyria 3 Pro | lyria-3-pro-preview |
Songs in voller Länge mit Strophen, Refrains und Bridges | Ein paar Minuten (über Prompt steuerbar) | MP3 |
Beide Modelle können mit der neuen Interactions API, die multimodale Eingaben (Text und Bilder) unterstützt und 44,1 kHz Stereo-Audio erzeugt.
Musikclip generieren
Das Modell Lyria 3 Clip generiert immer einen 30-sekündigen Clip. Rufen Sie zum Generieren eines Clips die Methode interactions.create mit einem Text-Prompt auf. Die Antwort enthält immer den generierten Songtext und die Songstruktur sowie das Audio im steps-Schema.
Python
import base64
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="lyria-3-clip-preview",
input="Create a 30-second cheerful acoustic folk song with guitar and harmonica.",
)
for step in interaction.steps:
if step.type == "model_output":
for content_block in step.content:
if content_block.type == "audio":
print(f"Generated audio with mime_type: {content_block.mime_type}")
with open("music.mp3", "wb") as f:
f.write(base64.b64decode(content_block.data))
elif content_block.type == "text":
print(f"Lyrics: {content_block.text}")
JavaScript
import { GoogleGenAI } from '@google/genai';
import * as fs from 'fs';
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: 'lyria-3-clip-preview',
input: 'Create a 30-second cheerful acoustic folk song with ' +
'guitar and harmonica.',
});
for (const step of interaction.steps) {
if (step.type === 'model_output') {
for (const contentBlock of step.content) {
if (contentBlock.type === 'audio') {
console.log(`Generated audio with mime_type: ${contentBlock.mimeType}`);
fs.writeFileSync('music.mp3', Buffer.from(contentBlock.data, 'base64'));
} else if (contentBlock.type === 'text') {
console.log(`Lyrics: ${contentBlock.text}`);
}
}
}
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"model": "lyria-3-clip-preview",
"input": "Create a 30-second cheerful acoustic folk song with guitar and harmonica."
}'
Song in voller Länge generieren
Mit dem Modell lyria-3-pro-preview können Sie Songs in voller Länge generieren, die ein paar Minuten dauern. Das Pro-Modell versteht die musikalische Struktur und kann Kompositionen mit unterschiedlichen Strophen, Refrains und Bridges erstellen. Sie können die
Dauer beeinflussen, indem Sie sie in Ihrem Prompt angeben (z.B. „Erstelle einen Song mit einer Länge von 2 Minuten“) oder
Zeitstempel verwenden, um die Struktur zu definieren.
Python
interaction = client.interactions.create(
model="lyria-3-pro-preview",
input="An epic cinematic orchestral piece about a journey home. Starts with a solo piano intro, builds through sweeping strings, and climaxes with a massive wall of sound.",
)
JavaScript
const interaction = await client.interactions.create({
model: 'lyria-3-pro-preview',
input: 'An epic cinematic orchestral piece about a journey home. ' +
'Starts with a solo piano intro, builds through sweeping ' +
'strings, and climaxes with a massive wall of sound.',
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"model": "lyria-3-pro-preview",
"input": "An epic cinematic orchestral piece about a journey home. Starts with a solo piano intro, builds through sweeping strings, and climaxes with a massive wall of sound."
}'
Ausgabeformat auswählen
Standardmäßig generieren die Lyria 3-Modelle Audio im MP3 -Format. Für Lyria 3 Pro können Sie die Ausgabe auch im WAV -Format anfordern, indem Sie response_mime_type festlegen.
Python
interaction = client.interactions.create(
model="lyria-3-pro-preview",
input="An atmospheric ambient track.",
response_modalities=["audio", "text"],
response_mime_type="audio/wav",
)
JavaScript
const interaction = await client.interactions.create({
model: 'lyria-3-pro-preview',
input: 'An atmospheric ambient track.',
responseModalities: ["audio", "text"],
responseMimeType: "audio/wav",
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "lyria-3-pro-preview",
"input": "An atmospheric ambient track.",
"responseModalities": ["audio", "text"],
"responseMimeType": "audio/wav"
}'
Antwort analysieren
Die Antwort von Lyria 3 enthält mehrere Inhaltsblöcke im steps-Schema.
Interaktionen geben eine Abfolge von Schritten zurück, wobei model_output-Schritte den generierten Inhalt enthalten.
Textinhaltsblöcke enthalten den generierten Songtext oder eine JSON-Beschreibung der Songstruktur.
Inhaltsblöcke mit dem Typ audio enthalten die Base64-codierten Audiodaten.
Python
lyrics = []
audio_data = None
for step in interaction.steps:
if step.type == "model_output":
for content_block in step.content:
if content_block.type == "audio":
audio_data = base64.b64decode(content_block.data)
elif content_block.type == "text":
lyrics.append(content_block.text)
if lyrics:
print("Lyrics:\n" + "\n".join(lyrics))
if audio_data:
with open("output.mp3", "wb") as f:
f.write(audio_data)
JavaScript
const lyrics = [];
let audioData = null;
for (const step of interaction.steps) {
if (step.type === 'model_output') {
for (const contentBlock of step.content) {
if (contentBlock.type === 'audio') {
audioData = Buffer.from(contentBlock.data, 'base64');
} else if (contentBlock.type === 'text') {
lyrics.push(contentBlock.text);
}
}
}
}
if (lyrics.length) {
console.log("Lyrics:\n" + lyrics.join("\n"));
}
if (audioData) {
fs.writeFileSync("output.mp3", audioData);
}
REST
# The output from the REST API is a JSON object containing base64 encoded data.
# You can extract the text or the audio data using a tool like jq.
# To extract the audio and save it to a file:
curl ... | jq -r '.steps[] | select(.type=="model_output") | .content[] | select(.type=="audio") | .data' | base64 -d > output.mp3
Musik aus Bildern generieren
Lyria 3 unterstützt multimodale Eingaben. Sie können in der Liste input neben Ihrem Text-Prompt bis zu 10 Bilder angeben. Das Modell komponiert dann Musik, die von den visuellen Inhalten inspiriert ist.
Python
uploaded_image = client.files.upload(file="desert_sunset.jpg")
response = client.interactions.create(
model="lyria-3-pro-preview",
input=[
{"type": "text", "text": "An atmospheric ambient track inspired by the mood and colors in this image."},
{
"type": "image",
"uri": uploaded_image.uri,
"mime_type": uploaded_image.mime_type
}
],
)
JavaScript
const uploadedImage = await client.files.upload({
file: "desert_sunset.jpg",
config: { mimeType: "image/jpeg" }
});
const interaction = await client.interactions.create({
model: 'lyria-3-pro-preview',
input: [
{ type: 'text', text: 'An atmospheric ambient track inspired by the mood and colors in this image.' },
{
type: 'image',
uri: uploadedImage.uri,
mimeType: uploadedImage.mimeType
}
],
});
REST
# First upload the image using the Files API, then use the URI:
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "lyria-3-pro-preview",
"input": [
{"type": "text", "text": "An atmospheric ambient track inspired by the mood and colors in this image."},
{"type": "image", "uri": "YOUR_FILE_URI", "mime_type": "image/jpeg"}
]
}'
Benutzerdefinierte Songtexte angeben
Sie können eigene Songtexte schreiben und in den Prompt einfügen. Verwenden Sie Abschnitts-Tags wie [Verse], [Chorus] und [Bridge], damit das Modell die Songstruktur versteht:
Python
prompt = """
Create a dreamy indie pop song with the following lyrics:
[Verse 1]
Walking through the neon glow,
city lights reflect below,
every shadow tells a story,
every corner, fading glory.
[Chorus]
We are the echoes in the night,
burning brighter than the light,
hold on tight, don't let me go,
we are the echoes down below.
[Verse 2]
Footsteps lost on empty streets,
rhythms sync to heartbeats,
whispers carried by the breeze,
dancing through the autumn leaves.
"""
interaction = client.interactions.create(
model="lyria-3-pro-preview",
input=prompt,
)
JavaScript
const prompt = `
Create a dreamy indie pop song with the following lyrics:
[Verse 1]
Walking through the neon glow,
city lights reflect below,
every shadow tells a story,
every corner, fading glory.
[Chorus]
We are the echoes in the night,
burning brighter than the light,
hold on tight, don't let me go,
we are the echoes down below.
[Verse 2]
Footsteps lost on empty streets,
rhythms sync to heartbeats,
whispers carried by the breeze,
dancing through the autumn leaves.
`;
const interaction = await client.interactions.create({
model: 'lyria-3-pro-preview',
input: prompt,
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "lyria-3-pro-preview",
"input": "Create a dreamy indie pop song with the following lyrics: ..."
}'
Timing und Struktur steuern
Mit Zeitstempeln können Sie genau angeben, was zu bestimmten Zeitpunkten im Song passiert. Das ist nützlich, um zu steuern, wann Instrumente einsetzen, wann Songtexte vorgetragen werden und wie der Song weitergeht:
Python
prompt = """
[0:00 - 0:10] Intro: Begin with a soft lo-fi beat and muffled
vinyl crackle.
[0:10 - 0:30] Verse 1: Add a warm Fender Rhodes piano melody
and gentle vocals singing about a rainy morning.
[0:30 - 0:50] Chorus: Full band with upbeat drums and soaring
synth leads. The lyrics are hopeful and uplifting.
[0:50 - 1:00] Outro: Fade out with the piano melody alone.
"""
interaction = client.interactions.create(
model="lyria-3-pro-preview",
input=prompt,
)
JavaScript
const prompt = `
[0:00 - 0:10] Intro: Begin with a soft lo-fi beat and muffled
vinyl crackle.
[0:10 - 0:30] Verse 1: Add a warm Fender Rhodes piano melody
and gentle vocals singing about a rainy morning.
[0:30 - 0:50] Chorus: Full band with upbeat drums and soaring
synth leads. The lyrics are hopeful and uplifting.
[0:50 - 1:00] Outro: Fade out with the piano melody alone.
`;
const interaction = await client.interactions.create({
model: 'lyria-3-pro-preview',
input: prompt,
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "lyria-3-pro-preview",
"input": "[0:00 - 0:10] Intro: ..."
}'
Instrumentaltracks generieren
Für Hintergrundmusik, Game-Soundtracks oder jeden Anwendungsfall, bei dem kein Gesang erforderlich ist, können Sie das Modell auffordern, reine Instrumentaltracks zu erstellen:
Python
interaction = client.interactions.create(
model="lyria-3-clip-preview",
input="A bright chiptune melody in C Major, retro 8-bit video game style. Instrumental only, no vocals.",
)
JavaScript
const interaction = await client.interactions.create({
model: 'lyria-3-clip-preview',
input: 'A bright chiptune melody in C Major, retro 8-bit video game style. Instrumental only, no vocals.',
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "lyria-3-clip-preview",
"input": "A bright chiptune melody in C Major, retro 8-bit video game style. Instrumental only, no vocals."
}'
Musik in verschiedenen Sprachen generieren
Lyria 3 generiert Songtexte in der Sprache Ihres Prompts. Wenn Sie einen Song mit französischen Songtexten generieren möchten, schreiben Sie Ihren Prompt auf Französisch. Das Modell passt seinen Gesangsstil und seine Aussprache an die Sprache an.
Python
interaction = client.interactions.create(
model="lyria-3-pro-preview",
input="Crée une chanson pop romantique en français sur un coucher de soleil à Paris. Utilise du piano et de la guitare acoustique.",
)
JavaScript
const interaction = await client.interactions.create({
model: 'lyria-3-pro-preview',
input: 'Crée une chanson pop romantique en français sur un coucher de soleil à Paris. Utilise du piano et de la guitare acoustique.',
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "lyria-3-pro-preview",
"input": "Crée une chanson pop romantique en français sur un coucher de soleil à Paris. Utilise du piano et de la guitare acoustique."
}'
Modellintelligenz
Lyria 3 analysiert Ihren Prompt-Prozess, wobei das Modell die musikalische Struktur (Intro, Strophe, Refrain, Bridge usw.) anhand Ihres Prompts ableitet. Das geschieht, bevor das Audio generiert wird, und sorgt für strukturelle Kohärenz und Musikalität.
Anleitung zu Prompts
Je spezifischer Ihr Prompt ist, desto besser sind die Ergebnisse. Sie können Folgendes angeben, um die Generierung zu steuern:
- Genre: Geben Sie ein Genre oder eine Mischung aus Genres an (z.B. „Lo-fi-Hip-Hop“, „Jazz Fusion“, „Orchestral Cinematic“).
- Instrumente: Nennen Sie bestimmte Instrumente (z.B. „Fender Rhodes Piano“, „Slide-Gitarre“, „TR-808 Drum Machine“).
- BPM: Legen Sie das Tempo fest (z.B. „120 BPM“, „langsames Tempo um 70 BPM“).
- Tonart/Tonleiter: Geben Sie eine Tonart an (z.B. „in G-Dur“, „D-Moll“).
- Stimmung und Atmosphäre: Verwenden Sie beschreibende Adjektive (z.B. „nostalgisch“, „aggressiv“, „ätherisch“, „träumerisch“).
- Struktur: Verwenden Sie Tags wie
[Verse],[Chorus],[Bridge],[Intro],[Outro]oder Zeitstempel, um den Ablauf des Songs zu steuern. - Dauer: Das Modell „Clip“ erzeugt immer 30-sekündige Clips. Geben Sie für das Modell „Pro“ die gewünschte Länge in Ihrem Prompt an (z.B. „Erstelle einen Song mit einer Länge von 2 Minuten“) oder verwenden Sie Zeitstempel, um die Dauer zu steuern.
Beispiele für Prompts
Beispiele für effektive Prompts:
"A 30-second lofi hip hop beat with dusty vinyl crackle, mellow Rhodes piano chords, a slow boom-bap drum pattern at 85 BPM, and a jazzy upright bass line. Instrumental only.""An upbeat, feel-good pop song in G major at 120 BPM with bright acoustic guitar strumming, claps, and warm vocal harmonies about a summer road trip.""A dark, atmospheric trap beat at 140 BPM with heavy 808 bass, eerie synth pads, sharp hi-hats, and a haunting vocal sample. In D minor."
Best Practices
- Zuerst mit Clip iterieren Verwenden Sie das schnellere Modell
lyria-3-clip-preview, um mit Prompts zu experimentieren, bevor Sie mitlyria-3-pro-previeweinen Song in voller Länge generieren. - Machen Sie genaue Angaben Vage Prompts führen zu allgemeinen Ergebnissen. Geben Sie Instrumente, BPM, Tonart, Stimmung und Struktur an, um die besten Ergebnisse zu erzielen.
- Passen Sie die Sprache an Verwenden Sie die Sprache, in der Sie den Songtext haben möchten.
- Abschnitts-Tags verwenden Die Tags
[Verse],[Chorus]und[Bridge]geben dem Modell eine klare Struktur, an die es sich halten kann. - Songtexte von Anweisungen trennen Wenn Sie benutzerdefinierte Songtexte angeben, trennen Sie sie deutlich von Ihren Anweisungen zur musikalischen Ausrichtung.
Beschränkungen
- Sicherheit: Alle Prompts werden von Sicherheitsfiltern geprüft. Prompts, die die Filter auslösen, werden blockiert. Dazu gehören Prompts, in denen bestimmte Künstlerstimmen angefordert werden oder urheberrechtlich geschützte Songtexte generiert werden sollen.
- Wasserzeichen: Alle generierten Audiodaten enthalten ein SynthID-Audio-Wasserzeichen zur Identifizierung. Dieses Wasserzeichen ist für das menschliche Ohr nicht wahrnehmbar und beeinträchtigt das Hörerlebnis nicht.
- Bearbeitung in mehreren Schritten: Die Musikgenerierung ist ein Prozess in einem Schritt. Die iterative Bearbeitung oder Verfeinerung eines generierten Clips durch mehrere Prompts wird in der aktuellen Version von Lyria 3 nicht unterstützt.
- Länge: Das Modell „Clip“ erzeugt immer 30-sekündige Clips. Das Modell „Pro“ generiert Songs, die ein paar Minuten dauern. Die genaue Dauer kann über Ihren Prompt beeinflusst werden.
- Determinismus: Die Ergebnisse können zwischen den Aufrufen variieren, auch bei demselben Prompt.
Nächste Schritte
- Preise für Lyria 3-Modelle ansehen
- Musikgenerierung in Echtzeit mit Lyria RealTime ausprobieren
- Gespräche mit mehreren Sprechern mit den TTS-Modellen generieren
- Informationen zum Generieren von Bildern oder Videos
- Informationen dazu, wie Gemini Audiodateien verstehen kann
- Unterhaltungen in Echtzeit mit Gemini über die Live API