Skip to main content
المسارات (Stems) هي المقاطع الصوتية للغناء والآلات الموسيقية المستخرجة من الصوت المصدر. يقوم 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);

المعاملات

projectId
string
required
المشروع المراد إعادة معالجته.
splitModel
SplitModel
نموذج فصل المسارات. راجع مرجع نماذج الفصل للحصول على إرشادات.

النماذج المتاحة

القيمةالوصف
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 بديل.
demucsFacebook Demucs.

مثال متكامل (End-to-end)

import { YoukaClient, YoukaTaskError } from "@youka/ar/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?)

تنزيل مسار واحد دون تحويله إلى تنسيق آخر. حدّد مسارًا واحدًا فقط عبر المعرّف أو النوع:
await client.projects.downloadStem(
  "prj_abc123",
  { type: "instrumental" },
  { output: "./stems" },
);

await client.projects.downloadStem(
  "prj_abc123",
  { stemId: "stm_abc123" },
  { output: "./stems/original.wav" },
);
الأنواع المدعومة هي 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 ملفات المسارات الأصلية المخزنة ولا تقوم بتحويل ترميزها.

ما التالي