> ## Documentation Index
> Fetch the complete documentation index at: https://docs.youka.io/llms.txt
> Use this file to discover all available pages before exploring further.

# स्टेम्स

> मौजूदा प्रोजेक्ट पर स्टेम सेपरेशन टास्क ट्रिगर करें

स्टेम्स वे वोकल और इंस्ट्रुमेंटल ट्रैक्स हैं जो सोर्स ऑडियो से निकाले जाते हैं। Youka जब आप कोई प्रोजेक्ट बनाते हैं तो स्टेम्स को अपने-आप अलग कर देता है, लेकिन जरूरत पड़ने पर आप अलग मॉडल के साथ सेपरेशन को फिर से चला सकते हैं।

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

किसी प्रोजेक्ट के लिए नया स्टेम सेपरेशन ऑपरेशन शुरू करें।

```ts theme={null}
const operation = await client.projects.separateStems("prj_abc123", {
  splitModel: "audioshakeai",
});

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

### Parameters

<ParamField path="projectId" type="string" required>
  जिस प्रोजेक्ट को दोबारा प्रोसेस करना है।
</ParamField>

<ParamField path="splitModel" type="SplitModel">
  स्टेम सेपरेशन मॉडल। मार्गदर्शन के लिए [Split model reference](/hi/desktop/split-model)
  देखें।
</ParamField>

### Available models

| Value                                         | Description                            |
| --------------------------------------------- | -------------------------------------- |
| `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_roformer`                                 | BS-Roformer मॉडल।                      |
| `mel_band_roformer_instrumental_becruily`     | Mel-band Roformer इंस्ट्रुमेंटल।       |
| `mel_band_roformer_instrumental_instv7_gabox` | वैकल्पिक mel-band इंस्ट्रुमेंटल।       |
| `demucs`                                      | Facebook Demucs।                       |

## End-to-end example

```ts theme={null}
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;
  }
}
```

<Tip>
  `client.tasks.get(taskId)` या `client.tasks.wait(taskId)` का उपयोग केवल तब करें जब आपको
  स्पष्ट रूप से लो-लेवल टास्क एक्सेस की जरूरत हो। अधिकांश कॉलर्स को
  `client.projects.wait(operation)` पर ही रहना चाहिए।
</Tip>

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

किसी एक स्टेम को किसी अन्य फ़ॉर्मैट में कन्वर्ट किए बिना डाउनलोड करें। ID या type के द्वारा ठीक एक
स्टेम चुनें:

```ts theme={null}
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` पास करें, या सेलेक्टर को छोड़ दें ताकि
हर उपलब्ध स्टेम डाउनलोड हो जाए:

```ts theme={null}
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](/hi/sdk/lyrics-sync) — स्टेम्स स्वैप करने के बाद लिरिक्स को फिर से सिंक करें
* [Tasks](/hi/sdk/tasks) — ऑपरेशन हैंडल्स और एडवांस्ड टास्क पोलिंग
* [Split model reference](/hi/desktop/split-model) — सही मॉडल चुनें
