Lyria RealTime: La Rivoluzione dell'AI Musicale di Google
14 Luglio 2025

L'intelligenza artificiale sta trasformando radicalmente il panorama creativo, e la musica non fa eccezione. Google ha recentemente introdotto Lyria RealTime, un modello sperimentale che rappresenta un salto quantico nella generazione musicale in tempo reale. Attraverso l'API Gemini, Lyria offre agli sviluppatori la possibilità di creare applicazioni dove gli utenti possono interattivamente comporre, dirigere e performare musica strumentale con latenza minima.

Lyria RealTime: La Rivoluzione dell'AI Musicale di Google

L'intelligenza artificiale sta trasformando radicalmente il panorama creativo, e la musica non fa eccezione. Google ha recentemente introdotto Lyria RealTime, un modello sperimentale che rappresenta un salto quantico nella generazione musicale in tempo reale. Attraverso l'API Gemini, Lyria offre agli sviluppatori la possibilità di creare applicazioni dove gli utenti possono interattivamente comporre, dirigere e performare musica strumentale con latenza minima.

Cos'è Lyria RealTime?

Lyria RealTime è un modello di generazione musicale all'avanguardia che utilizza una connessione WebSocket bidirezionale persistente per mantenere una comunicazione in tempo reale con il modello AI. A differenza dei tradizionali generatori musicali che producono tracce complete in una sola volta, Lyria permette un controllo continuo e dinamico del processo creativo.

Il sistema funziona in modo simile alla Live API di Google, ma con alcune differenze fondamentali: non è possibile "parlare" direttamente al modello come si farebbe con un chatbot, ma è necessario utilizzare formati specifici per inviare prompt e configurazioni musicali.

Funzionalità Principali

Streaming Audio in Tempo Reale

Lyria genera audio in formato WAV stereo a 48kHz con qualità a 16-bit, permettendo una riproduzione di alta qualità. Il modello trasmette l'audio in chunk continui, creando un flusso musicale senza interruzioni.

Controllo Dinamico

Gli sviluppatori possono modificare parametri musicali durante la generazione, inclusi:
• BPM (Battiti Per Minuto): Controllo del tempo musicale
• Temperature: Livello di creatività e variabilità
• Prompt pesati: Influenze stilistiche e armoniche specifiche

Configurazione Avanzata

Il sistema supporta prompt con pesi diversi, permettendo di enfatizzare elementi musicali specifici. Ad esempio, è possibile dare maggiore importanza a progressioni armoniche particolari o stili musicali.

Analisi dello Script Python


import asyncio
import os
import wave
import datetime
from google import genai
from google.genai import types

# Carica la API key dalle variabili d'ambiente
api_key = os.getenv('GOOGLE_API_KEY')
if not api_key:
    raise ValueError("GOOGLE_API_KEY non trovata nelle variabili d'ambiente")

client = genai.Client(
    api_key=api_key,
    http_options={'api_version': 'v1alpha'}
)

async def main():
    # Crea un nome file unico con timestamp
    timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    output_filename = f"lyria_music_{timestamp}.wav"
    
    # Configurazione audio
    channels = 2  # Stereo
    sample_width = 2  # 16-bit
    sample_rate = 48000  # 48kHz
    
    # Apri il file WAV per la scrittura
    wav_file = wave.open(output_filename, 'wb')
    wav_file.setnchannels(channels)
    wav_file.setsampwidth(sample_width)
    wav_file.setframerate(sample_rate)
    
    print(f"Salvando audio in: {output_filename}")
    print("Premi Ctrl+C per terminare la registrazione")
    
    async def receive_audio(session):
        """Processo di background per ricevere e salvare l'audio."""
        chunk_count = 0
        total_bytes = 0
        
        while True:
            try:
                async for message in session.receive():
                    if hasattr(message, 'server_content') and hasattr(message.server_content, 'audio_chunks'):
                        audio_data = message.server_content.audio_chunks[0].data
                        chunk_count += 1
                        total_bytes += len(audio_data)
                        
                        # Scrivi i dati audio nel file WAV
                        wav_file.writeframes(audio_data)
                        
                        # Mostra progresso
                        duration_seconds = total_bytes / (sample_rate * channels * sample_width)
                        print(f"Chunk {chunk_count}: {len(audio_data)} bytes - Durata totale: {duration_seconds:.1f}s")
                        
                    await asyncio.sleep(10**-12)
            except Exception as e:
                print(f"Errore nella ricezione audio: {e}")
                break

    try:
        async with client.aio.live.music.connect(model='models/lyria-realtime-exp') as session:
            # Crea il task per ricevere i messaggi dal server
            audio_task = asyncio.create_task(receive_audio(session))
            
            try:
                # Invia prompt iniziali e configurazione
                await session.set_weighted_prompts(
                    prompts=[
                        types.WeightedPrompt(text='new age', weight=3.0),
                    ]
                )
                await session.set_music_generation_config(
                    config=types.LiveMusicGenerationConfig(bpm=90, temperature=2.0)
                )

                # Avvia lo streaming della musica
                await session.play()
                
                # Mantieni la sessione attiva (puoi modificare la durata)
                await asyncio.sleep(60)  # Genera musica per 60 secondi
                
            except KeyboardInterrupt:
                print("\nInterrotto dall'utente")
            finally:
                # Cancella il task quando finisci
                audio_task.cancel()
                try:
                    await audio_task
                except asyncio.CancelledError:
                    pass
            
    except Exception as e:
        print(f"Errore durante l'esecuzione: {e}")
    finally:
        # Chiudi il file WAV
        wav_file.close()
        print(f"\nAudio salvato in: {output_filename}")
        print(f"Puoi ascoltarlo con: vlc {output_filename}")

if __name__ == "__main__":
    # Carica le variabili d'ambiente dal file .env
    try:
        with open('.env', 'r') as f:
            for line in f:
                if '=' in line:
                    key, value = line.strip().split('=', 1)
                    os.environ[key] = value
    except FileNotFoundError:
        print("File .env non trovato. Assicurati di aver impostato GOOGLE_API_KEY.")
    
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print("\nProgramma terminato dall'utente")

Lo script fornito rappresenta un'implementazione completa per interagire with Lyria RealTime. Analizziamo i componenti principali:

Setup e Configurazione


# Carica la API key dalle variabili d'ambiente
api_key = os . getenv ( 'GOOGLE_API_KEY' )
client = genai . Client (
  api_key = api_key ,
  http_options = { 'api_version' : 'v1alpha' }
)

Il codice inizializza il client utilizzando la versione alpha dell'API, indicando la natura sperimentale del servizio.

Gestione Audio


# Configurazione audio
channels = 2 # Stereo
sample_width = 2 # 16-bit
sample_rate = 48000 # 48kHz

La configurazione audio è ottimizzata per qualità professionale, con output stereo a 48kHz - standard nell'industria musicale.

Ricezione Streaming


async def receive_audio ( session ) :
	"""Processo di background per ricevere e salvare l'audio."""
	while True :
		async for message in session . receive ( ) :
			if hasattr ( message , 'server_content' ) and hasattr ( message . server_content , 'audio_chunks' ) :
				audio_data = message . server_content . audio_chunks [ 0 ] . data
				wav_file . writeframes ( audio_data )

Il sistema implementa un loop asincrono che riceve continuamente chunk audio dal server, salvandoli immediatamente nel file WAV. Questo approccio garantisce latenza minima e registrazione in tempo reale.

Configurazione Musicale


await session . set_weighted_prompts (
	prompts = [
		types . WeightedPrompt ( text = 'new age' , weight = 3.0 ) ,
	]
)
await session . set_music_generation_config (
	config = types . LiveMusicGenerationConfig ( bpm = 90 , temperature = 2.0 )
	)

Lo script configura il modello per generare musica new age in tonalità La minore, con un BPM di 90 e alta temperatura (2.0) per maggiore varietà creativa.

Gestione degli Errori e Cleanup

Il codice include robusta gestione degli errori e cleanup appropriato delle risorse, essenziale per applicazioni real-time che gestiscono stream audio.

Requisiti Tecnici

Ambiente di Sviluppo

Lo script richiede Python 3.9 o superiore, come dimostrato dai comandi di installazione:


sudo apt install python3.9 python3.9-venv python3.9-dev
python3.9 -m venv venv
source venv/bin/activate
pip install google-genai

Dipendenze

• google-genai: Libreria ufficiale per interagire con l'API Gemini
• asyncio: Per la gestione asincrona delle operazioni
• wave: Per la manipolazione dei file audio WAV

Applicazioni Pratiche

Strumenti Creativi
Lyria può essere integrata in DAW (Digital Audio Workstation) come plugin per generazione musicale assistita.
Applicazioni Educative
Il sistema può essere utilizzato per insegnare teoria musicale, permettendo agli studenti di sperimentare con diversi stili e progressioni.
Intrattenimento Interattivo

Gaming e applicazioni VR possono utilizzare Lyria per generare colonne sonore dinamiche che si adattano alle azioni dell'utente.

Limitazioni e Considerazioni

Stato Sperimentale Essendo un modello sperimentale, Lyria RealTime potrebbe subire modifiche significative e non è raccomandato per applicazioni di produzione critiche.

Latenza di Rete

Le performance dipendono fortemente dalla qualità della connessione internet, poiché l'audio viene trasmesso in streaming.

Costi

L'utilizzo dell'API comporta costi che possono accumularsi rapidamente per applicazioni con uso intensivo.

Conclusione

Lyria RealTime rappresenta un passo significativo verso il futuro della creazione musicale assistita dall'AI. La capacità di generare musica in tempo reale con controllo dinamico apre possibilità creative precedentemente impensabili. Mentre il modello è ancora sperimentale, le sue potenzialità per rivoluzionare la produzione musicale, l'educazione e l'intrattenimento sono evidenti.

Gli sviluppatori che decidono di sperimentare con Lyria RealTime devono considerare sia le opportunità creative che le limitazioni tecniche attuali. Con il continuo sviluppo dell'AI musicale, possiamo aspettarci miglioramenti significativi in termini di qualità, velocità e controllo creativo. La democratizzazione degli strumenti di creazione musicale attraverso l'AI come Lyria potrebbe portare a una nuova era di creatività musicale, dove la barriera tecnica per la composizione viene drasticamente ridotta, permettendo a più persone di esprimere la propria creatività musicale indipendentemente dal background tecnico.

Torna al blog