Skip to main content
Gli stem sono le tracce vocali e strumentali estratte dall’audio sorgente. Youka separa automaticamente gli stem quando crei un progetto, ma puoi eseguire nuovamente la separazione con un modello diverso ogni volta che ne hai bisogno.

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

Avvia una nuova operazione di separazione degli stem per un progetto.
const operation = await client.projects.separateStems("prj_abc123", {
  splitModel: "audioshakeai",
});

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

Parameters

projectId
string
required
Il progetto da rielaborare.
splitModel
SplitModel
Modello di separazione degli stem. Vedi Split model reference per indicazioni.

Available models

ValueDescription
mdx23cPredefinito. Qualità e velocità bilanciate.
audioshakeaiSeparazione AudioShake di alta qualità.
audioshake_vocals_leadSolo voci e voce principale.
musicai_instrumental_onlyOutput solo strumentale.
musicai_lead_backing_otherPrincipale, cori e altri stem.
musicai_with_backing_vocalsVoci incluse le tracce di supporto.
musicai_without_backing_vocalsSolo voce principale.
uvr_mdxnet_kara_2Modello UVR ottimizzato per karaoke.
bs_roformerModello BS-Roformer.
mel_band_roformer_instrumental_becruilyStrumentale Roformer mel-band.
mel_band_roformer_instrumental_instv7_gaboxStrumentale mel-band alternativo.
demucsFacebook Demucs.

End-to-end example

import { YoukaClient, YoukaTaskError } from "@youka/it/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;
  }
}
Usa client.tasks.get(taskId) o client.tasks.wait(taskId) solo quando ti serve esplicitamente un accesso alle task di basso livello. La maggior parte dei chiamanti dovrebbe restare su client.projects.wait(operation).

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

Scarica uno stem senza convertirlo in un altro formato. Seleziona esattamente uno stem per ID o tipo:
await client.projects.downloadStem(
  "prj_abc123",
  { type: "instrumental" },
  { output: "./stems" },
);

await client.projects.downloadStem(
  "prj_abc123",
  { stemId: "stm_abc123" },
  { output: "./stems/original.wav" },
);
I tipi supportati sono original, instrumental, vocals e backing_vocals.

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

Scarica più stem. Passa types, passa stemIds oppure ometti il selettore per scaricare ogni stem disponibile:
await client.projects.downloadStems(
  "prj_abc123",
  { types: ["original", "instrumental", "vocals"] },
  { output: "./stems" },
);

await client.projects.downloadStems("prj_abc123", undefined, {
  output: "./stems",
});
Per i download multi-stem, usa una directory di output. L’SDK scrive i file degli stem originali così come sono salvati e non li transcodifica.

What’s next