Skip to main content
Stems são as faixas vocais e instrumentais extraídas do áudio de origem. O Youka separa stems automaticamente quando você cria um projeto, mas você pode executar a separação novamente com um modelo diferente sempre que precisar.

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

Inicie uma nova operação de separação de stems para um projeto.
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
O projeto a ser reprocessado.
splitModel
SplitModel
Modelo de separação de stems. Veja Referência de modelo de separação para orientação.

Modelos disponíveis

ValueDescription
mdx23cPadrão. Qualidade e velocidade equilibradas.
audioshakeaiSeparação AudioShake de alta qualidade.
audioshake_vocals_leadApenas vocais e vocais principais.
musicai_instrumental_onlySaída apenas instrumental.
musicai_lead_backing_otherPrincipal, backing vocals e outros stems.
musicai_with_backing_vocalsVocais incluindo faixas de apoio.
musicai_without_backing_vocalsApenas vocais principais.
uvr_mdxnet_kara_2Modelo UVR ajustado para karaokê.
bs_roformerModelo BS-Roformer.
mel_band_roformer_instrumental_becruilyRoformer mel-band instrumental.
mel_band_roformer_instrumental_instv7_gaboxInstrumental mel-band alternativo.
demucsFacebook Demucs.

Exemplo de ponta a ponta

import { YoukaClient, YoukaTaskError } from "@youka/pt/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;
  }
}
Use client.tasks.get(taskId) ou client.tasks.wait(taskId) apenas quando você precisar explicitamente de acesso de baixo nível a tarefas. A maioria dos usuários deve ficar em client.projects.wait(operation).

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

Baixe um stem sem convertê-lo para outro formato. Selecione exatamente um stem por ID ou tipo:
await client.projects.downloadStem(
  "prj_abc123",
  { type: "instrumental" },
  { output: "./stems" },
);

await client.projects.downloadStem(
  "prj_abc123",
  { stemId: "stm_abc123" },
  { output: "./stems/original.wav" },
);
Os tipos compatíveis são original, instrumental, vocals e backing_vocals.

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

Baixe vários stems. Passe types, passe stemIds ou omita o seletor para baixar todos os stems disponíveis:
await client.projects.downloadStems(
  "prj_abc123",
  { types: ["original", "instrumental", "vocals"] },
  { output: "./stems" },
);

await client.projects.downloadStems("prj_abc123", undefined, {
  output: "./stems",
});
Para downloads com múltiplos stems, use um diretório de saída. O SDK grava os arquivos de stems originais armazenados e não os transcodifica.

Próximos passos