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/hi/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;
  }
}
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" },
);
समर्थित types हैं original, instrumental, vocals, और backing_vocals

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

एक से अधिक स्टेम्स डाउनलोड करें। types पास करें, stemIds पास करें, या सेलेक्टर को छोड़ दें ताकि हर उपलब्ध स्टेम डाउनलोड हो जाए:
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

  • Lyrics sync — स्टेम्स स्वैप करने के बाद लिरिक्स को फिर से सिंक करें
  • Tasks — ऑपरेशन हैंडल्स और एडवांस्ड टास्क पोलिंग
  • Split model reference — सही मॉडल चुनें