Lyria 3 adalah rangkaian model pembuatan musik Google, yang tersedia melalui Gemini API. Dengan Lyria 3, Anda dapat menghasilkan audio stereo berkualitas tinggi 44, 1 kHz dari perintah teks atau dari gambar. Model ini memberikan koherensi struktural, termasuk vokal, lirik yang disesuaikan waktunya, dan aransemen instrumental lengkap.
Rangkaian Lyria 3 mencakup dua model:
| Model | ID Model | Paling cocok untuk | Durasi | Output |
|---|---|---|---|---|
| Klip Lyria 3 | lyria-3-clip-preview |
Klip pendek, loop, pratinjau | 30 detik | MP3 |
| Lyria 3 Pro | lyria-3-pro-preview |
Lagu berdurasi penuh dengan bait, refrein, dan jembatan | Beberapa menit (dapat dikontrol menggunakan perintah) | MP3 |
Kedua model dapat digunakan menggunakan Interactions API baru, yang mendukung input multimodal (teks dan gambar), dan menghasilkan audio stereo dengan akurasi tinggi 44,1 kHz.
Membuat klip musik
Model Klip Lyria 3 selalu menghasilkan klip 30 detik. Untuk membuat klip, panggil metode interactions.create dengan perintah teks. Respons
selalu menyertakan lirik dan struktur lagu yang dihasilkan bersama dengan audio dalam
skema steps.
Python
import base64
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="lyria-3-clip-preview",
input="A short instrumental acoustic guitar piece.",
)
generated_audio = interaction.output_audio
if generated_audio:
with open("music.mp3", "wb") as f:
f.write(base64.b64decode(generated_audio.data))
lyrics = interaction.output_text
if lyrics:
print(f"Lyrics:\n{lyrics}")
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: 'A short instrumental acoustic guitar piece.',
});
const generatedAudio = interaction.output_audio;
if (generatedAudio) {
fs.writeFileSync('music.mp3', Buffer.from(generatedAudio.data, 'base64'));
}
const lyrics = interaction.output_text;
if (lyrics) {
console.log(`Lyrics:\n${lyrics}`);
}
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": "A short instrumental acoustic guitar piece."
}'
Anda dapat mengambil data musik yang dihasilkan menggunakan properti interaction.output_audio, yang menampilkan blok audio terakhir yang dihasilkan. Anda juga dapat mengambil lirik dan struktur lagu menggunakan properti interaction.output_text. Untuk mengetahui detail properti praktis, lihat
Ringkasan interaksi.
Membuat lagu berdurasi penuh
Gunakan model lyria-3-pro-preview untuk membuat lagu berdurasi penuh yang berdurasi beberapa menit. Model Pro memahami struktur musik dan dapat membuat komposisi dengan bait, refrain, dan jembatan yang berbeda. Anda dapat memengaruhi
durasi dengan menentukannya dalam perintah (misalnya, "buat lagu berdurasi 2 menit") atau dengan
menggunakan stempel waktu untuk menentukan struktur.
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: 'A beautiful piano melody.',
});
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 beautiful piano melody."
}'
Pilih format output
Secara default, model Lyria 3 menghasilkan audio dalam format MP3. Untuk
Lyria 3 Pro, Anda juga dapat meminta output dalam format WAV dengan menyetel
response_format.
Python
interaction = client.interactions.create(
model="lyria-3-pro-preview",
input="A beautiful piano melody.",
response_format={"type": "audio"},
)
JavaScript
const interaction = await client.interactions.create({
model: 'lyria-3-pro-preview',
input: 'A beautiful piano melody.',
response_format: {
type: 'audio',
},
});
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": "A beautiful piano melody.",
"response_format": {
"type": "audio"
}
}'
Mengurai respons
Respons dari Lyria 3 berisi beberapa blok konten dalam skema steps.
Interaksi menampilkan urutan langkah, dengan model_output langkah berisi
konten yang dihasilkan.
Blok konten teks berisi lirik yang dibuat atau deskripsi JSON dari struktur lagu.
Blok konten dengan jenis audio berisi data audio berenkode base64.
Python
lyrics = []
audio_data = None
generated_audio = interaction.output_audio
if generated_audio:
with open("output.mp3", "wb") as f:
f.write(base64.b64decode(generated_audio.data))
lyrics = interaction.output_text
if lyrics:
print(f"Lyrics:\n{lyrics}")
JavaScript
const lyrics = [];
let audioData = null;
const generatedAudio = interaction.output_audio;
if (generatedAudio) {
fs.writeFileSync("output.mp3", Buffer.from(generatedAudio.data, 'base64'));
}
const lyrics = interaction.output_text;
if (lyrics) {
console.log("Lyrics:\n" + lyrics);
}
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
Lirik dan musik yang diselingi
Karena output dari Lyria 3 rumit—berisi langkah-langkah dan blok terpisah untuk lirik (teks) dan lagu itu sendiri (audio)—properti praktis menawarkan pintasan yang cepat dan direkomendasikan.
Namun, jika Anda menginginkan kontrol penuh dan terprogram atas linimasa langkah-langkah mentah
yang ditampilkan oleh server (seperti mencatat setiap blok konten saat diterima), Anda dapat melakukan iterasi secara manual atas steps:
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);
}
Membuat musik dari gambar
Lyria 3 mendukung input multimodal — Anda dapat memberikan hingga 10 gambar
bersama perintah teks Anda dalam daftar input dan model akan membuat musik
yang terinspirasi oleh konten visual.
Python
import base64
with open("desert_sunset.jpg", "rb") as f:
image_bytes = f.read()
image_b64 = base64.b64encode(image_bytes).decode("utf-8")
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",
"mime_type": "image/jpeg",
"data": image_b64,
},
],
)
JavaScript
import * as fs from "fs";
const imageBytes = fs.readFileSync("desert_sunset.jpg").toString("base64");
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",
mime_type: "image/jpeg",
data: imageBytes,
},
],
});
REST
# Pass base64 encoded image data directly:
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", "mime_type": "image/jpeg", "data": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////wgALCAABAAEBAREA/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQABPxA="}
]
}'
Menyediakan lirik kustom
Anda dapat menulis lirik Anda sendiri dan menyertakannya dalam perintah. Gunakan tag bagian
seperti [Verse], [Chorus], dan [Bridge] untuk membantu model memahami
struktur lagu:
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: ..."
}'
Mengontrol waktu dan struktur
Anda dapat menentukan apa yang terjadi pada momen tertentu dalam lagu menggunakan stempel waktu. Hal ini berguna untuk mengontrol kapan instrumen masuk, kapan lirik disampaikan, dan bagaimana progres lagu:
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: ..."
}'
Membuat trek instrumental
Untuk musik latar belakang, soundtrack game, atau kasus penggunaan apa pun yang tidak memerlukan vokal, Anda dapat meminta model untuk menghasilkan trek khusus instrumental:
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."
}'
Membuat musik dalam berbagai bahasa
Lyria 3 membuat lirik dalam bahasa perintah Anda. Untuk membuat lagu dengan lirik bahasa Prancis, tulis perintah Anda dalam bahasa Prancis. Model ini menyesuaikan gaya vokal dan pengucapannya agar sesuai dengan bahasa.
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."
}'
Kecerdasan model
Lyria 3 menganalisis proses perintah Anda saat model mempertimbangkan struktur musik (intro, bait, refrain, jembatan, dll.) berdasarkan perintah Anda. Hal ini terjadi sebelum audio dibuat dan memastikan koherensi struktural dan musikalitas.
Panduan penulisan perintah
Makin spesifik perintah Anda, makin baik hasilnya. Berikut hal yang dapat Anda sertakan untuk memandu pembuatan:
- Genre: Tentukan genre atau campuran genre (misalnya, "lo-fi hip hop", "jazz fusion", "orkestra sinematik").
- Instrumen: Sebutkan nama instrumen tertentu (misalnya, "piano Fender Rhodes", "gitar slide", "mesin drum TR-808").
- BPM: Setel tempo (misalnya, "120 BPM", "tempo lambat sekitar 70 BPM").
- Nada Dasar/Skala: Tentukan nada dasar musik (misalnya, "dalam G mayor", "D minor").
- Suasana dan nuansa: Gunakan kata sifat deskriptif (misalnya, "nostalgia", "agresif", "indah", "melamun").
- Struktur: Gunakan tag seperti
[Verse],[Chorus],[Bridge],[Intro],[Outro]atau stempel waktu untuk mengontrol progres lagu. - Durasi: Model Klip selalu menghasilkan klip berdurasi 30 detik. Untuk model Pro, tentukan durasi yang diinginkan dalam perintah Anda (misalnya, "buat lagu berdurasi 2 menit") atau gunakan stempel waktu untuk mengontrol durasi.
Contoh perintah
Berikut beberapa contoh perintah yang efektif:
"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."
Praktik terbaik
- Lakukan iterasi dengan Klip terlebih dahulu. Gunakan model
lyria-3-clip-previewyang lebih cepat untuk bereksperimen dengan perintah sebelum melakukan pembuatan panjang penuh denganlyria-3-pro-preview. - Jadilah spesifik. Perintah yang tidak jelas akan menghasilkan respons generik. Sebutkan instrumen, BPM, nada dasar, mood, dan struktur untuk output terbaik.
- Cocokkan bahasa Anda. Berikan perintah dalam bahasa yang Anda inginkan untuk liriknya.
- Gunakan tag bagian. Tag
[Verse],[Chorus],[Bridge]memberikan struktur yang jelas untuk diikuti model. - Pisahkan lirik dari petunjuk. Saat memberikan lirik kustom, pisahkan dengan jelas dari petunjuk arahan musik Anda.
Batasan
- Keamanan (Safety): Semua perintah diperiksa oleh filter keamanan. Perintah yang memicu filter akan diblokir. Hal ini mencakup perintah yang meminta suara artis tertentu atau pembuatan lirik yang dilindungi hak cipta.
- Penyematan watermark: Semua audio yang dihasilkan menyertakan watermark audio SynthID untuk identifikasi. Watermark ini tidak dapat didengar oleh telinga manusia dan tidak memengaruhi pengalaman mendengarkan.
- Pengeditan berkelanjutan: Pembuatan musik adalah proses sekali putar. Pengeditan atau penyempurnaan klip yang dihasilkan secara berulang melalui beberapa perintah tidak didukung di Lyria 3 versi saat ini.
- Panjang: Model Klip selalu menghasilkan klip berdurasi 30 detik. Model Pro membuat lagu berdurasi beberapa menit; durasi yang tepat dapat dipengaruhi oleh perintah Anda.
- Determinisme: Hasil dapat bervariasi antar-panggilan, bahkan dengan perintah yang sama.
Langkah berikutnya
- Periksa harga untuk model Lyria 3,
- Coba pembuatan musik streaming real-time dengan Lyria RealTime,
- Menghasilkan percakapan multi-pembicara dengan model TTS,
- Temukan cara membuat gambar atau video,
- Cari tahu cara Gemini dapat memahami file audio,
- Lakukan percakapan real-time dengan Gemini menggunakan Live API.