Lyria 3 è la famiglia di modelli di generazione musicale di Google, disponibile tramite l'API Gemini. Con Lyria 3, puoi generare audio stereo di alta qualità a 44, 1 kHz a partire da prompt di testo o immagini. Questi modelli offrono coerenza strutturale, tra cui voci, testi sincronizzati e arrangiamenti strumentali completi.
La famiglia Lyria 3 include due modelli:
| Modello | ID modello | Ideale per | Durata | Output |
|---|---|---|---|---|
| Lyria 3 Clip | lyria-3-clip-preview |
Clip brevi, loop, anteprime | 30 secondi | MP3 |
| Lyria 3 Pro | lyria-3-pro-preview |
Brani completi con strofe, ritornelli e ponti | Un paio di minuti (controllabile tramite prompt) | MP3 |
Entrambi i modelli possono essere utilizzati con il metodo standard generateContent e con la nuova API Interactions, che supporta input multimodali (testo e immagini) e produce audio stereo ad alta fedeltà a 44,1 kHz.
Generare un clip musicale
Il modello Lyria 3 Clip genera sempre un clip di 30 secondi. Per generare un
clip, chiama il metodo generateContent con un prompt di testo. La risposta include sempre il testo e la struttura del brano generati insieme all'audio.
Python
from google import genai
client = genai.Client()
response = client.models.generate_content(
model="lyria-3-clip-preview",
contents="Create a 30-second cheerful acoustic folk song with "
"guitar and harmonica.",
)
# Parse the response
for part in response.parts:
if part.text is not None:
print(part.text)
elif part.inline_data is not None:
with open("clip.mp3", "wb") as f:
f.write(part.inline_data.data)
print("Audio saved to clip.mp3")
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const ai = new GoogleGenAI({});
async function main() {
const response = await ai.models.generateContent({
model: "lyria-3-clip-preview",
contents: "Create a 30-second cheerful acoustic folk song with " +
"guitar and harmonica.",
});
for (const part of response.candidates[0].content.parts) {
if (part.text) {
console.log(part.text);
} else if (part.inlineData) {
const buffer = Buffer.from(part.inlineData.data, "base64");
fs.writeFileSync("clip.mp3", buffer);
console.log("Audio saved to clip.mp3");
}
}
}
main();
Go
package main
import (
"context"
"fmt"
"log"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
result, err := client.Models.GenerateContent(
ctx,
"lyria-3-clip-preview",
genai.Text("Create a 30-second cheerful acoustic folk song " +
"with guitar and harmonica."),
nil,
)
if err != nil {
log.Fatal(err)
}
for _, part := range result.Candidates[0].Content.Parts {
if part.Text != "" {
fmt.Println(part.Text)
} else if part.InlineData != nil {
err := os.WriteFile("clip.mp3", part.InlineData.Data, 0644)
if err != nil {
log.Fatal(err)
}
fmt.Println("Audio saved to clip.mp3")
}
}
}
Java
import com.google.genai.Client;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.Part;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class GenerateMusicClip {
public static void main(String[] args) throws IOException {
try (Client client = new Client()) {
GenerateContentResponse response = client.models.generateContent(
"lyria-3-clip-preview",
"Create a 30-second cheerful acoustic folk song with "
+ "guitar and harmonica.");
for (Part part : response.parts()) {
if (part.text().isPresent()) {
System.out.println(part.text().get());
} else if (part.inlineData().isPresent()) {
var blob = part.inlineData().get();
if (blob.data().isPresent()) {
Files.write(Paths.get("clip.mp3"), blob.data().get());
System.out.println("Audio saved to clip.mp3");
}
}
}
}
}
}
REST
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/lyria-3-clip-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "Create a 30-second cheerful acoustic folk song with guitar and harmonica."}
]
}]
}'
C#
using System.Threading.Tasks;
using Google.GenAI;
using Google.GenAI.Types;
using System.IO;
public class GenerateMusicClip {
public static async Task main() {
var client = new Client();
var response = await client.Models.GenerateContentAsync(
model: "lyria-3-clip-preview",
contents: "Create a 30-second cheerful acoustic folk song with guitar and harmonica."
);
foreach (var part in response.Candidates[0].Content.Parts) {
if (part.Text != null) {
Console.WriteLine(part.Text);
} else if (part.InlineData != null) {
await File.WriteAllBytesAsync("clip.mp3", part.InlineData.Data);
Console.WriteLine("Audio saved to clip.mp3");
}
}
}
}
Generare un brano completo
Utilizza il modello lyria-3-pro-preview per generare brani di lunga durata che durano un paio di minuti. Il modello Pro comprende la struttura musicale e può creare
composizioni con strofe, ritornelli e ponti distinti. Puoi influenzare la
durata specificandola nel prompt (ad es. "crea una canzone di 2 minuti") o
utilizzando i timestamp per definire la struttura.
Python
response = client.models.generate_content(
model="lyria-3-pro-preview",
contents="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 response = await ai.models.generateContent({
model: "lyria-3-pro-preview",
contents: "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.",
});
Go
result, err := client.Models.GenerateContent(
ctx,
"lyria-3-pro-preview",
genai.Text("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."),
nil,
)
Java
GenerateContentResponse response = client.models.generateContent(
"lyria-3-pro-preview",
"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 -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/lyria-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "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."}
]
}]
}'
C#
var response = await client.Models.GenerateContentAsync(
model: "lyria-3-pro-preview",
contents: "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."
);
Seleziona il formato di output
Per impostazione predefinita, i modelli Lyria 3 generano audio in formato MP3. Per
Lyria 3 Pro, puoi anche richiedere l'output in formato WAV impostando
response_mime_type in generationConfig.
Python
response = client.models.generate_content(
model="lyria-3-pro-preview",
contents="An atmospheric ambient track.",
config=types.GenerateContentConfig(
response_modalities=["AUDIO", "TEXT"],
response_mime_type="audio/wav",
),
)
JavaScript
const response = await ai.models.generateContent({
model: "lyria-3-pro-preview",
contents: "An atmospheric ambient track.",
config: {
responseModalities: ["AUDIO", "TEXT"],
responseMimeType: "audio/wav",
},
});
Go
config := &genai.GenerateContentConfig{
ResponseModalities: []string{"AUDIO", "TEXT"},
ResponseMIMEType: "audio/wav",
}
result, err := client.Models.GenerateContent(
ctx,
"lyria-3-pro-preview",
genai.Text("An atmospheric ambient track."),
config,
)
Java
GenerateContentConfig config = GenerateContentConfig.builder()
.responseModalities("AUDIO", "TEXT")
.responseMimeType("audio/wav")
.build();
GenerateContentResponse response = client.models.generateContent(
"lyria-3-pro-preview",
"An atmospheric ambient track.",
config);
C#
var config = new GenerateContentConfig {
ResponseModalities = { "AUDIO", "TEXT" },
ResponseMimeType = "audio/wav"
};
var response = await client.Models.GenerateContentAsync(
model: "lyria-3-pro-preview",
contents: "An atmospheric ambient track.",
config: config
);
REST
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/lyria-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "An atmospheric ambient track."}
]
}],
"generationConfig": {
"responseModalities": ["AUDIO", "TEXT"],
"responseMimeType": "audio/wav"
}
}'
Analizzare la risposta
La risposta di Lyria 3 contiene più parti. Le parti di testo contengono
il testo generato o una descrizione JSON della struttura del brano. Le parti con
inline_data contengono i byte audio.
Python
lyrics = []
audio_data = None
for part in response.parts:
if part.text is not None:
lyrics.append(part.text)
elif part.inline_data is not None:
audio_data = part.inline_data.data
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 part of response.candidates[0].content.parts) {
if (part.text) {
lyrics.push(part.text);
} else if (part.inlineData) {
audioData = Buffer.from(part.inlineData.data, "base64");
}
}
if (lyrics.length) {
console.log("Lyrics:\n" + lyrics.join("\n"));
}
if (audioData) {
fs.writeFileSync("output.mp3", audioData);
}
Go
var lyrics []string
var audioData []byte
for _, part := range result.Candidates[0].Content.Parts {
if part.Text != "" {
lyrics = append(lyrics, part.Text)
} else if part.InlineData != nil {
audioData = part.InlineData.Data
}
}
if len(lyrics) > 0 {
fmt.Println("Lyrics:\n" + strings.Join(lyrics, "\n"))
}
if audioData != nil {
err := os.WriteFile("output.mp3", audioData, 0644)
if err != nil {
log.Fatal(err)
}
}
Java
List<String> lyrics = new ArrayList<>();
byte[] audioData = null;
for (Part part : response.parts()) {
if (part.text().isPresent()) {
lyrics.add(part.text().get());
} else if (part.inlineData().isPresent()) {
audioData = part.inlineData().get().data().get();
}
}
if (!lyrics.isEmpty()) {
System.out.println("Lyrics:\n" + String.join("\n", lyrics));
}
if (audioData != null) {
Files.write(Paths.get("output.mp3"), audioData);
}
C#
var lyrics = new List<string>();
byte[] audioData = null;
foreach (var part in response.Candidates[0].Content.Parts) {
if (part.Text != null) {
lyrics.Add(part.Text);
} else if (part.InlineData != null) {
audioData = part.InlineData.Data;
}
}
if (lyrics.Count > 0) {
Console.WriteLine("Lyrics:\n" + string.Join("\n", lyrics));
}
if (audioData != null) {
await File.WriteAllBytesAsync("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 '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' | base64 -d > output.mp3
Generare musica dalle immagini
Lyria 3 supporta input multimodali: puoi fornire fino a 10 immagini insieme al prompt di testo e il modello comporrà musica ispirata ai contenuti visivi.
Python
from PIL import Image
image = Image.open("desert_sunset.jpg")
response = client.models.generate_content(
model="lyria-3-pro-preview",
contents=[
"An atmospheric ambient track inspired by the mood and "
"colors in this image.",
image,
],
)
JavaScript
const imageData = fs.readFileSync("desert_sunset.jpg");
const base64Image = imageData.toString("base64");
const response = await ai.models.generateContent({
model: "lyria-3-pro-preview",
contents: [
{ text: "An atmospheric ambient track inspired by the mood " +
"and colors in this image." },
{
inlineData: {
mimeType: "image/jpeg",
data: base64Image,
},
},
],
});
Go
imgData, err := os.ReadFile("desert_sunset.jpg")
if err != nil {
log.Fatal(err)
}
parts := []*genai.Part{
genai.NewPartFromText("An atmospheric ambient track inspired " +
"by the mood and colors in this image."),
&genai.Part{
InlineData: &genai.Blob{
MIMEType: "image/jpeg",
Data: imgData,
},
},
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
result, err := client.Models.GenerateContent(
ctx,
"lyria-3-pro-preview",
contents,
nil,
)
Java
GenerateContentResponse response = client.models.generateContent(
"lyria-3-pro-preview",
Content.fromParts(
Part.fromText("An atmospheric ambient track inspired by "
+ "the mood and colors in this image."),
Part.fromBytes(
Files.readAllBytes(Path.of("desert_sunset.jpg")),
"image/jpeg")));
REST
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/lyria-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d "{
\"contents\": [{
\"parts\":[
{\"text\": \"An atmospheric ambient track inspired by the mood and colors in this image.\"},
{
\"inline_data\": {
\"mime_type\":\"image/jpeg\",
\"data\": \"<BASE64_IMAGE_DATA>\"
}
}
]
}]
}"
C#
var response = await client.Models.GenerateContentAsync(
model: "lyria-3-pro-preview",
contents: new List<Part> {
Part.FromText("An atmospheric ambient track inspired by the mood and colors in this image."),
Part.FromBytes(await File.ReadAllBytesAsync("desert_sunset.jpg"), "image/jpeg")
}
);

Fornire testi personalizzati
Puoi scrivere i tuoi testi e includerli nel prompt. Utilizza i tag di sezione
come [Verse], [Chorus] e [Bridge] per aiutare il modello a comprendere la
struttura del brano:
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.
"""
response = client.models.generate_content(
model="lyria-3-pro-preview",
contents=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 response = await ai.models.generateContent({
model: "lyria-3-pro-preview",
contents: prompt,
});
Go
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.
`
result, err := client.Models.GenerateContent(
ctx,
"lyria-3-pro-preview",
genai.Text(prompt),
nil,
)
Java
String 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.
""";
GenerateContentResponse response = client.models.generateContent(
"lyria-3-pro-preview",
prompt);
C#
var 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.
";
var response = await client.Models.GenerateContentAsync(
model: "lyria-3-pro-preview",
contents: prompt
);
REST
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/lyria-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "Create a dreamy indie pop song with the following lyrics: ..."}
]
}]
}'
Controllare la tempistica e la struttura
Puoi specificare esattamente cosa succede in momenti specifici del brano utilizzando i timestamp. Questo è utile per controllare quando entrano gli strumenti, quando vengono consegnati i testi e come procede la canzone:
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.
"""
response = client.models.generate_content(
model="lyria-3-pro-preview",
contents=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 response = await ai.models.generateContent({
model: "lyria-3-pro-preview",
contents: prompt,
});
Go
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.
`
result, err := client.Models.GenerateContent(
ctx,
"lyria-3-pro-preview",
genai.Text(prompt),
nil,
)
Java
String 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.
""";
GenerateContentResponse response = client.models.generateContent(
"lyria-3-pro-preview",
prompt);
C#
var 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.
";
var response = await client.Models.GenerateContentAsync(
model: "lyria-3-pro-preview",
contents: prompt
);
REST
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/lyria-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "[0:00 - 0:10] Intro: ..."}
]
}]
}'
Generare tracce strumentali
Per la musica di sottofondo, le colonne sonore dei giochi o qualsiasi caso d'uso in cui non sono richieste le parti vocali, puoi chiedere al modello di produrre tracce solo strumentali:
Python
response = client.models.generate_content(
model="lyria-3-clip-preview",
contents="A bright chiptune melody in C Major, retro 8-bit "
"video game style. Instrumental only, no vocals.",
)
JavaScript
const response = await ai.models.generateContent({
model: "lyria-3-clip-preview",
contents: "A bright chiptune melody in C Major, retro 8-bit " +
"video game style. Instrumental only, no vocals.",
});
Go
result, err := client.Models.GenerateContent(
ctx,
"lyria-3-clip-preview",
genai.Text("A bright chiptune melody in C Major, retro 8-bit " +
"video game style. Instrumental only, no vocals."),
nil,
)
Java
GenerateContentResponse response = client.models.generateContent(
"lyria-3-clip-preview",
"A bright chiptune melody in C Major, retro 8-bit "
+ "video game style. Instrumental only, no vocals.");
C#
var response = await client.Models.GenerateContentAsync(
model: "lyria-3-clip-preview",
contents: "A bright chiptune melody in C Major, retro 8-bit " +
"video game style. Instrumental only, no vocals."
);
REST
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/lyria-3-clip-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "A bright chiptune melody in C Major, retro 8-bit video game style. Instrumental only, no vocals."}
]
}]
}'
Generare musica in lingue diverse
Lyria 3 genera i testi nella lingua del prompt. Per generare una canzone con un testo in francese, scrivi il prompt in francese. Il modello adatta lo stile vocale e la pronuncia in base alla lingua.
Python
response = client.models.generate_content(
model="lyria-3-pro-preview",
contents="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 response = await ai.models.generateContent({
model: "lyria-3-pro-preview",
contents: "Crée une chanson pop romantique en français sur un " +
"coucher de soleil à Paris. Utilise du piano et de " +
"la guitare acoustique.",
});
Go
result, err := client.Models.GenerateContent(
ctx,
"lyria-3-pro-preview",
genai.Text("Crée une chanson pop romantique en français sur un " +
"coucher de soleil à Paris. Utilise du piano et de " +
"la guitare acoustique."),
nil,
)
Java
GenerateContentResponse response = client.models.generateContent(
"lyria-3-pro-preview",
"Crée une chanson pop romantique en français sur un "
+ "coucher de soleil à Paris. Utilise du piano et de "
+ "la guitare acoustique.");
C#
var response = await client.Models.GenerateContentAsync(
model: "lyria-3-pro-preview",
contents: "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 -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/lyria-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "Crée une chanson pop romantique en français sur un coucher de soleil à Paris. Utilise du piano et de la guitare acoustique."}
]
}]
}'
Model Intelligence
Lyria 3 analizza la procedura di prompt in cui il modello ragiona sulla struttura musicale (intro, strofa, ritornello, bridge e così via) in base al prompt. Ciò avviene prima della generazione dell'audio e garantisce la coerenza strutturale e la musicalità.
API Interactions
Puoi utilizzare i modelli Lyria 3 con l'API Interactions, un'interfaccia unificata per interagire con i modelli e gli agenti Gemini. Semplifica la gestione dello stato e le attività di lunga durata per casi d'uso multimodali complessi.
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="lyria-3-pro-preview",
input="A melancholic jazz fusion track in D minor, " +
"featuring a smooth saxophone melody, walking bass line, " +
"and complex drum rhythms.",
)
for output in interaction.outputs:
if output.text:
print(output.text)
elif output.inline_data:
with open("interaction_output.mp3", "wb") as f:
f.write(output.inline_data.data)
print("Audio saved to interaction_output.mp3")
JavaScript
import { GoogleGenAI } from '@google/genai';
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: 'lyria-3-pro-preview',
input: 'A melancholic jazz fusion track in D minor, ' +
'featuring a smooth saxophone melody, walking bass line, ' +
'and complex drum rhythms.',
});
for (const output of interaction.outputs) {
if (output.text) {
console.log(output.text);
} else if (output.inlineData) {
const buffer = Buffer.from(output.inlineData.data, 'base64');
fs.writeFileSync('interaction_output.mp3', buffer);
console.log('Audio saved to interaction_output.mp3');
}
}
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": "A melancholic jazz fusion track in D minor, featuring a smooth saxophone melody, walking bass line, and complex drum rhythms."
}'
Guida ai prompt
Il prompt può essere semplice come "una canzone folk su gatti carini che evitano le pozzanghere, voce femminile e rumore della pioggia" oppure dettagliato e strutturato come:
Un brano synth-pop in stile anni '80 con un ritmo incalzante, sintetizzatori brillanti e un ritornello orecchiabile e trascinante. La canzone deve avere un'atmosfera retro-futuristica, che ricordi i classici successi pop degli anni '80, con un tocco di modernità. Il tempo deve essere allegro e ballabile, intorno ai 120 BPM, con una chiara struttura strofa-ritornello e un ritornello strumentale memorabile. Il testo parla della sensazione di prepararsi per una festa.
Prompt semplici e complessi possono fornire buoni risultati. Ti consigliamo di sperimentare con questi suggerimenti per trovare la soluzione più adatta a te.
Genere
Inizia il prompt con il genere musicale che preferisci, ad esempio hip hop, rock e rap. Puoi specificare un mix di generi:
- Una fusione di metal e rap
- Una combinazione di death metal e opera
- Un brano di musica classica con elementi di droni elettronici
- Musica dance elettronica (EDM) moderna mixata con Europop
Puoi anche incorporare un'era:
- Hip hop dei primi anni '90
- Pop ye-ye francese anni '60
- Sperimentazione elettronica degli anni '80
- Pop mainstream degli anni 2000
Se richiedi generi personalizzati o varianti regionali, come "techno berlinese" o "hyphy della Bay Area", il modello tenterà di catturare l'essenza, ma potrebbe non riuscirci sempre.
Strumenti
Per impostazione predefinita, Lyria 3 crea brani con gli strumenti che ti aspetteresti per il genere. Non è necessario essere prescrittivi.
Tuttavia, una traccia dance non includerà un sassofono a meno che tu non lo chieda. Quindi, se vuoi un assolo di sassofono, devi specificarlo nel prompt:
Un brano dance con un ritmo incalzante, sintetizzatori scintillanti e un ritornello accattivante e inno. Durante il bridge dovrebbe entrare un assolo di sassofono.
Il prompt può includere strumenti specifici, il loro suono e il modo in cui interagiscono tra loro. Puoi utilizzare questa combinazione per creare determinati stati d'animo o texture:
- Una linea di basso sporca e distorta che contrasta con i charleston puliti e nitidi
- Pad di sintetizzatore analogico caldi che si gonfiano sotto una chitarra acustica secca e intima
- Un muro di suono creato da più strati di chitarre fuzz, con voci lontane e sepolte
Struttura del brano
Puoi descrivere la progressione di un brano nel prompt. Utilizza frecce o un elenco per definire il flusso:
[Intro]->[Verse 1]->[Chorus]->[Verse 2]->[Chorus]->[Bridge]->[Outro]- Inizia con un intro di pianoforte tranquillo, passa a una strofa potente, poi a un silenzio e infine esplodi nel ritornello.
Puoi anche specificare come cambiano i livelli di energia tra queste sezioni:
- Crea tensione nel pre-chorus, poi passa al silenzio prima di un chorus massiccio ed esplosivo
- Crescendo graduale durante la canzone, con l'aggiunta di uno strumento alla volta fino a un muro di suono caotico
- Interruzione improvvisa dopo il bridge, seguita da un coro a cappella
Puoi anche richiedere l'ora esatta in cui vuoi che accada qualcosa:
- Crea un drop a 12 secondi
- Qualcuno dice "cosa" ogni 2 secondi
- Il ritornello inizia a 22 secondi
Testo
La voce e i testi vengono generati per impostazione predefinita. Puoi fornire i tuoi testi, richiedere di non includere testi (o una versione strumentale) o indirizzare la generazione dei testi nella direzione che preferisci.
I testi saranno nella lingua in cui scrivi il prompt. Puoi anche chiedere che il testo sia in un'altra lingua, ad esempio "Scrivi il testo in francese".
Utilizzare i propri testi
Per fornire al modello i tuoi testi, includili nel prompt con il prefisso "Lyrics:":
Lyrics:
[Intro]
Oooh, oooh
[Verse 1]
Let's go
Let's go
Go with the flow
[Chorus]
...
Puoi aggiungere un prefisso alle parti del brano con titoli di sezione come [Intro],
[Verse 1], [Pre-chorus], [Chorus] e [Outro].
Se vuoi che una parola o una riga venga ripetuta, come un eco o dai coristi, puoi includerla tra parentesi: "Let's go (go)".
Chiedere al modello di scrivere i testi
Se vuoi che Lyria 3 crei i testi per te, è meglio includere dettagli su cosa tratteranno i testi nel prompt. In caso contrario, il modello deve dedurre un soggetto dal prompt musicale e potrebbe non essere quello che vuoi.
Il testo parla di un amore perduto e del dolore di un cuore infranto. Il cantante sta ricordando una relazione passata e i ricordi che gli tornano in mente.
Se vuoi un ritornello ripetuto, è utile chiederlo nel prompt:
Il testo parla di un amore perduto e del dolore di un cuore infranto. Il cantante sta ricordando una relazione passata e i ricordi che gli tornano in mente. Un potente ritornello si concentra sul superamento del dolore e sul proseguimento della vita.
Lyria 3 indirizzerà automaticamente la struttura del testo verso il tipo di musica che stai richiedendo, ma puoi riaffermarlo anche nel prompt. Ad esempio:
Un brano di musica elettronica che ripete la stessa frase energica più e più volte.
Puoi anche richiedere effetti vocali che non siano strettamente testi, ad esempio:
- Un campione ripetuto di un film dice "Non ci posso credere!" per tutta la durata della canzone
- Un brano techno ad alta energia, proprio prima del drop la musica si interrompe e una vocina dice "Non so cosa ci faccio qui", poi la musica riprende.
- La traccia si apre con una conversazione sui film degli anni '90 che erano migliori di quelli di oggi. Poi la traccia si trasforma in un brano pop.
Voce
Puoi specificare come vuoi che vengano forniti i testi. Per ottenere i risultati migliori, specifica un profilo dettagliato del cantante che includa genere, timbro e estensione vocale.
- Soprano femminile: timbro chiaro e cristallino con una qualità agile e impetuosa. Capace di raggiungere note alte e fischiettanti con una consistenza ariosa e leggera.
- Contralto femminile: voce ricca, calda e rauca nella gamma più bassa. Timbro fumoso con un tocco di vocal fry, pieno di anima e risonante.
- Tenore maschile: brillante, penetrante ed energico. Timbro giovanile con una leggera sfumatura nasale, che si fa sentire nel mix con una potenza vocale elevata.
- Baritono maschile: voce profonda, cioccolatosa e vellutata. Voce profonda e suadente.
- Weathered Rocker (uomo): voce roca e ruvida con un timbro granuloso, che ricorda il grunge degli anni '90. Gamma superiore tesa per l'intensità emotiva.
Altri parametri del prompt
Puoi anche includere questi parametri per perfezionare ulteriormente il prompt:
- Tonalità/Scala: specifica una tonalità musicale (ad es. "in sol maggiore", "in re minore").
- Stato d'animo e atmosfera: utilizza aggettivi descrittivi (ad es. "nostalgico", "aggressivo", "etereo", "onirico").
- Durata: il modello Clip produce sempre clip di 30 secondi. Per il modello Pro, specifica la durata desiderata nel prompt (ad es. "crea una canzone di 2 minuti") o utilizza i timestamp per controllare la durata.
Prompt di esempio
Ecco alcuni esempi di prompt efficaci:
"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 practice
- Esegui l'iterazione con Clip. Utilizza il modello
lyria-3-clip-previewpiù veloce per sperimentare con i prompt prima di eseguire una generazione completa conlyria-3-pro-preview. - Usa un testo specifico. I prompt vaghi producono risultati generici. Menziona strumenti, BPM, tonalità, stato d'animo e struttura per ottenere il miglior output.
- Utilizza i tag di sezione. I tag
[Verse],[Chorus]e[Bridge]forniscono al modello una struttura chiara da seguire. - Separa il testo dalle istruzioni. Quando fornisci testi personalizzati, separali chiaramente dalle istruzioni per la direzione musicale.
Limitazioni
- Sicurezza: tutti i prompt vengono controllati dai filtri di sicurezza. I prompt che attivano i filtri verranno bloccati. Sono inclusi i prompt che richiedono voci di artisti specifici o la generazione di testi protetti da copyright.
- Filigrana: tutto l'audio generato include una filigrana audio SynthID per l'identificazione. Questa filigrana è impercettibile all'orecchio umano e non influisce sull'esperienza di ascolto.
- Modifica in più passaggi: la generazione di musica è un processo in un solo passaggio. L'editing iterativo o il perfezionamento di un clip generato tramite più prompt non è supportato nella versione attuale di Lyria 3.
- Durata: il modello Clip genera sempre clip di 30 secondi. Il modello Pro genera brani che durano un paio di minuti; la durata esatta può essere influenzata dal prompt.
- Determinismo: i risultati possono variare tra le chiamate, anche con lo stesso prompt.
Passaggi successivi
- Consulta i prezzi dei modelli Lyria 3.
- Prova la generazione di musica in streaming in tempo reale con Lyria RealTime,
- Genera conversazioni con più interlocutori con i modelli TTS,
- Scopri come generare immagini o video.
- Scopri come Gemini può comprendere i file audio,
- Avvia una conversazione in tempo reale con Gemini utilizzando l'API Live.