La génération de musique en temps réel Lyria utilise une connexion de streaming persistante, bidirectionnelle et à faible latence à l'aide de WebSockets. Dans cette section, vous trouverez des informations supplémentaires sur l'API WebSockets.
Sessions
Une connexion WebSocket établit une session pour maintenir une communication en temps réel avec le modèle. Une fois qu'un client a établi une nouvelle connexion, la session peut échanger des messages avec le serveur pour :
- Envoyez des requêtes et des commandes pour orienter la génération de musique.
- Envoyer des commandes de lecture de musique
- Recevez des blocs audio.
Connexion WebSocket
Pour démarrer une session, connectez-vous à ce point de terminaison WebSocket :
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateMusic
Configuration de la session
Le message initial après la connexion définit le modèle à utiliser pendant la session.
Consultez l'exemple de configuration suivant. Notez que la casse des noms peut varier dans les SDK. Vous pouvez consulter les options de configuration du SDK Python ici.
{
"model": string
}
Envoyer des messages
Pour échanger des messages via la connexion WebSocket, le client doit envoyer un objet JSON via une connexion WebSocket ouverte. L'objet JSON doit comporter exactement l'un des champs de l'ensemble d'objets suivant :
{
"setup": BidiGenerateMusicSetup,
"client_content": BidiGenerateMusicClientContent,
"music_generation_config": BidiGenerateMusicGenerationConfig,
"playback_control": BidiGenerateMusicPlaybackControl
}
Messages client acceptés
Consultez les messages client acceptés dans le tableau suivant :
Message | Description |
---|---|
BidiGenerateMusicSetup
|
Configuration de la session à envoyer uniquement dans le premier message |
BidiGenerateMusicClientContent |
Requêtes pondérées comme entrée du modèle |
BidiGenerateMusicGenerationConfig |
Configuration pour la génération de musique |
BidiGenerateMusicPlaybackControl
|
Signaux de contrôle de la lecture pour la génération de modèles |
Recevoir des messages
Pour recevoir des messages du serveur, écoutez l'événement "message" de WebSocket, puis analysez le résultat en fonction de la définition des messages serveur acceptés.
Consultez les références suivantes :
async def receive_audio(session):
"""Example background task to process incoming audio."""
while True:
async for message in session.receive():
audio_data = message.server_content.audio_chunks[0].data
# Process audio...
await asyncio.sleep(10**-12)
async with (
client.aio.live.music.connect(model='models/lyria-realtime-exp') as session,
asyncio.TaskGroup() as tg,
):
# Set up task to receive server messages.
tg.create_task(receive_audio(session))
# Send initial prompts and config
await session.set_weighted_prompts(
prompts=[
types.WeightedPrompt(text='minimal techno', weight=1.0),
]
)
await session.set_music_generation_config(
config=types.LiveMusicGenerationConfig(bpm=90, temperature=1.0)
)
# Start streaming music
await session.play()
Les messages serveur incluent exactement l'un des autres champs du message BidiGenerateMusicServerMessage
.
(L'union messageType
n'est pas exprimée en JSON, donc le champ apparaîtra au niveau supérieur du message.)
Messages et événements
AudioChunk
Représentation d'un bloc audio.
Champs | |
---|---|
Champ d'union
|
|
data |
Octets bruts du segment audio. |
mimeType |
Type MIME du contenu du bloc audio, tel que "audio/wav". |
sourceMetadata |
Uniquement en sortie. Requêtes et configuration utilisées pour générer ce segment audio. |
SourceMetadata
Métadonnées sur la source d'entrée utilisée pour générer ce segment audio.
Champs | |
---|---|
clientContent |
Pondération des requêtes pour générer ce segment audio. |
musicGenerationConfig |
Configuration de génération de musique pour générer ce segment audio. |
BidiGenerateMusicClientContent
Saisie utilisateur pour démarrer ou orienter la musique.
Champs | |
---|---|
weightedPrompts[] |
Obligatoire. Requêtes pondérées comme entrée du modèle. |
BidiGenerateMusicClientMessage
Messages envoyés par le client dans l'appel BidiGenerateMusic.
Champs | |
---|---|
Champ d'union
|
|
setup |
Facultatif. Configuration de la session envoyée uniquement dans le premier message client. |
clientContent |
Facultatif. Configurations de génération de musique et requêtes pondérées en tant qu'entrée de la génération de musique. |
musicGenerationConfig |
Facultatif. Configuration pour la génération de musique. |
playbackControl |
Facultatif. Signal de contrôle de la lecture pour la génération de musique. |
BidiGenerateMusicFilteredPrompt
Requête filtrée avec motif.
Champs | |
---|---|
filteredReason |
Uniquement en sortie. Raison pour laquelle la requête a été filtrée. |
Champ d'union prompt . Requête filtrée. prompt ne peut être qu'un des éléments suivants :
|
|
text |
Facultatif. Requête textuelle. |
BidiGenerateMusicGenerationConfig
Configuration pour la génération de musique.
Champs | |
---|---|
temperature |
Facultatif. Contrôle la variance dans la génération audio. Des valeurs plus élevées produisent une variance plus élevée. La plage est [0,0, 3,0]. La valeur par défaut est 1,1. |
topK |
Facultatif. Contrôle la façon dont le modèle sélectionne les jetons pour la sortie. Échantillonne les jetons topK ayant les plus fortes probabilités. La plage est [1, 1000]. La valeur par défaut est 40. |
seed |
Facultatif. Génère l'audio des graines. Si elle n'est pas définie, la requête utilise une graine générée de manière aléatoire. |
guidance |
Facultatif. Contrôle la précision avec laquelle le modèle suit les requêtes. Plus le degré d'orientation est élevé, plus le suivi est précis, mais les transitions sont plus abruptes. La plage est [0,0 ; 6,0]. La valeur par défaut est 4.0. |
bpm |
Facultatif. Battements par minute. La plage est [60, 200]. |
density |
Facultatif. Densité des sons. La plage est [0,0, 1,0]. |
brightness |
Facultatif. Plus la valeur est élevée, plus le son est clair. La plage est [0,0, 1,0]. |
scale |
Facultatif. Gamme de la musique générée. |
muteBass |
Facultatif. La sortie audio ne doit pas contenir de basses. |
muteDrums |
Facultatif. La sortie audio ne doit pas contenir de batterie. |
onlyBassAndDrums |
Facultatif. La sortie audio ne doit contenir que des basses et des percussions. |
musicGenerationMode |
Facultatif. Mode de génération de la musique. La valeur par défaut est QUALITY. |
MusicGenerationMode
Enums | |
---|---|
MUSIC_GENERATION_MODE_UNSPECIFIED |
Cette valeur n'est pas utilisée. |
QUALITY |
Ce mode oriente les requêtes textuelles vers des régions de l'espace latent avec de la musique de meilleure qualité. |
DIVERSITY |
Ce mode oriente les requêtes textuelles vers des régions de l'espace latent présentant une plus grande diversité musicale. |
VOCALIZATION |
Ce mode oriente les requêtes textuelles vers des régions de l'espace latent plus susceptibles de générer de la musique vocale. |
Échelle
Gamme de la musique générée.
Enums | |
---|---|
SCALE_UNSPECIFIED |
Valeur par défaut. Cette valeur n'est pas utilisée. |
C_MAJOR_A_MINOR |
Do majeur ou La mineur |
D_FLAT_MAJOR_B_FLAT_MINOR |
Ré bémol majeur ou si bémol mineur |
D_MAJOR_B_MINOR |
Ré majeur ou si mineur |
E_FLAT_MAJOR_C_MINOR |
Mi bémol majeur ou do mineur |
E_MAJOR_D_FLAT_MINOR |
Mi majeur ou ré bémol mineur |
F_MAJOR_D_MINOR |
Fa majeur ou ré mineur |
G_FLAT_MAJOR_E_FLAT_MINOR |
Sol bémol majeur ou mi bémol mineur |
G_MAJOR_E_MINOR |
Sol majeur ou mi mineur |
A_FLAT_MAJOR_F_MINOR |
Fa majeur ou fa mineur |
A_MAJOR_G_FLAT_MINOR |
La majeur ou sol bémol mineur |
B_FLAT_MAJOR_G_MINOR |
Si bémol majeur ou sol mineur |
B_MAJOR_A_FLAT_MINOR |
Si bémol majeur ou la bémol mineur |
BidiGenerateMusicPlaybackControl
Contrôle de la lecture pour la génération de musique.
Enums | |
---|---|
PLAYBACK_CONTROL_UNSPECIFIED |
Cette valeur n'est pas utilisée. |
PLAY |
Commencez à générer la musique. |
PAUSE |
Mets la génération de musique en pause. Utilisez PLAY pour reprendre la lecture à partir de la position actuelle. |
STOP |
Arrête la génération de musique et réinitialise le contexte (les requêtes sont conservées). Utilisez PLAY pour redémarrer la génération de musique. |
RESET_CONTEXT |
Réinitialisez le contexte (les requêtes sont conservées) sans arrêter la génération de musique. |
BidiGenerateMusicServerContent
Mise à jour incrémentielle du serveur générée par le modèle en réponse aux messages client.
Le contenu est généré aussi rapidement que possible, et non en temps réel. Les clients peuvent choisir de le mettre en mémoire tampon et de le lire en temps réel.
Champs | |
---|---|
audioChunks[] |
Uniquement en sortie. Fragments audio générés par le modèle. |
BidiGenerateMusicServerMessage
Message de réponse pour l'appel BidiGenerateMusic.
Champs | |
---|---|
Champ d'union messageType . Type du message.
messageType ne peut être qu'un des éléments suivants :
|
|
setupComplete |
Uniquement en sortie. Il est envoyé en réponse à un message |
serverContent |
Uniquement en sortie. Contenu généré par le modèle en réponse aux messages client. |
filteredPrompt |
Uniquement en sortie. Requête filtrée avec motif. |
warning |
Uniquement en sortie. Message d'avertissement du serveur. Les avertissements ne mettent pas fin au flux. |
BidiGenerateMusicSetup
Message à envoyer dans le premier message client (et uniquement dans le premier).
BidiGenerateMusicClientMessage
.
Les clients doivent attendre un message BidiGenerateMusicSetupComplete
avant d'envoyer d'autres messages.
Champs | |
---|---|
model |
Obligatoire. Nom de ressource du modèle. Il sert d'ID pour le modèle. Format : |
BidiGenerateMusicSetupComplete
Ce type ne comporte aucun champ.
Il est envoyé en réponse à un message BidiGenerateMusicSetup
du client.
WeightedPrompt
Requête pondérée comme entrée du modèle.
Champs | |
---|---|
weight |
Obligatoire. Pondération du prompt. Le poids permet de contrôler l'importance relative de la requête. Les pondérations les plus élevées sont plus importantes que les pondérations les plus faibles. Les pondérations de tous les weighted_prompts de ce BidiGenerateMusicClientContent ne doivent pas être toutes nulles. Les pondérations de tous les weighted_prompts de ce message BidiGenerateMusicClientContent seront normalisées. |
Champ d'union
|
|
text |
Requête textuelle. |
En savoir plus sur les types
Pour en savoir plus sur les types utilisés par l'API, consultez le SDK Python.