Lyria 2
Last updated
Was this helpful?
Last updated
Was this helpful?
An advanced audio generation model designed to create high-quality audio tracks from textual prompts.
Create an Account: Visit the AI/ML API website and create an account (if you don’t have one yet). Generate an API Key: After logging in, navigate to your account dashboard and generate your API key. Ensure that key is enabled on UI.
At the bottom of this page, you'll find a code example that shows how to structure the request. Choose the code snippet in your preferred programming language and copy it into your development environment.
Generating an audio sample using this model involves sequentially calling two endpoints:
The first one is for creating and sending a music generation task to the server (returns a generation ID).
The second one is for requesting the generated audio sample from the server using the generation ID received from the first endpoint.
The code example combines both endpoint calls.
Only prompt
is a required parameter for this model (and we’ve already filled it in for you in the example), but you can include optional parameters if needed to adjust the model’s behavior. Below, you can find the corresponding API schema ("Generate a music sample"), which lists all available parameters along with notes on how to use them.
If you need a more detailed walkthrough for setting up your development environment and making a request step by step — feel free to use our Quickstart guide.
This endpoint creates and sends a music generation task to the server — and returns a generation ID and the task status.
After sending a request for music generation, this task is added to the queue. Based on the service's load, the generation can be completed in 30-40 seconds or take a bit more.
Here is an example of generation an audio file based on a prompt using the music model Lyria 2.
import time
import requests
# Insert your AI/ML API key instead of <YOUR_AIMLAPI_KEY>:
aimlapi_key = '<YOUR_AIMLAPI_KEY>'
# Creating and sending an audio generation task to the server (returns a generation ID)
def generate_audio():
url = "https://api.aimlapi.com/v2/generate/audio"
payload = {
"model": "google/lyria2",
"prompt": '''
Majestic orchestral film score recorded in a top-tier London studio. A full-scale symphony orchestra delivers sweeping, cinematic music with rich emotional depth. The composition features soaring themes, dynamic contrasts, and complex harmonies. Expect powerful percussion, expressive strings, and prominent French horns and timpani. The arrangement emphasizes a dramatic narrative arc with intricate orchestrations and a profound, awe-inspiring atmosphere.
'''
}
headers = {"Authorization": f"Bearer {aimlapi_key}", "Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
if response.status_code >= 400:
print(f"Error: {response.status_code} - {response.text}")
else:
response_data = response.json()
print("Generation:", response_data)
return response_data
# Requesting the result of the generation task from the server using the generation_id:
def retrieve_audio(gen_id):
url = "https://api.aimlapi.com/v2/generate/audio"
params = {
"generation_id": gen_id,
}
headers = {"Authorization": f"Bearer {aimlapi_key}", "Content-Type": "application/json"}
response = requests.get(url, params=params, headers=headers)
return response.json()
# This is the main function of the program. From here, we sequentially call the audio generation and then repeatedly request the result from the server every 10 seconds:
def main():
generation_response = generate_audio()
gen_id = generation_response.get("id")
if gen_id:
start_time = time.time()
timeout = 600
while time.time() - start_time < timeout:
response_data = retrieve_audio(gen_id)
if response_data is None:
print("Error: No response from API")
break
status = response_data.get("status")
if status == "generating" or status == "queued" or status == "waiting":
print("Still waiting... Checking again in 10 seconds.")
time.sleep(10)
else:
print("Generation complete:/n", response_data)
return response_data
print("Timeout reached. Stopping.")
return None
if __name__ == "__main__":
main()
Listen to the track we generated:
"Majestic orchestral film score recorded in a top-tier London studio. A full-scale symphony orchestra delivers sweeping, cinematic music with rich emotional depth. The composition features soaring themes, dynamic contrasts, and complex harmonies. Expect powerful percussion, expressive strings, and prominent French horns and timpani. The arrangement emphasizes a dramatic narrative arc with intricate orchestrations and a profound, awe-inspiring atmosphere."
GET /v2/generate/audio HTTP/1.1
Host: api.aimlapi.com
Authorization: Bearer <YOUR_AIMLAPI_KEY>
Accept: */*
{
"audio_file": {
"url": "https://example.com"
},
"id": "text",
"status": "queued",
"error": null
}
The prompt to generate audio.
POST /v2/generate/audio HTTP/1.1
Host: api.aimlapi.com
Authorization: Bearer <YOUR_AIMLAPI_KEY>
Content-Type: application/json
Accept: */*
Content-Length: 75
{
"model": "google/lyria2",
"prompt": "text",
"negative_prompt": "text",
"seed": 1
}
{
"id": "text",
"status": "queued"
}