Aller au contenu

Music Generation

v0.4.0

Générez de la musique originale par IA à partir d'un simple texte. Morceaux instrumentaux WAV 48 kHz stéréo de 5 à 60 secondes, moteur, tempo et graine au choix.

Base URL : https://api.s33d.fr

POST /v1/music

Génère un morceau de musique original à partir d'une description textuelle : un fichier audio WAV (base64).

Paramètres (JSON body)

Paramètre Type Requis Description
prompt string oui Description du morceau à générer (2-500 caractères). Ex: "ambient electronic chill with soft synths"
duration integer non Durée exacte en secondes (5-60, défaut: 15)
length string non Durée approximative : "1min", "2min" ou "3min" (à la place de duration). Le morceau dure de 90 à 100 % de la durée choisie. Durées proposées par chaque moteur : GET /v1/music/engines
engine string non Moteur de génération : "studio-hd" (qualité maximale, défaut) ou "studio" (rapide). Liste, durées et moteur par défaut : GET /v1/music/engines
bpm integer non Tempo visé (40-220). Sans tempo : 110, ou choisi par la réécriture
seed integer non Graine : la même graine et la même description redonnent le même morceau ; sans graine, chaque appel produit une variante
enhance boolean non Réécriture de la description en direction musicale détaillée ; tempo, tonalité et mesure choisis d'après elle s'ils ne sont pas imposés (défaut: false : la description est seulement traduite en anglais). Le texte envoyé au moteur revient dans caption
key string non Tonalité imposée, ex. "C major", "A minor", "F# minor" (défaut : "C major", ou choisie par la réécriture)
planner boolean non Esquisse du morceau (mélodie, rythme, structure, instruments) écrite par le modèle interne du moteur avant le rendu (défaut: true). Entraînée sur des morceaux arrangés, elle peut ajouter un accompagnement. false : rendu d'après le texte seul
master boolean non Mastering : égalisation, compression douce, −14 LUFS sans dépasser −1,2 dB de crête (défaut: false : volume normalisé à −1,5 dB de crête)

Exemple

curl -X POST https://api.s33d.fr/v1/music \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer VOTRE_CLÉ" \
  -d '{
    "prompt": "upbeat jazz with saxophone and piano",
    "duration": 15
  }'

Réponse

{
  "audio_base64": "UklGRi...",
  "sample_rate": 48000,
  "duration_seconds": 15.0,
  "format": "wav",
  "generation_time_ms": 7773,
  "engine": "studio-hd",
  "seed": 972114511,
  "bpm": 120,
  "keyscale": "G major",
  "caption": "Piano solo. Slow and calm piece...",
  "bpm_source": "request",
  "key_source": "request",
  "enhanced": false, "mastered": false,
  "steps": 50, "guidance": 7.0, "takes": 1
}
💡 Utilisation du résultat : Le champ audio_base64 contient le fichier WAV encodé en base64. Décodez-le côté client pour le jouer directement dans un lecteur HTML5 Audio ou l'enregistrer en fichier.

🚀 Exemples d'intégration

🐍 Python

import requests, base64
 
resp = requests.post(
  "https://api.s33d.fr/v1/music",
  headers={"Authorization": "Bearer VOTRE_CLÉ"},
  json={
    "prompt": "lo-fi hip hop chill beats",
    "duration": 10
  }
)
data = resp.json()
 
# Sauvegarder le fichier WAV
with open("output.wav", "wb") as f:
    f.write(base64.b64decode(data["audio_base64"]))

📦 JavaScript

const res = await fetch(
  "https://api.s33d.fr/v1/music",
  {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${KEY}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      prompt: "epic orchestral cinematic",
      duration: 15
    })
  }
);
const { audio_base64 } = await res.json();
 
// Jouer directement dans le navigateur
const audio = new Audio(
  `data:audio/wav;base64,${audio_base64}`
);
audio.play();