Lyria 3 ile müzik üretme

Lyria 3, Gemini API üzerinden kullanılabilen Google'ın müzik üretme modeli ailesidir. Lyria 3 ile metin istemlerinden veya resimlerden yüksek kaliteli, 44, 1 kHz stereo ses üretebilirsiniz. Bu modeller, vokaller, zamanlanmış şarkı sözleri ve tam enstrümantal düzenlemeler dahil olmak üzere yapısal tutarlılık sağlar.

Lyria 3 ailesinde iki model bulunur:

Model Model Kimliği En uygun olduğu durumlar Süre Çıkış
Lyria 3 Clip lyria-3-clip-preview Kısa klipler, döngüler, önizlemeler 30 saniye MP3
Lyria 3 Pro lyria-3-pro-preview Dizeler, nakaratlar ve köprülerle tam uzunlukta şarkılar Birkaç dakika (istem kullanılarak kontrol edilebilir) MP3

Her iki model de çok formatlı girişleri (metin ve resim) destekleyen yeni Interactions API kullanılarak kullanılabilir ve 44,1 kHz yüksek kaliteli stereo ses üretir.

Müzik klibi oluşturma

Lyria 3 Clip modeli her zaman 30 saniyelik bir klip oluşturur. Klip oluşturmak için interactions.create yöntemini metin istemiyle çağırın. Yanıtta, steps şemasındaki sesin yanı sıra her zaman oluşturulan şarkı sözleri ve şarkı yapısı yer alır.

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."
}'

Tam uzunlukta şarkı oluşturma

Birkaç dakika süren tam uzunlukta şarkılar oluşturmak için lyria-3-pro-preview modelini kullanın. Pro modeli, müzikal yapıyı anlar ve farklı kıtalar, nakaratlar ve köprüler içeren kompozisyonlar oluşturabilir. İsteminizde süreyi belirterek (ör. "2 dakikalık bir şarkı oluştur") veya yapıyı tanımlamak için zaman damgalarını kullanarak süreyi etkileyebilirsiniz.

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."
}'

Çıkış biçimini seçin

Varsayılan olarak, Lyria 3 modelleri MP3 biçiminde ses üretir. Lyria 3 Pro'da response_mime_type ayarını yaparak çıktının WAV biçiminde olmasını da isteyebilirsiniz.

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"
  }'

Yanıtı ayrıştırma

Lyria 3'ün yanıtı, steps şemasında birden fazla içerik bloğu içeriyor. Etkileşimler, model_output adımının oluşturulan içeriği içerdiği bir adım dizisi döndürür. Metin içerik bloklarında, üretilen şarkı sözleri veya şarkı yapısının JSON açıklaması yer alır. audio türündeki içerik blokları, Base64 kodlu ses verilerini içerir.

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

Resimlerden müzik üretme

Lyria 3, çok formatlı girişleri destekler. input listesinde metin isteminizle birlikte 10 adede kadar resim sağlayabilirsiniz. Model, görsel içerikten ilham alarak müzik oluşturur.

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"}
    ]
  }'

Özel şarkı sözleri sağlama

Kendi şarkı sözlerinizi yazıp isteme ekleyebilirsiniz. Modelin şarkı yapısını anlamasına yardımcı olmak için [Verse], [Chorus] ve [Bridge] gibi bölüm etiketlerini kullanın:

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: ..."
  }'

Zamanlamayı ve yapıyı kontrol etme

Zaman damgalarını kullanarak şarkının belirli anlarında tam olarak ne olacağını belirtebilirsiniz. Bu özellik, enstrümanların ne zaman devreye gireceğini, şarkı sözlerinin ne zaman gösterileceğini ve şarkının nasıl ilerleyeceğini kontrol etmek için kullanışlıdır:

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: ..."
  }'

Enstrümantal parçalar oluşturma

Arka plan müziği, oyun müzikleri veya vokallerin gerekli olmadığı tüm kullanım alanlarında, modelden yalnızca enstrümantal parçalar üretmesini isteyebilirsiniz:

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."
  }'

Farklı dillerde müzik üretme

Lyria 3, isteminizin dilinde şarkı sözleri oluşturur. Fransızca sözler içeren bir şarkı oluşturmak için isteminizi Fransızca yazın. Model, ses stilini ve telaffuzunu dile uyacak şekilde ayarlar.

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."
  }'

Model zekası

Lyria 3, isteminizi analiz eder. Bu analizde model, isteminize göre müzik yapısını (giriş, kıta, nakarat, köprü vb.) gerekçelendirir. Bu işlem, ses oluşturulmadan önce gerçekleşir ve yapısal tutarlılık ile müzikaliteyi sağlar.

İstem yazma kılavuzu

İsteminiz ne kadar ayrıntılı olursa sonuçlar o kadar iyi olur. Üretimi yönlendirmek için şunları ekleyebilirsiniz:

  • Tür: Bir tür veya tür karışımı belirtin (ör. "lo-fi hip hop", "jazz fusion", "cinematic orchestral").
  • Enstrümanlar: Belirli enstrümanların adını belirtin (ör. "Fender Rhodes piyano", "slide gitar", "TR-808 davul makinesi").
  • BPM: Tempoyu ayarlayın (ör. "120 BPM", "70 BPM civarında yavaş tempo").
  • Ton/Ölçek: Müzik tonunu belirtin (ör. "Sol majör", "Re minör").
  • Ruh hali ve atmosfer: Açıklayıcı sıfatlar kullanın (ör. "nostaljik", "agresif", "göklerde", "hayalperest").
  • Yapı: Şarkının ilerlemesini kontrol etmek için [Verse], [Chorus], [Bridge], [Intro], [Outro] gibi etiketler veya zaman damgaları kullanın.
  • Süre: Klip modeli her zaman 30 saniyelik klipler üretir. Pro modelinde, isteminizde amaçlanan uzunluğu belirtin (ör. "2 dakikalık bir şarkı oluştur") veya süreyi kontrol etmek için zaman damgalarını kullanın.

Örnek istemler

Etkili istemlere ilişkin bazı örnekler:

  • "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."

En iyi uygulamalar

  • Önce Clip ile yineleyin. lyria-3-clip-preview ile tam uzunlukta bir üretim yapmadan önce istemlerle deneme yapmak için daha hızlı olan lyria-3-clip-preview modelini kullanın.lyria-3-pro-preview
  • Net olun. Net olmayan istemler, genel sonuçlar üretir. En iyi sonucu elde etmek için enstrümanları, tempoyu, anahtarı, ruh halini ve yapıyı belirtin.
  • Dilinizi eşleştirin. Şarkı sözlerinin hangi dilde olmasını istiyorsanız o dilde istem girin.
  • Bölüm etiketlerini kullanın. [Verse], [Chorus], [Bridge] etiketleri, modele izleyeceği net bir yapı sunar.
  • Şarkı sözlerini talimatlardan ayırın. Özel şarkı sözleri sağlarken bunları müzikal yönlendirme talimatlarınızdan net bir şekilde ayırın.

Sınırlamalar

  • Güvenlik: Tüm istemler güvenlik filtreleriyle kontrol edilir. Filtreleri tetikleyen istemler engellenir. Belirli sanatçıların seslerini veya telif hakkıyla korunan şarkı sözlerinin oluşturulmasını isteyen istemler de bu kapsamdadır.
  • Filigran: Üretilen tüm seslerde tanımlama için SynthID ses filigranı bulunur. Bu filigran insan kulağıyla fark edilemez ve dinleme deneyimini etkilemez.
  • Çok turlu düzenleme: Müzik üretimi tek turlu bir süreçtir. Oluşturulan bir klibi birden fazla istemle yinelemeli olarak düzenleme veya iyileştirme, Lyria 3'ün mevcut sürümünde desteklenmemektedir.
  • Uzunluk: Klip modeli her zaman 30 saniyelik klipler oluşturur. Pro modeli, birkaç dakika süren şarkılar oluşturur. Tam süre, isteminizden etkilenebilir.
  • Belirlenimcilik: Sonuçlar, aynı istemle bile olsa aramalar arasında farklılık gösterebilir.

Sırada ne var?