Создавайте музыку с помощью 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="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}`);
}

ОТДЫХ

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

Вы можете получить сгенерированные музыкальные данные, используя свойство interaction.output_audio , которое возвращает последний сгенерированный аудиоблок. Вы также можете получить текст и структуру песни, используя свойство interaction.output_text . Подробную информацию об удобных свойствах см. в обзоре взаимодействий .

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

Используйте модель 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: 'A beautiful piano melody.',
});

ОТДЫХ

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

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

По умолчанию модели Lyria 3 воспроизводят аудио в формате MP3 . Для Lyria 3 Pro вы также можете запросить вывод в формате WAV , установив параметр 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',
    },
});

ОТДЫХ

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

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

Ответ от Lyria 3 содержит несколько блоков контента в рамках схемы steps . Взаимодействия возвращают последовательность шагов, где шаги model_output содержат сгенерированный контент. Текстовые блоки контента содержат сгенерированный текст песни или JSON-описание структуры песни. Блоки контента с типом audio содержат аудиоданные, закодированные в 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);
}

ОТДЫХ

# 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 сложны и содержат отдельные шаги и блоки для генерации текста песни и самого аудиофайла, удобные свойства предлагают быстрый и рекомендуемый способ ускорить процесс.

Однако, если вам нужен полный программный контроль над исходной временной шкалой шагов, возвращаемых сервером (например, для регистрации отдельных блоков контента по мере их получения), вы можете вместо этого вручную перебирать 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);
}

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

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

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

ОТДЫХ

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

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

Вы можете написать свой собственный текст песни и включить его в задание. Используйте теги разделов, такие как [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 генерирует песни длительностью в несколько минут; точную продолжительность можно изменить с помощью вашей подсказки.
  • Детерминизм : Результаты могут различаться в зависимости от вызова, даже при использовании одного и того же запроса.

Что дальше?