> ## 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.

# Stems

> Déclencher des tâches de séparation des stems sur un projet existant

Les stems sont les pistes vocales et instrumentales extraites de l’audio source. Youka sépare automatiquement les stems lorsque vous créez un projet, mais vous pouvez relancer la séparation avec un autre modèle dès que vous en avez besoin.

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

Démarre une nouvelle opération de séparation des stems pour un projet.

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

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

### Paramètres

<ParamField path="projectId" type="string" required>
  Le projet à retraiter.
</ParamField>

<ParamField path="splitModel" type="SplitModel">
  Modèle de séparation des stems. Consultez la [référence des modèles de séparation](/fr/desktop/split-model)
  pour obtenir des conseils.
</ParamField>

### Modèles disponibles

| Valeur                                        | Description                                 |
| --------------------------------------------- | ------------------------------------------- |
| `mdx23c`                                      | Par défaut. Qualité et vitesse équilibrées. |
| `audioshakeai`                                | Séparation AudioShake de haute qualité.     |
| `audioshake_vocals_lead`                      | Voix et voix lead uniquement.               |
| `musicai_instrumental_only`                   | Sortie instrumentale uniquement.            |
| `musicai_lead_backing_other`                  | Lead, chœurs, et autres stems.              |
| `musicai_with_backing_vocals`                 | Voix incluant les pistes de chœurs.         |
| `musicai_without_backing_vocals`              | Voix lead uniquement.                       |
| `uvr_mdxnet_kara_2`                           | Modèle UVR optimisé pour le karaoké.        |
| `bs_roformer`                                 | Modèle BS-Roformer.                         |
| `mel_band_roformer_instrumental_becruily`     | Instrumental Mel-band Roformer.             |
| `mel_band_roformer_instrumental_instv7_gabox` | Instrumental mel-band alternatif.           |
| `demucs`                                      | Facebook Demucs.                            |

## Exemple de bout en bout

```ts theme={null}
import { YoukaClient, YoukaTaskError } from "@youka/fr/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>
  Utilisez `client.tasks.get(taskId)` ou `client.tasks.wait(taskId)` uniquement lorsque vous
  avez explicitement besoin d’un accès bas niveau aux tâches. La plupart des appels doivent rester sur
  `client.projects.wait(operation)`.
</Tip>

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

Téléchargez un stem sans le convertir dans un autre format. Sélectionnez exactement un
stem par ID ou par 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" },
);
```

Les types pris en charge sont `original`, `instrumental`, `vocals`, et
`backing_vocals`.

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

Téléchargez plusieurs stems. Passez `types`, passez `stemIds`, ou omettez le sélecteur pour
télécharger tous les stems disponibles :

```ts theme={null}
await client.projects.downloadStems(
  "prj_abc123",
  { types: ["original", "instrumental", "vocals"] },
  { output: "./stems" },
);

await client.projects.downloadStems("prj_abc123", undefined, {
  output: "./stems",
});
```

Pour les téléchargements multi-stems, utilisez un répertoire de sortie. Le SDK écrit les fichiers de stems tels qu’ils sont stockés et ne les transcode pas.

## Et ensuite

* [Lyrics sync](/fr/sdk/lyrics-sync) — re-synchroniser les paroles après avoir remplacé les stems
* [Tasks](/fr/sdk/tasks) — des handles d’opération et un polling avancé des tâches
* [Split model reference](/fr/desktop/split-model) — choisir le bon modèle
