Skip to main content
스템은 원본 오디오에서 추출된 보컬 및 악기 트랙입니다. Youka는 프로젝트를 생성할 때 자동으로 스템을 분리하지만, 필요할 때마다 다른 모델로 분리를 다시 실행할 수 있습니다.

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

프로젝트에 대해 새로운 스템 분리 작업을 시작합니다.
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
다시 처리할 프로젝트입니다.
splitModel
SplitModel
스템 분리 모델입니다. 안내는 Split model reference를 참고하세요.

Available models

ValueDescription
mdx23c기본값. 품질과 속도의 균형.
audioshakeai고품질 AudioShake 분리.
audioshake_vocals_lead보컬 및 리드 보컬만.
musicai_instrumental_only악기만 출력.
musicai_lead_backing_other리드, 코러스 보컬, 기타 스템.
musicai_with_backing_vocals코러스 트랙을 포함한 보컬.
musicai_without_backing_vocals리드 보컬만.
uvr_mdxnet_kara_2노래방에 맞게 튜닝된 UVR 모델.
bs_roformerBS-Roformer 모델.
mel_band_roformer_instrumental_becruilyMel-band Roformer 악기.
mel_band_roformer_instrumental_instv7_gabox대체 Mel-band 악기.
demucsFacebook Demucs.

End-to-end example

import { YoukaClient, YoukaTaskError } from "@youka/ko/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;
  }
}
저수준 task 접근이 명시적으로 필요할 때만 client.tasks.get(taskId) 또는 client.tasks.wait(taskId)를 사용하세요. 대부분의 호출자는 client.projects.wait(operation)을 사용하는 것이 좋습니다.

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

다른 형식으로 변환하지 않고 스템 하나를 다운로드합니다. ID 또는 type으로 정확히 하나의 스템을 선택하세요:
await client.projects.downloadStem(
  "prj_abc123",
  { type: "instrumental" },
  { output: "./stems" },
);

await client.projects.downloadStem(
  "prj_abc123",
  { stemId: "stm_abc123" },
  { output: "./stems/original.wav" },
);
지원되는 type은 original, instrumental, vocals, backing_vocals입니다.

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

여러 스템을 다운로드합니다. types를 전달하거나 stemIds를 전달하거나, selector를 생략하면 사용 가능한 모든 스템을 다운로드합니다:
await client.projects.downloadStems(
  "prj_abc123",
  { types: ["original", "instrumental", "vocals"] },
  { output: "./stems" },
);

await client.projects.downloadStems("prj_abc123", undefined, {
  output: "./stems",
});
여러 스템을 다운로드할 때는 출력 디렉터리를 사용하세요. SDK는 저장된 원본 스템 파일을 그대로 쓰며 트랜스코딩하지 않습니다.

What’s next