Skip to main content
Les stems sont les pistes vocales et instrumentales extraites de l’audio source. Youka sépare automatiquement les stems lorsque vous créez un projet, mais vous pouvez relancer la séparation avec un autre modèle dès que vous en avez besoin.

client.projects.separateStems(projectId, body, options?)

Démarre une nouvelle opération de séparation des stems pour un projet.
const operation = await client.projects.separateStems("prj_abc123", {
  splitModel: "audioshakeai",
});

const { project } = await client.projects.wait(operation);
console.log(project.stems);

Paramètres

projectId
string
required
Le projet à retraiter.
splitModel
SplitModel
Modèle de séparation des stems. Consultez la référence des modèles de séparation pour obtenir des conseils.

Modèles disponibles

ValeurDescription
mdx23cPar défaut. Qualité et vitesse équilibrées.
audioshakeaiSéparation AudioShake de haute qualité.
audioshake_vocals_leadVoix et voix lead uniquement.
musicai_instrumental_onlySortie instrumentale uniquement.
musicai_lead_backing_otherLead, chœurs, et autres stems.
musicai_with_backing_vocalsVoix incluant les pistes de chœurs.
musicai_without_backing_vocalsVoix lead uniquement.
uvr_mdxnet_kara_2Modèle UVR optimisé pour le karaoké.
bs_roformerModèle BS-Roformer.
mel_band_roformer_instrumental_becruilyInstrumental Mel-band Roformer.
mel_band_roformer_instrumental_instv7_gaboxInstrumental mel-band alternatif.
demucsFacebook Demucs.

Exemple de bout en bout

import { YoukaClient, YoukaTaskError } from "@youka/fr/sdk";

const client = new YoukaClient({ apiKey: process.env.YOUKA_API_KEY! });

async function reRunStems(projectId: string) {
  const operation = await client.projects.separateStems(projectId, {
    splitModel: "audioshakeai",
  });

  try {
    const { project } = await client.projects.wait(operation);
    console.log("New stems:", project.stems);
  } catch (error) {
    if (error instanceof YoukaTaskError) {
      console.error("Stem separation failed:", error.code, error.message);
      throw error;
    }
    throw error;
  }
}
Utilisez client.tasks.get(taskId) ou client.tasks.wait(taskId) uniquement lorsque vous avez explicitement besoin d’un accès bas niveau aux tâches. La plupart des appels doivent rester sur client.projects.wait(operation).

client.projects.downloadStem(projectId, selector, options?)

Téléchargez un stem sans le convertir dans un autre format. Sélectionnez exactement un stem par ID ou par type :
await client.projects.downloadStem(
  "prj_abc123",
  { type: "instrumental" },
  { output: "./stems" },
);

await client.projects.downloadStem(
  "prj_abc123",
  { stemId: "stm_abc123" },
  { output: "./stems/original.wav" },
);
Les types pris en charge sont original, instrumental, vocals, et backing_vocals.

client.projects.downloadStems(projectId, selector?, options?)

Téléchargez plusieurs stems. Passez types, passez stemIds, ou omettez le sélecteur pour télécharger tous les stems disponibles :
await client.projects.downloadStems(
  "prj_abc123",
  { types: ["original", "instrumental", "vocals"] },
  { output: "./stems" },
);

await client.projects.downloadStems("prj_abc123", undefined, {
  output: "./stems",
});
Pour les téléchargements multi-stems, utilisez un répertoire de sortie. Le SDK écrit les fichiers de stems tels qu’ils sont stockés et ne les transcode pas.

Et ensuite

  • Lyrics sync — re-synchroniser les paroles après avoir remplacé les stems
  • Tasks — des handles d’opération et un polling avancé des tâches
  • Split model reference — choisir le bon modèle