الانتقال إلى المحتوى الرئيسي
مع اتساع تطبيقات الذكاء الاصطناعي، أصبحت مختلف برامج الذكاء الاصطناعي منتشرة تدريجيًا. وقد تعمّق الذكاء الاصطناعي تدريجيًا في جميع جوانب عمل الناس وحياتهم. كما تتزايد الصناعات التي يشملها الذكاء الاصطناعي، بدءًا من الكتابة في البداية، مرورًا بالرعاية الطبية والتعليم، وصولًا الآن إلى الموسيقى. Suno هي منصة احترافية وعالية الجودة لإنشاء الأغاني والموسيقى بالذكاء الاصطناعي، حيث لا يحتاج المستخدم سوى إلى إدخال كلمات توجيه نصية بسيطة لإنشاء أغانٍ تحتوي على أصوات بشرية وفقًا لنمط النوع الموسيقي وكلمات الأغنية. طوّر مولد الموسيقى بالذكاء الاصطناعي هذا أعضاء فريق من شركات تقنية معروفة مثل Meta وTikTok وKensho وغيرها، والهدف هو عدم الحاجة إلى أي أدوات أو آلات موسيقية، بحيث يمكن للجميع إنشاء موسيقى رائعة. فيما يلي تقدم تحديثات النماذج:
حدود lyric وstyle في الجدول أعلاه هي الحدود القصوى في الوضع المخصص (عندما تكون custom بقيمة true). أما وضع الإلهام غير المخصص (عندما تكون custom بقيمة false) فيملأ prompt فقط، وحده الأقصى للطول هو 500 حرف (ومتطابق في جميع النماذج).
يدعم Suno الآن chirp-v6 وchirp-v6-wild وchirp-v6-mini. يُوصى باستخدام chirp-v6؛ وتبقى أسماء النماذج القديمة متوافقة. ومع ذلك، لا يوفر Suno الرسمي واجهة API، وتوفر AceDataCloud مجموعة من واجهات API لـ Suno، تحاكي التكامل مع Suno الرسمي، ويمكنها إنشاء الموسيقى المطلوبة بسهولة وسرعة.

التقديم والاستخدام

لاستخدام Suno Audios Generation API، انتقل أولًا إلى وحدة تحكم Ace Data Cloud للحصول على API Token الخاص بك، واحتفظ به للاستخدام لاحقًا. إذا لم تكن قد سجلت الدخول أو أنشأت حسابًا بعد، فسيتم تحويلك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك إلى التسجيل وتسجيل الدخول، وبعد الإكمال ستعود تلقائيًا إلى الصفحة الحالية. يمكن لـ API Token واحد استدعاء جميع خدمات المنصة، ولا حاجة للتقديم بشكل منفصل لكل خدمة. سيُمنح رصيد مجاني عند التقديم للمرة الأولى، ويمكنك التجربة مجانًا؛ وعندما لا يكون الرصيد كافيًا، يمكنك شحن الرصيد العام من وحدة التحكم.
📘 الوثائق الكاملة: Suno Audios Generation API →

الاستخدام الأساسي

أي نوع من الأغاني تفكر فيه، يمكنك إدخال أي نص، على سبيل المثال إذا أردت إنشاء أغنية عن عيد الميلاد، يمكنك إدخال a song for Christmas، كما هو موضح في الصورة:

يمكن ملاحظة أننا قمنا هنا بتعيين Request Headers، بما في ذلك:
  • accept: نوع تنسيق نتيجة الاستجابة التي تريد تلقيها، وهنا تم تعبئته بـ application/json، أي تنسيق JSON.
  • authorization: مفتاح استدعاء API، ويمكن اختياره مباشرة من القائمة المنسدلة بعد التقديم.
كما قمنا بتعيين Request Body، بما في ذلك:
  • action: نوع مهمة الصوت، الافتراضي هو generate. يدعم عمليات مثل التوليد، والتمديد، وإعادة الغناء، والدمج، وفصل المسارات، وإضافة المسارات الصوتية، واستخراج مسار صوتي محدد، وتوليد المؤثرات الصوتية، وضبط السرعة، وغيرها، ويتم استدعاؤها جميعًا عبر POST /suno/audios.
  • prompt: نص مطالبة وضع الإلهام الرسمي من Suno (يكون فعالًا عندما تكون custom بقيمة false)، بحد أقصى 500 حرف.
  • model: نموذج مهمة توليد الموسيقى هذه. تتضمن سلسلة v6 كلاً من chirp-v6 وchirp-v6-wild وchirp-v6-mini؛ وتظل أسماء النماذج القديمة متوافقة.
  • max_mode: وضع التوليد المحسّن. لا يتم تمكين generate إلا عندما تكون كل من custom وmax_mode بقيمة true، وتكلفته 1.12 Credits؛ ويمكن تمكين add_stem مباشرةً، وتكلفته 1.344 Credits. عند إيقافه أو حذفه، تكون التكلفة 0.56 و0.672 Credits على التوالي.
  • variety: شدة تنوع النتائج المُولَّدة، والقيم الاختيارية هي off وnormal وhigh وextra وmax. يُستخدم فقط مع generate وadd_stem، وسيؤدي تمريره مع action آخر إلى إرجاع 400.
  • lyric: محتوى كلمات الأغنية لوضع التخصيص الرسمي من Suno. الحد الأقصى لـ chirp-v3-5 وchirp-v4 هو 3000 حرف؛ ولـ chirp-v4-5 وما بعده (بما في ذلك chirp-v5 وchirp-v5-5) هو 5000 حرف.
  • custom: ما إذا كان سيتم استخدام وضع التخصيص، والافتراضي هو: false.
  • instrumental: خيار الموسيقى الآلية الخالصة لوضع الإلهام الرسمي من Suno.
  • title: عنوان الموسيقى لوضع التخصيص الرسمي من Suno. الحد الأقصى لـ chirp-v3-5 وchirp-v4 هو 80 حرفًا؛ ولـ chirp-v4-5 وما بعده هو 100 حرف.
  • style: نمط الموسيقى لوضع التخصيص الرسمي من Suno. الحد الأقصى لـ chirp-v3-5 وchirp-v4 هو 200 حرف؛ ولـ chirp-v4-5 وما بعده (بما في ذلك chirp-v5 وchirp-v5-5) هو 1000 حرف.
  • negative_tags: أنماط أو أنواع موسيقية يُراد استبعادها من النتائج المُولَّدة في وضع التخصيص (عندما تكون custom بقيمة true).
  • audio_weight: وزن تأثير خصائص الصوت أو الصوت البشري، ضمن النطاق 0-1، وتُعد 0 أيضًا قيمة صالحة. يمكن استخدامه لعمليات مثل التوليد، والتمديد، وإعادة الغناء، وإضافة المسارات الصوتية، واتساق الصوت؛ وعند عدم وجود صوت مرجعي أو خصائص صوتية، قد يُضعف النموذج هذه القيمة أو يتجاهلها.
  • audio_id: معرّف الموسيقى المرجعية.
  • overpainting_start/overpainting_end: وقتا البدء والانتهاء لإضافة غناء بشري إلى موسيقى آلية موجودة، بوحدة الثواني.
  • underpainting_start/underpainting_end: وقتا البدء والانتهاء لإضافة مرافقة موسيقية إلى غناء دون مرافقة، بوحدة الثواني.
  • persona_id: معرّف أغنية الفنان.
  • continue_at: حد التمديد، بوحدة الثواني. على سبيل المثال، يشير 213.5 إلى بدء توليد المقطع اللاحق من الدقيقة الثالثة و33.5 ثانية. لا يوجّه lyric وstyle إلا المحتوى الجديد بعد الحد، ولن يستبدلا الكلمات أو الغناء قبل الحد في الصوت المصدر.
  • style_influence: تأثير النمط في وضع التخصيص، ضمن النطاق 0-1، وكلما زادت القيمة، زادت عادةً مطابقة النمط المحدد؛ ويتم تمرير 0 كقيمة صالحة.
  • replace_section_end: الوقت النهائي للمقطع المستبدل.
  • replace_section_start: وقت بدء المقطع المستبدل.
  • vocal_gender: يتحكم في تفضيل الصوت الأنثوي أو الذكوري، الصوت الأنثوي f، والصوت الذكوري m، وهو فعّال في نماذج 4.5 وما بعدها؛ وهو عنصر تفضيل ولا يضمن الالتزام الصارم.
  • weirdness: درجة الغرابة في وضع التخصيص، ضمن النطاق 0-1، وكلما زادت القيمة، كانت النتيجة عادةً أكثر إبداعًا وتجريبية؛ ويتم تمرير 0 كقيمة صالحة.
  • duration: مدة الأغنية المطلوبة، بوحدة الثواني، ويجب أن تكون عددًا صحيحًا، ضمن النطاق من 10 إلى 360. تُستخدم هذه المعلمة لتوليد الأغاني في وضع التخصيص (عندما تكون custom بقيمة true). وهي مطالبة توجيهية وليست قيدًا صارمًا: سيأخذها النموذج في الاعتبار، لكنه لا يضمن تحقيقها، وتكون مدة المنتج الفعلية وفقًا لحقل duration في الاستجابة، وعادةً ما تكون أقصر من القيمة المطلوبة.

نطاق تطبيق المعلمات المتقدمة

ستتحقق المنصة من أنواع المعلمات ونطاقات القيم، لكنها لن ترفض هذه عناصر الضبط الاختيارية لمجرد اختلاف action؛ إذ يحدد التأثير الفعلي كل من العملية والوضع والنموذج.
  • lyric_prompt: prompt لتوليد الكلمات، ولا يكون فعالًا إلا عندما تكون custom بقيمة true ولا يتم تمرير lyric.
  • callback_url: عنوان URL الذي يتطلب استدعاءً راجعًا للنتيجة.
  • async: اختياري، عند ضبطه على true تُرجع الواجهة task_id فورًا، دون الحاجة إلى تقديم callback_url، ثم يتم الحصول على النتيجة عبر الاستعلام الدوري باستخدام واجهة الاستعلام عن المهمة المقابلة.
الكود المُولَّد كما يلي:

يمكنك النقر على زر «Try» لاختبار API مباشرةً، والانتظار لمدة 1-2 دقيقة، وتكون النتيجة كما يلي:
يمكن ملاحظة أننا حصلنا في هذه المرحلة على محتوى أغنيتين، بما في ذلك العنوان، وصورة المعاينة، وكلمات الأغنية، والصوت، والفيديو، وغيرها من المحتويات. شرح الحقول كما يلي:
  • success: ما إذا كان التوليد ناجحًا، فإذا نجح تكون القيمة true، وإلا فتكون false
  • data: هي قائمة تحتوي على المعلومات التفصيلية للأغاني التي تم توليدها.
    • state: حالة توليد الأغنية، وتتضمن بشكل أساسي أربع حالات، كما يلي:
      • succeeded: تم التوليد بنجاح
      • pending: في قائمة الانتظار
      • running: قيد التنفيذ
      • error: فشل
    • id: معرّف الأغنية
    • title: عنوان الأغنية
    • image_url: صورة غلاف الأغنية
    • lyric: كلمات الأغنية
    • audio_url: عنوان الصوت النهائي للأغنية. ستُرجع المنصة عنوان Ace Data Cloud CDN بشكلٍ تفضيلي؛ وإذا فشلت الاستمرارية، فقد تُرجع عنوان الوسائط الأصلي، لذا يُرجى التنزيل في الوقت المناسب.
    • video_url: ملف فيديو الأغنية، وعند فتحه يكون فيديو mp4.
    • created_at: وقت الإنشاء
    • model: النموذج المستخدم، وعادةً ما يكون أحدث نموذج v3
    • style: النمط

التوليد المخصص

إذا كنت ترغب في تخصيص توليد كلمات الأغنية، يمكنك إدخال الكلمات: في هذه المرحلة، يمكن تمرير محتوى مشابه لما يلي في حقل lyric:
ملاحظة: إن \n في كلمات الأغنية هنا هو رمز سطر جديد، وإذا كنت لا تعرف كيفية توليد كلمات الأغنية، يمكنك استخدام واجهة برمجة التطبيقات لتوليد كلمات الأغاني التي توفرها AceDataCloud لتوليد الكلمات عبر prompt، وواجهة البرمجة هي Suno Lyrics Generation API.
بعد ذلك، لتخصيص توليد الأغنية بناءً على كلمات الأغنية والعنوان والنمط، يمكن تحديد المحتوى التالي:
  • lyric: نص كلمات الأغنية
  • custom: املأها بـ true، وهي تمثل التوليد المخصص، والقيمة الافتراضية لهذه المعلمة هي false، وتمثل استخدام prompt للتوليد.
  • title: عنوان الأغنية.
  • style: نمط الأغنية، اختياري.
مثال على التعبئة كما يلي:

بعد إتمام التعبئة، يتم توليد الكود التالي تلقائيًا:

الكود المقابل:
يُسمح بالاختبار، ويكون تأثير التوليد مشابهًا.

ميزة التوليد المخصص لنمط المغني

إذا كنت ترغب في استخدام أسلوب مغنٍّ لتوليد أغنية، فقم أولاً بتوليد أغنية عبر الاستخدام الأساسي أعلاه، وفي النهاية تحصل على الحاجة إلى تعيين هذه الأغنية كأسلوب مغنٍّ، ثم تحتاج إلى الدخول إلى Suno Persona API لإنشاء معلمة معرف أسلوب مغنٍّ persona_id استنادًا إلى معرف الموسيقى الذي تم إنشاؤه رسميًا audio_id، والمعلمات المحددة موضحة في الصورة أدناه:

بعد إكمال التعبئة، يتم إنشاء الكود تلقائيًا كما يلي:

كود Python المقابل:
انقر للتشغيل، ويمكنك ملاحظة أنك ستحصل على نتيجة كما يلي:
نستخدم audio_id وpersona_id أعلاه، وهما 97efc9f4-0e8d-4b3e-88df-14568fa1b11f وe0d7319e-aa2a-44cb-b00a-916218d7cb0b على التوالي، كبيانات المثال هذه. ثم يمكن تعيين المعلمة action إلى artist_consistency (إذا كان أسلوب المغني الجديد Persona-v2-vox، فيجب تعيين action إلى artist_consistency_vox)، وإدخال معرف الأغنية التي تحتاج إلى مواصلة توليدها، ومعرف أسلوب المغني، ومثال التعبئة كما يلي:

بعد إكمال التعبئة، يتم إنشاء الكود تلقائيًا كما يلي:

كود Python المقابل:
انقر للتشغيل، ويمكنك ملاحظة أنك ستحصل على نتيجة كما يلي:
يمكن ملاحظة أن محتوى النتيجة يتطابق مع ما ورد أعلاه، وهذا يحقق وظيفة توليد الأغاني باستخدام أسلوب المغني.

وظيفة مواصلة التوليد

إذا كنت ترغب في مواصلة توليد أغنية Suno تم إنشاؤها بالفعل، فيمكنك تعيين المعلمة action إلى extend، وإدخال معرف الأغنية التي تحتاج إلى مواصلة توليدها، ويتم الحصول على معرف الأغنية وفقًا للاستخدام الأساسي، ومن خلال ما سبق يمكن معرفة أنه في هذا الوقت يمكن رؤية أن معرف الأغنية هو:
ملاحظة، id في كلمات الأغنية هنا هو معرف الأغنية بعد التوليد. إذا كنت لا تعرف كيفية توليد أغنية، فيمكنك الرجوع إلى الاستخدام الأساسي أعلاه لتوليد أغنية.
إذا كنت ترغب في مواصلة توليد أغنية رفعتها بنفسك، فيمكنك تعيين المعلمة action إلى upload_extend، وإدخال معرف الأغنية المرفوعة المخصصة التي تحتاج إلى مواصلة توليدها، ويتم الحصول على معرف الأغنية باستخدام Suno Upload Generation API، كما هو موضح في الصورة أدناه:

بعد ذلك، يجب تعبئة كلمات مقطع المتابعة، ويمكن تحديد الأسلوب:
  • lyric: يُستخدم فقط لتوجيه كلمات المقطع المُولَّد حديثًا بعد continue_at، ولن يستبدل الكلمات الموجودة في الصوت المصدر قبل تلك النقطة الزمنية.
  • custom: املأه بـ true، وهو ما يعني التوليد المخصص، والقيمة الافتراضية لهذه المعلمة هي false، مما يعني استخدام prompt للتوليد.
  • style: أسلوب أغنية مقطع المتابعة، اختياري.
  • continue_at: حد المتابعة، بوحدة الثواني. على سبيل المثال، تشير 213.5 إلى بدء توليد المقطع اللاحق من الدقيقة الثالثة و33.5 ثانية.
يُستخدم extend لمواصلة الإبداع إلى الأمام انطلاقًا من أغنية موجودة، وليس لتغيير كلمات الأغنية كاملة. إذا كنت ترغب في استخدام كلمات جديدة للأغنية كاملة من البداية، فيرجى استخدام generate لإعادة التوليد؛ وإذا كنت ترغب في إعادة أداء الأغنية بالرجوع إلى أغنية موجودة، فيمكنك استخدام cover. عند تمرير كلمات جديدة كاملة، لن يتم استبدال الكلمات الأصلية قبل continue_at أيضًا.
مثال التعبئة كما يلي:

بعد إكمال التعبئة، يتم إنشاء الكود تلقائيًا كما يلي:

ما تم الاحتفاظ به أدناه هو لقطة لاستدعاء تاريخي حقيقي، حيث إن continue_at يساوي ثانيتين، لذلك فإن أول ثانيتين فقط تنتميان إلى المحتوى الأصلي قبل حد الاستكمال. عند الاستكمال فعليًا بالقرب من نهاية الأغنية، يجب ضبط هذه القيمة على عدد الثواني المتوقع بدء الاستكمال عندها، وتوفير المقطع الجديد المراد غناؤه بعد الحد فقط في lyric. كود Python المقابل:
انقر للتشغيل، ويمكن ملاحظة أنه سيتم الحصول على نتيجة كما يلي:
يمكن ملاحظة أن lyric في النتيجة سيُرجع نص كلمات الأغنية المستخدمة في مهمة الاستكمال هذه. هذا الحقل ليس تفريغًا حرفيًا للصوت النهائي الكامل؛ بالنسبة إلى extend، يستمر الصوت المصدر قبل continue_at في استخدام الكلمات الأصلية، وتُستخدم الكلمات الجديدة فقط لتوجيه مقطع الاستكمال.

الحصول على الأغنية الكاملة

عادةً ما تتضمن نتيجة extend للنموذج الحالي الصوت المصدر قبل continue_at والمحتوى الجديد بعد الحد، لذا يُرجى أولًا تحديد ما إذا كانت أغنية كاملة بالفعل بناءً على المدة الفعلية ومحتوى الصوت المُرجع. إذا كان المُرجع مقطع استكمال مستقلًا، أو إذا كان من الضروري دمج سجل عدة عمليات استكمال صراحةً في أغنية واحدة، فاستخدم وظيفة الدمج بعد ذلك:
  • action: المحتوى هو concat.
  • audio_id: معرّف آخر مقطع استكمال.
مثلًا، إذا كان معرّف الأغنية بعد التوسيع هو: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98، فيمكن ضبط المعلمات كما يلي:
تبقى المعلمات الأخرى دون تغيير، وما يُرجع هو أغنية كاملة، أي نتيجة دمج جميع مقاطع الأغنية، لكن النتيجة تحتوي على أغنية واحدة فقط، والمثال كما يلي:

إعادة إنتاج الموسيقى

عند الاستمرار في إنشاء أغنية بناءً على الأغنية الأصلية، قد لا يكون نمط الأغنية المُعادة مناسبًا تمامًا. إذا أردت إعادة إنتاج الأغنية التي تم إنشاؤها سابقًا (ويُدعم أيضًا إذا كانت موسيقى مرفوعة بشكل مخصص)، فيجب استخدام طريقة إعادة إنتاج الموسيقى، ويمكن عندها تحديد المحتوى التالي:
  • action: المحتوى هو cover، وعند إجراء عملية إعادة إنتاج لموسيقى مرفوعة بشكل مخصص، يجب تحديد المحتوى على أنه: upload_cover.
  • audio_id: معرّف الأغنية التي تم إنشاؤها سابقًا.
على سبيل المثال، إذا كان معرّف الأغنية التي تم إنشاؤها سابقًا هو: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98، فيمكن تعيين المعلمات كما يلي:
تبقى المعلمات الأخرى دون تغيير، وستكون النتيجة المعادة أغنية بعد إعادة إنتاجها، أي نتيجة إعادة إنتاج الأغنية التي تم إنشاؤها سابقًا، والمثال كما يلي:
النتيجة المُنشأة مشابهة لما ورد أعلاه، وبهذا تكتمل عملية إنشاء إعادة إنتاج للأغنية التي تم إنشاؤها سابقًا.

استبدال المقطع

عند الحاجة إلى إجراء إبداع ثانوي من خلال عملية مستقلة لاستبدال مقطع من الأغنية بعد إنشائها، يمكن إجراء عملية استبدال لمقطع معين من الأغنية.
⚠️ ملاحظة: القيمة الافتراضية لـ replace_section_result_mode هي full_song: سيقوم النظام بدمج مرشحين تم إنشاؤهما حديثًا بشكل منفصل، وإرجاع أغنيتين كاملتين. إذا كنت تحتاج فقط إلى مرشحي مقاطع الاستبدال غير المدمجين بعد، فعيّنها صراحةً إلى candidates، ثم اختر المرشح لاستدعاء دمج الموسيقى.
توضيح المعلمات كما يلي:
  • action: المحتوى هو replace_section.
  • audio_id: معرّف الأغنية الأصلية (الأغنية المصدر التي سيتم استبدالها).
  • model: نموذج إنشاء الأغنية.
  • lyric: كلمات الأغنية الكاملة بعد الاستبدال (بما في ذلك المقطع المستبدل وسياقه، مع الحفاظ على الاتساق مع المحتوى في prompt).
  • prompt: كلمات الأغنية الجديدة للمقطع الذي يجب استبداله.
  • style: نمط الأغنية، اختياري.
  • replace_section_start: وقت بداية المقطع المستبدل في الأغنية الأصلية (بالثواني).
  • replace_section_end: وقت نهاية المقطع المستبدل في الأغنية الأصلية (بالثواني).
  • replace_section_result_mode: وضع الإرجاع، والقيمة الافتراضية هي full_song. يقوم full_song بدمج المرشحين الاثنين بشكل منفصل وإرجاع أغنيتين كاملتين؛ بينما يُرجع candidates مقطعين مرشحين لم يتم دمجهما بعد.

الخطوة الأولى: بدء مهمة استبدال المقطع

على سبيل المثال، إذا كان معرّف الأغنية التي تم إنشاؤها سابقًا هو: 18db7ed0-2b8a-41db-91c1-b0781dcca0d4 (مدتها 94.12 ثانية)، وتريد استبدال اللازمة الموسيقية من الثانية 30 إلى الثانية 60 بكلمات جديدة، فيمكن تعيين المعلمات كما يلي:
بشكل افتراضي، يتم إرجاع أغنيتين كاملتين تم وصلهما من مرشحين مختلفين. إذا تم تعيين replace_section_result_mode إلى candidates، فسيتم إرجاع مقطعي استبدال غير موصولين، ويكون الهيكل متسقًا مع المثال أدناه:
في وضع candidates، تكون مدة المقطعين الصوتيين المُعادين (45.16 ثانية و33.8 ثانية) أقصر بكثير من الأغنية الأصلية (94.12 ثانية)، وهما مقطعا استبدال يحتويان على قدر قليل من السياق، وليسا الأغنية كاملة. يمكنك اختيار المرشح المُرضي ومتابعة وصله يدويًا. أما وضع full_song الافتراضي، فسيُكمل عمليتي الوصل ويُرجع مباشرة أغنيتين كاملتين.

إرجاع الأغاني الكاملة مباشرة

إذا كنت ترغب في الحصول على الأغاني الكاملة مباشرة، يمكنك في الخطوة الأولى تعيين replace_section_result_mode إلى full_song. ستقوم الواجهة بوصْل المرشحين على التوالي وإرجاع أغنيتين كاملتين؛ وفي هذه الحالة لا حاجة لاستدعاء concat مرة أخرى.

الخطوة الثانية: وصل مقطع الاستبدال بالأغنية الأصلية

بالنسبة للمقطع المختار أعلاه (مثلًا 364f9d8b-ca25-463b-9a5e-d0b7139e2d6a)، ابدأ مهمة concat وفقًا للطريقة الواردة في قسم وصل الموسيقى:
ما يتم إرجاعه هو الأغنية الكاملة بعد الوصل، والمثال كما يلي:
في هذه المرحلة، تمّت استعادة duration إلى طول الأغنية الكامل (105.28 ثانية، وهو ما يعادل تقريبًا طول الأغنية الأصلية)، ويشير audio_url إلى الأغنية الكاملة بعد اكتمال الاستبدال. بهذا تكتمل عملية الإبداع الثانوي: “إنشاء → استبدال مقطع → دمج الأغنية كاملة”.

فصل الغناء والموسيقى

عندما تحتاج، بعد إنشاء الأغنية، إلى إجراء إبداع ثانوي من خلال التعامل بشكل منفصل مع الموسيقى المصاحبة والغناء، يمكنك فصل الموسيقى المصاحبة الخالصة والغناء المنفرد. يمكنك حينها تحديد المحتوى التالي:
  • action:القيمة هي stems.
  • audio_id:معرّف الأغنية التي تم إنشاؤها سابقًا.
على سبيل المثال، إذا كان معرّف الأغنية بعد إنشائها هو: ec13e502-d043-4eb2-92ee-e900c6da69d1، فيمكنك ضبط المعلمات كما يلي:
يمكنك الحصول على نتيجة فصل الغناء والموسيقى عبر المعلمات أعلاه، والنتيجة كما يلي:
النتيجة المُنشأة مماثلة لما سبق، وبذلك تكتمل عملية فصل الغناء والموسيقى للأغنية التي تم إنشاؤها سابقًا.

فصل الغناء والموسيقى لجميع المسارات

عندما تحتاج، بعد إنشاء الأغنية، إلى إجراء عملية فصل الغناء والموسيقى لجميع المسارات، يمكنك تحديد المحتوى التالي:
  • action:القيمة هي all_stems.
  • audio_id:معرّف الأغنية التي تم إنشاؤها سابقًا.
على سبيل المثال، إذا كان معرّف الأغنية بعد إنشائها هو: bdf23a5a-59f5-4103-b452-054a824a7f9f، فيمكنك ضبط المعلمات كما يلي:
يمكنك الحصول على نتيجة فصل الغناء والموسيقى لجميع المسارات عبر المعلمات أعلاه، والنتيجة كما يلي:
النتيجة المُولَّدة مشابهة لما ورد أعلاه، وبهذا تكتمل عملية فصل الصوت والموسيقى للأغنية المُولَّدة سابقًا.

إضافة مسار صوتي

يُنشئ add_stem مسار الآلة الموسيقية أو الصوت المستهدف للصوت المحدد، عبر استدعاء POST /suno/audios.
  • مطلوب: action، audio_id، stem_type.
  • اختياري: model، prompt، title، style، negative_tags، weirdness، style_influence، audio_weight، max_mode، variety.
  • الفوترة: 0.672 Credits في الوضع العادي؛ و1.344 Credits عندما تكون max_mode بقيمة true.
استجابة الحالة النهائية:

استخراج مسار صوتي

يستخرج extract_stem المسار الصوتي المستهدف من الصوت المحدد، ويُرجع في الوقت نفسه النسخة التكميلية بعد إزالة هذا المسار الصوتي، عبر استدعاء POST /suno/audios.
  • مطلوب: action، audio_id، stem_type.
  • اختياري: audio_format، يدعم عقد القناة المزدوجة العام الحالي mp3 فقط.
  • الفوترة: 1.12 Credits.
تحتفظ data في استجابة الحالة النهائية بقائمة صوتية مسطحة، ويمثل stem_sets علاقة المطابقة بين المسار الصوتي المستهدف والمسار الصوتي التكميلي:

إنشاء مؤثرات صوتية

يُنشئ sounds مؤثرات صوتية لمرة واحدة أو قابلة للتكرار بناءً على وصف نصي، عبر استدعاء POST /suno/audios.
  • مطلوب: action، sound، sound_type.
  • اختياري: model، bpm، key، audio_format؛ يدعم audio_format حاليًا mp3 فقط.
  • sound_type: one-shot أو loop.
  • الفوترة: 0.112 Credits.

ضبط سرعة الصوت

يضبط adjust_speed سرعة تشغيل الصوت المحدد، من خلال استدعاء POST /suno/audios.
  • مطلوب: action، وaudio_id، وspeed_multiplier، وtitle.
  • اختياري: keep_pitch.
  • speed_multiplier: النطاق من 0.25 إلى 4.
  • الفوترة: 0.28 Credits.
مدة الصوت المصدر هي 9.8 ثانية، ونتيجة السرعة 1.1x هي 8.909090909 ثانية:
يتميز نموذج التوليد بالعشوائية. تضمن الواجهة اتساق دلالات المعلمات وحالة المهمة وبنية الاستجابة، ولا تضمن توليد شكل موجي متطابق تمامًا عبر الطلبات المختلفة.

المعلمات المتقدمة للتوليد المخصص

يسمح الرسمي باستخدام المعلمات المتقدمة weirdness==>Weirdness، وstyle_influence==>Style Influence، وaudio_weight==>Audio Influence للتوليد في الوضع المخصص، وذلك وفقًا للأمثلة الرسمية التالية:

تتراوح جميع المعلمات المتقدمة بين 0 و1، والمعلمات المحددة موضحة في الشكل التالي:

بعد إكمال التعبئة، يتم توليد الكود التالي تلقائيًا:

كود Python المقابل:
انقر للتشغيل، ويمكن ملاحظة أنه سيتم الحصول على نتيجة كما يلي:
بهذه الطريقة، يتم استخدام المعلمات المتقدمة لتوليد أغنية مخصصة، وتكون النتيجة مشابهة لما سبق.

التحكم في مدة الأغنية

بشكل افتراضي، يحدد النموذج مدة الأغنية المولدة بنفسه، وعادةً ما تكون بين 30 ثانية و4 دقائق. إذا كانت هناك حاجة إلى منتج نهائي أطول أو أقصر، يمكن تحديد المدة المطلوبة عبر المعلمة duration، ووحدتها الثانية، وتكون قيمتها عددًا صحيحًا بين 10 و360. تُستخدم هذه المعلمة لتوليد الأغاني في الوضع المخصص (custom هو true). تجدر الإشارة بشكل خاص إلى أن duration هو تلميح توجهي وليس قيدًا صارمًا: سيشير النموذج إلى هذه القيمة أثناء الإبداع، لكنه لا يضمن تحقيقها. في الاختبارات الفعلية، تكون المدة الفعلية عادةً أقصر بكثير من القيمة المطلوبة، وقد تختلف مدة الأغنيتين المعادتين من الطلب نفسه بعدة أضعاف. حتى مع الطلبات المتطابقة تمامًا، قد تختلف المدة التي يتم الحصول عليها من عمليات الإرسال المتعددة بشكل كبير. لذلك لا تستخدمه كتحكم دقيق في المدة، وإذا كانت هناك حاجة تجاريًا إلى مدة ثابتة، فقم بقص المنتج النهائي بنفسك أو أعد المحاولة بعد الحصول عليه. كود Python المقابل:
ما يجب الانتباه إليه هو أن duration في الطلب هي المدة المتوقعة، بينما حقل duration لكل أغنية في data ضمن الاستجابة هو المدة الفعلية لتلك الأغنية. الاسمان متماثلان لكن المعنى مختلف، ولا يُضمن أن تساوي المدة الفعلية القيمة المتوقعة. يُعد طول كلمات الأغنية أحد العوامل الرئيسية التي تؤثر في مدة المنتج النهائي؛ وإذا كنت بحاجة إلى منتج نهائي أطول، فمن المستحسن تقديم كلمات أكثر اكتمالًا في الوقت نفسه. ستتحقق الواجهة من أن duration يجب أن تكون عددًا صحيحًا من 10 إلى 360؛ لكنها تظل مجرد هدف للتوليد، وليست ضمانًا لطول المنتج النهائي.

ميزة Add Insterumental

في أغسطس 2025، أطلقت suno حديثًا ميزة Add Insterumental. تحتاج أولًا إلى رفع أغنية غنائية مجردة دون مرافقة موسيقية، لكي تساعدك suno في إضافة الموسيقى إليها. يمكنك أولًا الذهاب إلى Suno Upload API لرفع أغنية غنائية مجردة دون مرافقة موسيقية، وتكون العملية المقابلة كما هو موضح في الصورة أدناه:

ثم تحتاج إلى تسجيل audio_id بعد الرفع، والنتيجة المحددة كما هو موضح في الصورة أدناه:

وأخيرًا، تم الحصول على audio_id وهو: 92254cab-3372-4d9e-bce9-cdcfdbc39070، ثم نحتاج أيضًا إلى تعبئة المعلمات التالية:
  • action: المحتوى هو underpainting.
  • underpainting_start: وقت البدء لإضافة المرافقة الموسيقية إلى الأغنية المرفوعة، والقيمة الافتراضية هي 0.
  • underpainting_end: وقت الانتهاء لإضافة المرافقة الموسيقية إلى الأغنية المرفوعة، ويجب أن يكون أقل من المدة الإجمالية للأغنية.
  • audio_id: معرّف الأغنية الغنائية المجردة دون مرافقة موسيقية التي تم رفعها.
  • style: نمط المرافقة الموسيقية، ومن الأفضل عدم استخدام كلمات لأنها مرافقة موسيقية في النهاية.
بعد إكمال التعبئة، يتم إنشاء الكود تلقائيًا كما يلي:

كود Python المقابل:
انقر على التشغيل، ويمكنك ملاحظة أنه سيتم الحصول على نتيجة كما يلي:
وبهذا تكتمل عملية إضافة المرافقة الموسيقية إلى الأغنية الغنائية المجردة دون مرافقة موسيقية التي تم رفعها، والنتيجة مشابهة لما ورد أعلاه.

ميزة Add Vocals

في أغسطس 2025، أطلقت suno حديثًا ميزة Add Vocals. تحتاج أولًا إلى رفع مقطوعة موسيقية خالصة، لكي تقوم suno بكتابة الكلمات وإنتاج غناء بشري. يمكنك أولًا الذهاب إلى Suno Upload API لرفع أغنية غنائية مجردة دون مرافقة موسيقية، وتكون العملية المقابلة كما هو موضح في الصورة أدناه:

ثم تحتاج إلى تسجيل audio_id بعد الرفع، والنتيجة المحددة كما هو موضح في الصورة أدناه:

وأخيرًا، تم الحصول على audio_id وهو: 92254cab-3372-4d9e-bce9-cdcfdbc39070، ثم نحتاج أيضًا إلى تعبئة المعلمات التالية:
  • action: المحتوى هو overpainting.
  • overpainting_start: وقت البدء لإضافة الصوت البشري إلى الأغنية المرفوعة، والقيمة الافتراضية هي 0.
  • overpainting_end: وقت الانتهاء لإضافة الصوت البشري إلى الأغنية المرفوعة، ويجب أن يكون أقل من المدة الإجمالية للأغنية.
  • audio_id: معرّف الأغنية الغنائية المجردة دون مرافقة موسيقية التي تم رفعها.
  • custom: يجب استخدام الوضع المخصص في هذا الوضع لإدخال كلمات الأغنية.
  • lyric: كلمات الأغنية المُدخلة في الوضع المخصص.
  • style: نمط المرافقة الموسيقية.
بعد إكمال التعبئة، يتم إنشاء الكود تلقائيًا كما يلي:

كود Python المقابل:
انقر للتشغيل، ويمكنك ملاحظة أنك ستحصل على نتيجة، كما يلي:
بهذه الطريقة تكتمل عملية إضافة صوت بشري إلى أغنية غنائية مرفوعة دون مرافقة صوتية، والنتيجة مشابهة لما سبق.

وظيفة Remaster

في ديسمبر 2025، أطلق suno وظيفة Remaster جديدة، ويمكن لهذه الوظيفة إعادة إنشاء الأغاني، ولا يمكن استخدامها عبر حسابات مختلفة، ثم نحتاج أيضًا إلى ملء المعلمات التالية:
  • action: المحتوى هو remaster.
  • audio_id: معرّف الأغنية التي تحتاج إلى إعادة إنشائها.
  • model: يدعم فقط v4.5+ وv5.
  • variation_category: مدعوم فقط في إصدارات v5 وما فوق، وله 3 قيم فقط: high وnormal وsubtle.
بعد إكمال الملء، يتم إنشاء الكود تلقائيًا كما يلي:

كود Python المقابل:
انقر للتشغيل، ويمكنك ملاحظة أنك ستحصل على نتيجة، كما يلي:
بهذه الطريقة تكتمل عملية إعادة إنشاء أغنية تم إنشاؤها بالفعل، والنتيجة مشابهة لما سبق.

وظيفة إنشاء المزج Mashup

في ديسمبر 2025، أطلق suno وظيفة Mashup جديدة، ويمكن لهذه الوظيفة إنشاء أغنية بناءً على أغنيتين مرجعيتين، ثم نحتاج أيضًا إلى ملء المعلمات التالية:
  • action: المحتوى هو mashup.
  • mashup_audio_ids: معرّفا الأغنيتين المرجعيتين. 填写完毕后,自动生成的代码如下:

对应的 Python 代码:
انقر على التشغيل، وستجد أنه سيتم الحصول على نتيجة كما يلي:
بهذا تكتمل عملية إنشاء مزيج من الأغاني المرجعية، وتكون النتيجة مشابهة لما سبق.

Samples إنشاء أغنية بالعينات

يشير samples هنا إلى أخذ عينة من مقطع صوتي واحد: اختيار وقت البداية والنهاية من ملف صوتي موجود، واستخدام هذا المقطع كمادة عيّنة للإبداع. وهو يختلف عن وظيفة الإبداع بالإلهام Inspo التي تستخدم من 1 إلى 4 مقاطع صوتية مرجعية كاملة كما هو موضح أدناه. يجب تعبئة المعلمات التالية:
  • action: تكون القيمة samples.
  • samples_start: وقت بدء أخذ العينة.
  • samples_end: وقت انتهاء أخذ العينة.
  • audio_id: معرّف الأغنية المرجعية المطلوب أخذ عينة منها.
بعد تعبئة البيانات، يتم إنشاء الكود التالي تلقائيًا:

كود Python المقابل:
انقر على التشغيل، وستجد أنه سيتم الحصول على نتيجة كما يلي:
وبهذا تكتمل عملية إنشاء الأغنية باستخدام أخذ العيّنات، والنتيجة مماثلة لما سبق.

ميزة الإبداع بالإلهام Inspo

يمكن لميزة الإبداع بالإلهام Inspo إنشاء موسيقى جديدة استنادًا إلى 1 إلى 4 مقاطع صوتية مرجعية كاملة، وتدعم سحب الصوت أو رفعه كمصدر للإلهام. تستخدم API إجراء inspo الحالي: يوفّر العميل عنوان URL صوتي متاحًا للعامة، وتُكمل الخدمة تلقائيًا إعداد الصوت المرجعي والإبداع، دون حاجة إلى أن يقرأ العميل كلمات الأغنية أو النمط أو المدة بشكل منفصل ثم يجمع الطلب. وهي تختلف عن أخذ العيّنات ضمن نطاق المذكور أعلاه، كما تختلف عن Cover الذي يحاكي نمط الأغنية الأصلية. عند الاستخدام، يجب ملء المعلمات التالية:
  • action: المحتوى هو inspo.
  • audio_urls: قائمة بعناوين URL للصوت المرجعي، ويجب توفير 1 إلى 4 عناوين صوتية متاحة للعامة.
  • model: النموذج المستخدم، ويوصى بـ chirp-v6.
  • prompt: كلمات الأغنية أو نص تلميح إبداعي (اختياري).
ملاحظة: يجب أن تكون الملفات الصوتية المرجعية متاحة للعامة. إذا تطابق الصوت المرجعي تمامًا مع تسجيل معروف في مكتبة أغاني المنصة، فقد يرفض Suno الإنشاء بسبب التحقق من حقوق النشر، ويوصى باستخدام صوت مملوك لك أو تم إنشاؤه بواسطة Suno كمصدر للإلهام.
كود Python المقابل:
فيما يلي نسخة محفوظة من لقطة استجابة تاريخية تم التحقق منها؛ تستخدم اللقطة chirp-v5 في ذلك الوقت، بينما يوصى في مثال الطلب الحالي بـ chirp-v6، وبنية الإرجاع متطابقة:
بهذا تكتمل عملية الإبداع بالإلهام، وتكون النتيجة المعادة متسقة مع إنشاء الأغاني العادي.

الاستدعاء غير المتزامن

نظرًا لأن الوقت الذي يستغرقه Suno لإنشاء الموسيقى طويل نسبيًا، إذ يحتاج تقريبًا إلى 1-2 دقيقة، فإذا لم تستجب واجهة API لفترة طويلة، سيظل طلب HTTP محتفظًا بالاتصال، مما يؤدي إلى استهلاك إضافي لموارد النظام، لذلك توفر واجهة API هذه أيضًا دعمًا للاستدعاء غير المتزامن. تتمثل العملية الكاملة في: عند قيام العميل بإرسال طلب، يحدد بالإضافة إلى ذلك حقل callback_url، وبعد أن يرسل العميل طلب API، ستعيد واجهة API نتيجة فورًا تتضمن معلومات حقل task_id، والذي يمثل معرّف المهمة الحالية. عند اكتمال المهمة، سيتم إرسال نتيجة إنشاء الموسيقى بصيغة POST JSON إلى callback_url الذي حدده العميل، وتتضمن أيضًا حقل task_id، وبهذه الطريقة يمكن ربط نتائج المهمة عبر المعرّف. فيما يلي سنتعرف من خلال مثال على كيفية التنفيذ تحديدًا. أولًا، استدعاء Webhook هو خدمة يمكنها استقبال طلبات HTTP، وينبغي للمطور استبداله بعنوان URL لخادم HTTP الذي أنشأه بنفسه. هنا ولأغراض العرض المريح، نستخدم موقع مثال Webhook عام https://webhook.site/، ويمكنك الحصول على عنوان URL لـ Webhook بمجرد فتح هذا الموقع، كما هو موضح في الصورة: انسخ عنوان URL هذا، ويمكن استخدامه كـ Webhook، والمثال هنا هو https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2. بعد ذلك، يمكننا تعيين الحقل callback_url إلى عنوان URL الخاص بـ Webhook المذكور أعلاه، مع إدخال prompt في الوقت نفسه، كما هو موضح في الصورة: انقر على تشغيل، وستجد أنه يتم الحصول على نتيجة فورًا، كما يلي:
بعد الانتظار قليلًا، يمكننا ملاحظة نتيجة إنشاء الأغنية على https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2، كما هو موضح في الصورة: المحتوى كما يلي:
يمكن ملاحظة وجود حقل task_id في النتيجة، أما الحقول الأخرى فهي مشابهة لما ورد أعلاه، ويمكن تحقيق ربط المهام عبر هذا الحقل. بالطبع، يمكننا أيضًا الحصول على النتيجة من خلال الاستدعاء المتدفق، وكل ما نحتاجه هو تعيين قيمة accept في رأس الطلب إلى application/x-ndjson، وفيما يلي نستخدم إدخالًا نموذجيًا كمثال:

أثناء الانتظار، يمكننا الحصول على المخرجات التالية:
ستدفع الاستجابة المتدفقة، بالتتابع لنفس task_id، حالة المعالجة والنتيجة النهائية؛ وقد احتُفظ أعلاه فقط بالاستجابتين الحقيقيتين الأولية والنهائية، مع حذف التحديثات المتوسطة المتكررة.

معالجة الأخطاء

إذا حدث خطأ، فستحصل على معلومات خطأ مشابهة لما يلي:
فيما يلي قائمة بـ HTTP Status Code وerror.code وerror.message:
ملاحظة: قد تختلف الحصص ورسائل الخطأ بين حسابات المنبع المختلفة. عادةً ما تكون قيود style في chirp-v3-5/chirp-v4 أقل (200)، بينما يدعم chirp-v4-5 والإصدارات الأحدث عادةً حتى 1000؛ وعند استخدام منبع قديم، قد تظهر رسائل توافق مثل Tags too long. أو style must be less than or equal 120. | رمز الحالة | error.code | error.message | | ----------- | ------------- | --------------------------------------------------------------- | | 400 | bad_request | معرّف الأغنية غير موجود أو تم إيقافها. | | 400 | bad_request | المطالبة طويلة جدًا. | | 400 | bad_request | الوسوم طويلة جدًا. | | 400 | bad_request | الصوت المرفوع يطابق عملاً فنياً موجوداً. | | 400 | bad_request | يجب أن تكون instrumental قيمة منطقية | | 400 | bad_request | العنوان طويل جدًا. | | 400 | bad_request | الموضوع طويل جدًا. | | 400 | bad_request | يجب أن يكون style أقل من أو يساوي 120 | | 400 | bad_request | يجب أن تكون custom قيمة منطقية | | 400 | bad_request | audio_id مطلوب عند تمديد الصوت | | 400 | bad_request | continue_at مطلوب عند تمديد الصوت | | 400 | bad_request | يجب أن يكون continue_at رقماً أكبر من 0 | | 400 | bad_request | lyric مطلوب عند تمديد الصوت وعندما تكون instrumental خاطئة | | 400 | bad_request | prompt مطلوب عند إنشاء الصوت | | 400 | bad_request | lyric مطلوب عند إنشاء صوت مخصص | | 403 | forbidden | يبدو أن المطالبة مشوهة | | 403 | forbidden | يبدو أن المطالبة محمية بحقوق الطبع والنشر | | 403 | forbidden | احتوت المطالبة على مادة غير لائقة | | 403 | forbidden | تم وضع علامة على وصف الأغنية للمراجعة | | 403 | forbidden | احتوى وصف الأغنية على اسم فنان | | 403 | forbidden | احتوت الوسوم على اسم فنان | | 403 | forbidden | احتوت كلمات الأغنية على مادة محمية بحقوق الطبع والنشر | | 403 | forbidden | احتوى وصف الأغنية على وسم منتج | | 403 | forbidden | خطأ عام من openAI | | 403 | forbidden | تم وضع علامة على المطالبة للمراجعة | | 500 | api_error | تعذر إنشاء كلمات الأغنية من وصف الأغنية | | 500 | api_error | فشلت المهمة بسبب خطأ غير معروف | | 500 | api_error | لا يوجد عامل متاح في النظام | | 500 | api_error | الخدمة قيد الصيانة، تم إيقاف الإنشاء مؤقتًا | | 504 | timeout | انتهت المهلة أثناء انتظار إنشاء الصوت |