Skip to main content
Los stems son las pistas vocales e instrumentales extraídas del audio fuente. Youka separa los stems automáticamente cuando creas un proyecto, pero puedes volver a ejecutar la separación con un modelo diferente siempre que lo necesites.

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

Inicia una nueva operación de separación de stems para un proyecto.
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
El proyecto que se va a reprocesar.
splitModel
SplitModel
Modelo de separación de stems. Consulta la Referencia de modelos de separación para obtener orientación.

Available models

ValueDescription
mdx23cPredeterminado. Calidad y velocidad equilibradas.
audioshakeaiSeparación AudioShake de alta calidad.
audioshake_vocals_leadSolo voces y voz principal.
musicai_instrumental_onlySalida solo instrumental.
musicai_lead_backing_otherVoz principal, coros y otros stems.
musicai_with_backing_vocalsVoces incluidas las pistas de coros.
musicai_without_backing_vocalsSolo voz principal.
uvr_mdxnet_kara_2Modelo UVR ajustado para karaoke.
bs_roformerModelo BS-Roformer.
mel_band_roformer_instrumental_becruilyInstrumental Roformer de banda mel.
mel_band_roformer_instrumental_instv7_gaboxInstrumental de banda mel alternativo.
demucsFacebook Demucs.

Ejemplo de extremo a extremo

import { YoukaClient, YoukaTaskError } from "@youka/es/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 cuando necesites explícitamente acceso de bajo nivel a tareas. La mayoría de los usuarios deberían quedarse con client.projects.wait(operation).

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

Descarga un stem sin convertirlo a otro formato. Selecciona exactamente un stem por 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" },
);
Los tipos compatibles son original, instrumental, vocals y backing_vocals.

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

Descarga varios stems. Pasa types, pasa stemIds, o omite el selector para descargar todos los stems disponibles:
await client.projects.downloadStems(
  "prj_abc123",
  { types: ["original", "instrumental", "vocals"] },
  { output: "./stems" },
);

await client.projects.downloadStems("prj_abc123", undefined, {
  output: "./stems",
});
Para descargas de múltiples stems, usa un directorio de salida. El SDK escribe los archivos de stems almacenados en su forma original y no los transcodifica.

Qué sigue

  • Lyrics sync — volver a sincronizar las letras después de cambiar los stems
  • Tasks — handles de operación y sondeo avanzado de tareas
  • Split model reference — elegir el modelo adecuado