Lyria 3.5 是 Google 的音乐创作模型系列,现已可通过 Gemini API 调用。借助 Lyria 3.5,您可以根据文本提示或图片生成高质量的 44.1 kHz 立体声音频。这些模型可提供结构一致性,包括人声、同步歌词和完整的乐器编排。
Lyria 系列包含以下模型:
| 模型 | 模型 ID | 适用场景 | 时长 | 输出 |
|---|---|---|---|---|
| Lyria 3 Clip | lyria-3-clip-preview |
短片、循环播放的视频、预览 | 30 秒 | MP3 |
| Lyria 3.5 | lyria-3.5 |
包含主歌、副歌和桥段的完整歌曲 | 几分钟(可通过提示词控制) | MP3 |
这两种模型均可通过新的 Interactions API 使用,支持多模态输入(文本和图片),并生成 44.1 kHz 高保真立体声音频。
生成音乐片段
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}`);
}
Java
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;
Client client = new Client();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("lyria-3-clip-preview"))
.input(InteractionsInput.of("A short instrumental acoustic guitar piece."))
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
if (interaction.outputAudio().isPresent() && interaction.outputAudio().get().data().isPresent()) {
byte[] audioBytes = Base64.getDecoder().decode(interaction.outputAudio().get().data().get());
Files.write(Paths.get("music.mp3"), audioBytes);