Создавайте музыку с помощью Lyria 3.

Lyria 3 — это семейство моделей генерации музыки от Google, доступных через API Gemini. С помощью Lyria 3 вы можете генерировать высококачественный стереофонический звук с частотой 44,1 кГц из текстовых подсказок или изображений. Эти модели обеспечивают структурную целостность, включая вокал, синхронизированные тексты песен и полные инструментальные аранжировки.

В семейство Lyria 3 входят две модели:

Модель Идентификатор модели Лучше всего подходит для Продолжительность Выход
Клип Лирии 3 lyria-3-clip-preview Короткие видеоролики, зацикленные фрагменты, превью. 30 секунд MP3
Лирия 3 Про lyria-3-pro-preview Полноценные песни с куплетами, припевами и бриджами. Несколько минут (можно регулировать с помощью подсказки) MP3

Обе модели могут использоваться с помощью нового API взаимодействия , поддерживающего многомодальный ввод (текст и изображения), и обеспечивают высококачественный стереозвук с частотой 44,1 кГц .

Создать музыкальный клип

Модель Lyria 3 Clip всегда генерирует 30-секундный клип. Для генерации клипа вызовите метод interactions.create с текстовой подсказкой. В ответе всегда будут содержаться сгенерированные текст и структура песни, а также аудиофайл в соответствии со схемой steps .

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}`);
            }
        }
    }
}

ОТДЫХ

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

Создайте полноценную песню

Используйте модель lyria-3-pro-preview для создания полноценных песен продолжительностью в несколько минут. Модель Pro понимает музыкальную структуру и может создавать композиции с отдельными куплетами, припевами и бриджами. Вы можете влиять на продолжительность, указывая её в командной строке (например, «создать 2-минутную песню») или используя временные метки для определения структуры.

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.',
});

ОТДЫХ

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

Выберите формат вывода

По умолчанию модели Lyria 3 воспроизводят аудио в формате MP3 . Для Lyria 3 Pro вы также можете запросить вывод в формате WAV , установив параметр response_mime_type .

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",
});

ОТДЫХ

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

Проанализируйте ответ

Ответ от Lyria 3 содержит несколько блоков контента в рамках схемы steps . Взаимодействия возвращают последовательность шагов, где шаги model_output содержат сгенерированный контент. Текстовые блоки контента содержат сгенерированный текст песни или JSON-описание структуры песни. Блоки контента с типом audio содержат аудиоданные, закодированные в base64.

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);
}

ОТДЫХ

# 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

Генерация музыки из изображений

Lyria 3 поддерживает мультимодальный ввод — вы можете указать до 10 изображений вместе с текстовой подсказкой в ​​списке input , и модель сочинит музыку, вдохновленную визуальным контентом.

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
        }
    ],
});

ОТДЫХ

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

Предоставьте собственные тексты песен.

Вы можете написать свой собственный текст песни и включить его в задание. Используйте теги разделов, такие как [Verse] , [Chorus] и [Bridge] , чтобы помочь модели понять структуру песни:

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,
});

ОТДЫХ

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

Контроль времени и структуры

С помощью временных меток можно точно указать, что происходит в определенные моменты песни. Это полезно для управления моментом вступления инструментов, моментом исполнения текста и развитием композиции:

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,
});

ОТДЫХ

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

Создание инструментальных треков

Для фоновой музыки, саундтреков к играм или любых других случаев, когда вокал не требуется, вы можете настроить модель на создание только инструментальных треков:

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.',
});

ОТДЫХ

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

Создавайте музыку на разных языках.

Lyria 3 генерирует текст песни на языке вашего запроса. Чтобы сгенерировать песню с французским текстом, напишите свой запрос на французском языке. Модель адаптирует свой вокальный стиль и произношение в соответствии с языком.

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.',
});

ОТДЫХ

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

Модель интеллекта

Lyria 3 анализирует процесс создания музыкального произведения на основе вашего запроса, прорабатывая его структуру (вступление, куплет, припев, бридж и т. д.). Это происходит до генерации аудио и обеспечивает структурную целостность и музыкальность.

Руководство по подсказкам

Чем конкретнее ваш запрос, тем лучше результат. Вот что вы можете включить, чтобы направлять процесс генерации:

  • Жанр : Укажите жанр или сочетание жанров (например, «лоу-фай хип-хоп», «джаз-фьюжн», «кинематографическая оркестровая музыка»).
  • Инструменты : Назовите конкретные инструменты (например, «фортепиано Fender Rhodes», «слайд-гитара», «драм-машина TR-808»).
  • BPM : Установите темп (например, "120 BPM", "медленный темп около 70 BPM").
  • Тональность/Гамма : Укажите музыкальную тональность (например, «соль мажор», «ре минор»).
  • Настроение и атмосфера : используйте описательные прилагательные (например, «ностальгический», «агрессивный», «неземной», «мечтательный»).
  • Структура : Используйте теги, такие как [Verse] , [Chorus] , [Bridge] , [Intro] , [Outro] или временные метки, чтобы контролировать развитие песни.
  • Длительность : В модели Clip всегда создаются 30-секундные клипы. В модели Pro укажите желаемую длительность в командной строке (например, «создать 2-минутную песню») или используйте временные метки для управления длительностью.

Примеры подсказок

Вот несколько примеров эффективных подсказок:

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

Передовые методы

  • Сначала поэкспериментируйте с Clip. Используйте более быструю модель lyria-3-clip-preview , чтобы поэкспериментировать с подсказками, прежде чем приступать к полномасштабной генерации с помощью lyria-3-pro-preview .
  • Будьте конкретны. Расплывчатые подсказки приводят к общим результатам. Для достижения наилучшего результата укажите инструменты, темп, тональность, настроение и структуру.
  • Выберите нужный язык. Введите текст песни на том языке, на котором вы хотите видеть текст.
  • Используйте теги разделов. Теги [Verse] , [Chorus] , [Bridge] обеспечивают четкую структуру, которой легко следовать.
  • Разделяйте текст песни и инструкции. При создании собственного текста песни четко отделяйте его от указаний по музыкальному оформлению.

Ограничения

  • Безопасность : Все запросы проверяются фильтрами безопасности. Запросы, которые активируют фильтры, будут заблокированы. Это включает запросы, требующие использования голосов конкретных исполнителей или генерации защищенных авторским правом текстов песен.
  • Водяной знак : Все сгенерированные аудиофайлы содержат водяной знак SynthID для идентификации. Этот водяной знак незаметен для человеческого уха и не влияет на качество прослушивания.
  • Многоэтапное редактирование : создание музыки — это одноэтапный процесс. Итеративное редактирование или доработка созданного клипа с помощью нескольких подсказок не поддерживается в текущей версии Lyria 3.
  • Длительность : Модель Clip всегда генерирует 30-секундные клипы. Модель Pro генерирует песни длительностью в несколько минут; точную продолжительность можно изменить с помощью вашей подсказки.
  • Детерминизм : Результаты могут различаться в зависимости от вызова, даже при использовании одного и того же запроса.

Что дальше?