{
  "aboutHtml": "<h4>صوت للأداء والقراءة الطويلة</h4><p>ينشئ Speech 02 HD كلامًا مع التركيز على الجودة والإيقاع وثبات الصوت. يبرز المصنّع قراءة المواد والكتب الصوتية، حيث يجب أن يحتفظ الصوت بطابعه عبر نص طويل. هذا نموذج توليد: يقبل النص ويحوله إلى صوت كلام.</p><h4>الجمع بين النص وجرس الصوت</h4><p>تستند عائلة Speech 02 إلى بنية Transformer ذاتية الانحدار ومشفّر متحدث قابل للتعلم. دُرّب استخراج جرس الصوت وتوليد الكلام معًا لمواءمة خصائص الصوت بالمحتوى. تشمل قدرات العائلة استخدام أصوات مستنسخة مُعدة والجمع بين اللغة واللكنة وطريقة النطق.</p><h4>المشاعر والقراءة متعددة اللغات</h4><p>قد تُحدد المشاعر من معنى النص أو يدويًا. تتوفر السعادة والحزن والغضب والخوف والاشمئزاز والدهشة والهدوء. يعمل النموذج بالروسية والإنجليزية ولغات أخرى؛ ويصف المصنّع لكنات إنجليزية مختلفة والصينية والكانتونية واليابانية والكورية ولغات أوروبية وغيرها.</p><p>يستثني وصف Speech 02 الحالي الفارسية والفلبينية والتاميلية بصورة منفصلة. لا ينبغي نقل القائمة اللغوية العامة للأجيال الأحدث من Speech تلقائيًا إلى هذا الإصدار.</p><h4>إعداد الصوت</h4><p>يتيح التوليد اختيار الصوت وتغيير السرعة <strong>0,5–2</strong> ومستوى الصوت فوق 0 وحتى <strong>10</strong> وطبقة الصوت من <strong>−12 إلى 12</strong>. يمكن لقاموس النطق استبدال الكتابة بالقراءة المطلوبة؛ وتُدعم الرموز الصوتية وطرق النطق اليابانية. يساعد ذلك على التحكم بنطق الأسماء والكلمات الملتبسة.</p><h4>التوقفات والصوت النهائي</h4><p>يتيح المصنّع توقفات بين الأجزاء المنطوقة مدتها <strong>0,01–99,99 ثانية</strong>. تُحدد المدة بدقة منزلتين عشريتين؛ وتوضع العلامات بين الأجزاء المنطوقة ولا تُكرر متتابعةً. يجب أن يحتوي نص الطلب المتزامن الواحد على أقل من <strong>10 000 حرف</strong>. يمكن الحصول على الصوت كاملًا أو تدريجيًا؛ ويُنصح بالإخراج المتدفق للنصوص فوق 3000 حرف.</p><p>من صيغ النموذج MP3 وWAV وFLAC وPCM؛ وتصف إعدادات التوليد العامة أيضًا Opus ونسخ G.711 μ-law. يمكن استخدام صوت أحادي أو ستيريو. تتوفر في هذه البطاقة قراءة النص، وتُطبق إعدادات الصوت الموسعة والتحضير المنفصل للصوت ضمن طريقة الاستدعاء المدعومة عبر Ailoot فقط.</p><p>تشمل إعدادات الصوت الإضافية ترددات أخذ العينات <strong>8 و16 و22,05 و24 و32 و44,1 كيلوهرتز</strong>. تتوفر لـMP3 معدلات بت <strong>32 أو64 أو128 أو256 كيلوبت/ثانية</strong>. يمكن أيضًا تغيير طابع الصوت وتطبيق تأثير واحد: صدى واسع أو صدى قاعة أو صوت هاتفي أو آلي. تُدعم تأثيرات تغيير الصوت لـMP3 وWAV وFLAC عند تلقي الصوت كاملًا، ولـMP3 فقط في الإخراج المتدفق. تستخدم صيغ G.711 μ-law تردد 8 كيلوهرتز. تخص هذه الإمكانات إعدادات التوليد من MiniMax.</p><p>يتيح المصنّع مزامنة الكلام بالنص: طوابع زمنية للجمل أو الكلمات أو الكلمات في الإخراج التدريجي. تساعد هذه النتيجة على مطابقة النطق بعرض النص. تحتاج الإمكانية الإضافية دعم صيغة الإجابة المعنية.</p>",
  "aboutText": "### صوت للأداء والقراءة الطويلة\n\nينشئ Speech 02 HD كلامًا مع التركيز على الجودة والإيقاع وثبات الصوت. يبرز المصنّع قراءة المواد والكتب الصوتية، حيث يجب أن يحتفظ الصوت بطابعه عبر نص طويل. هذا نموذج توليد: يقبل النص ويحوله إلى صوت كلام.\n\n### الجمع بين النص وجرس الصوت\n\nتستند عائلة Speech 02 إلى بنية Transformer ذاتية الانحدار ومشفّر متحدث قابل للتعلم. دُرّب استخراج جرس الصوت وتوليد الكلام معًا لمواءمة خصائص الصوت بالمحتوى. تشمل قدرات العائلة استخدام أصوات مستنسخة مُعدة والجمع بين اللغة واللكنة وطريقة النطق.\n\n### المشاعر والقراءة متعددة اللغات\n\nقد تُحدد المشاعر من معنى النص أو يدويًا. تتوفر السعادة والحزن والغضب والخوف والاشمئزاز والدهشة والهدوء. يعمل النموذج بالروسية والإنجليزية ولغات أخرى؛ ويصف المصنّع لكنات إنجليزية مختلفة والصينية والكانتونية واليابانية والكورية ولغات أوروبية وغيرها.\n\nيستثني وصف Speech 02 الحالي الفارسية والفلبينية والتاميلية بصورة منفصلة. لا ينبغي نقل القائمة اللغوية العامة للأجيال الأحدث من Speech تلقائيًا إلى هذا الإصدار.\n\n### إعداد الصوت\n\nيتيح التوليد اختيار الصوت وتغيير السرعة **0,5–2** ومستوى الصوت فوق 0 وحتى **10** وطبقة الصوت من **−12 إلى 12**. يمكن لقاموس النطق استبدال الكتابة بالقراءة المطلوبة؛ وتُدعم الرموز الصوتية وطرق النطق اليابانية. يساعد ذلك على التحكم بنطق الأسماء والكلمات الملتبسة.\n\n### التوقفات والصوت النهائي\n\nيتيح المصنّع توقفات بين الأجزاء المنطوقة مدتها **0,01–99,99 ثانية**. تُحدد المدة بدقة منزلتين عشريتين؛ وتوضع العلامات بين الأجزاء المنطوقة ولا تُكرر متتابعةً. يجب أن يحتوي نص الطلب المتزامن الواحد على أقل من **10 000 حرف**. يمكن الحصول على الصوت كاملًا أو تدريجيًا؛ ويُنصح بالإخراج المتدفق للنصوص فوق 3000 حرف.\n\nمن صيغ النموذج MP3 وWAV وFLAC وPCM؛ وتصف إعدادات التوليد العامة أيضًا Opus ونسخ G.711 μ-law. يمكن استخدام صوت أحادي أو ستيريو. تتوفر في هذه البطاقة قراءة النص، وتُطبق إعدادات الصوت الموسعة والتحضير المنفصل للصوت ضمن طريقة الاستدعاء المدعومة عبر Ailoot فقط.\n\nتشمل إعدادات الصوت الإضافية ترددات أخذ العينات **8 و16 و22,05 و24 و32 و44,1 كيلوهرتز**. تتوفر لـMP3 معدلات بت **32 أو64 أو128 أو256 كيلوبت/ثانية**. يمكن أيضًا تغيير طابع الصوت وتطبيق تأثير واحد: صدى واسع أو صدى قاعة أو صوت هاتفي أو آلي. تُدعم تأثيرات تغيير الصوت لـMP3 وWAV وFLAC عند تلقي الصوت كاملًا، ولـMP3 فقط في الإخراج المتدفق. تستخدم صيغ G.711 μ-law تردد 8 كيلوهرتز. تخص هذه الإمكانات إعدادات التوليد من MiniMax.\n\nيتيح المصنّع مزامنة الكلام بالنص: طوابع زمنية للجمل أو الكلمات أو الكلمات في الإخراج التدريجي. تساعد هذه النتيجة على مطابقة النطق بعرض النص. تحتاج الإمكانية الإضافية دعم صيغة الإجابة المعنية.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "071e0fbf530b6f42d17faa63998560b981dafbba0e5ffaca737c54e32c4c6724",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ar",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">MM</span><h2 id=\"sheet-title\">speech-02-hd</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"إغلاق\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>speech-02-hd</code><button type=\"button\" id=\"copy-id\">نسخ ID</button></div><nav class=\"card-jump-nav\" aria-label=\"أقسام بطاقة النموذج\"><button type=\"button\" data-card-jump=\"overview\">البداية</button><button type=\"button\" data-card-jump=\"methods\">المدخلات والطرائق</button><button type=\"button\" data-card-jump=\"pricing\">الباقات</button><button type=\"button\" data-card-jump=\"examples\">أمثلة</button><button type=\"button\" data-card-jump=\"results\">النتائج</button><button type=\"button\" data-card-jump=\"aliases\">الأسماء البديلة</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"طرائق API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|speech|/v1/audio/speech|speech-02-hd\">توليد الكلام</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">البداية</h3><p class=\"mdesc-full\">Speech-02 HD هو نموذج لتوليد الكلام يركز على جودة الصوت وتشابه الصوت.</p><dl class=\"card-io\" data-card-io><div><dt>المدخلات المقبولة</dt><dd>النص</dd></div><div><dt>النتائج</dt><dd>speech</dd></div></dl><details class=\"card-about\"><summary>عن النموذج</summary><p class=\"note-s\" data-model-method-boundary>يغطي هذا الوصف قدرات النموذج. وترد أدناه المدخلات والمخرجات والخيارات المتاحة في Ailoot للطريقة المحددة.</p><div class=\"mabout\" id=\"m-about\"><h4>صوت للأداء والقراءة الطويلة</h4><p>ينشئ Speech 02 HD كلامًا مع التركيز على الجودة والإيقاع وثبات الصوت. يبرز المصنّع قراءة المواد والكتب الصوتية، حيث يجب أن يحتفظ الصوت بطابعه عبر نص طويل. هذا نموذج توليد: يقبل النص ويحوله إلى صوت كلام.</p><h4>الجمع بين النص وجرس الصوت</h4><p>تستند عائلة Speech 02 إلى بنية Transformer ذاتية الانحدار ومشفّر متحدث قابل للتعلم. دُرّب استخراج جرس الصوت وتوليد الكلام معًا لمواءمة خصائص الصوت بالمحتوى. تشمل قدرات العائلة استخدام أصوات مستنسخة مُعدة والجمع بين اللغة واللكنة وطريقة النطق.</p><h4>المشاعر والقراءة متعددة اللغات</h4><p>قد تُحدد المشاعر من معنى النص أو يدويًا. تتوفر السعادة والحزن والغضب والخوف والاشمئزاز والدهشة والهدوء. يعمل النموذج بالروسية والإنجليزية ولغات أخرى؛ ويصف المصنّع لكنات إنجليزية مختلفة والصينية والكانتونية واليابانية والكورية ولغات أوروبية وغيرها.</p><p>يستثني وصف Speech 02 الحالي الفارسية والفلبينية والتاميلية بصورة منفصلة. لا ينبغي نقل القائمة اللغوية العامة للأجيال الأحدث من Speech تلقائيًا إلى هذا الإصدار.</p><h4>إعداد الصوت</h4><p>يتيح التوليد اختيار الصوت وتغيير السرعة <strong>0,5–2</strong> ومستوى الصوت فوق 0 وحتى <strong>10</strong> وطبقة الصوت من <strong>−12 إلى 12</strong>. يمكن لقاموس النطق استبدال الكتابة بالقراءة المطلوبة؛ وتُدعم الرموز الصوتية وطرق النطق اليابانية. يساعد ذلك على التحكم بنطق الأسماء والكلمات الملتبسة.</p><h4>التوقفات والصوت النهائي</h4><p>يتيح المصنّع توقفات بين الأجزاء المنطوقة مدتها <strong>0,01–99,99 ثانية</strong>. تُحدد المدة بدقة منزلتين عشريتين؛ وتوضع العلامات بين الأجزاء المنطوقة ولا تُكرر متتابعةً. يجب أن يحتوي نص الطلب المتزامن الواحد على أقل من <strong>10 000 حرف</strong>. يمكن الحصول على الصوت كاملًا أو تدريجيًا؛ ويُنصح بالإخراج المتدفق للنصوص فوق 3000 حرف.</p><p>من صيغ النموذج MP3 وWAV وFLAC وPCM؛ وتصف إعدادات التوليد العامة أيضًا Opus ونسخ G.711 μ-law. يمكن استخدام صوت أحادي أو ستيريو. تتوفر في هذه البطاقة قراءة النص، وتُطبق إعدادات الصوت الموسعة والتحضير المنفصل للصوت ضمن طريقة الاستدعاء المدعومة عبر Ailoot فقط.</p><p>تشمل إعدادات الصوت الإضافية ترددات أخذ العينات <strong>8 و16 و22,05 و24 و32 و44,1 كيلوهرتز</strong>. تتوفر لـMP3 معدلات بت <strong>32 أو64 أو128 أو256 كيلوبت/ثانية</strong>. يمكن أيضًا تغيير طابع الصوت وتطبيق تأثير واحد: صدى واسع أو صدى قاعة أو صوت هاتفي أو آلي. تُدعم تأثيرات تغيير الصوت لـMP3 وWAV وFLAC عند تلقي الصوت كاملًا، ولـMP3 فقط في الإخراج المتدفق. تستخدم صيغ G.711 μ-law تردد 8 كيلوهرتز. تخص هذه الإمكانات إعدادات التوليد من MiniMax.</p><p>يتيح المصنّع مزامنة الكلام بالنص: طوابع زمنية للجمل أو الكلمات أو الكلمات في الإخراج التدريجي. تساعد هذه النتيجة على مطابقة النطق بعرض النص. تحتاج الإمكانية الإضافية دعم صيغة الإجابة المعنية.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">متاح في Ailoot · المدخلات والطرائق</h3><details class=\"card-method\" open><summary><b>Ailoot · توليد الكلام</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>الإدخال</dt><dd><code>text</code></dd></div><div><dt>الإخراج</dt><dd><code>speech</code></dd></div><div><dt>صيغة الإخراج</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>الحقل</th><th>النوع</th><th>المتطلب</th><th>القيم والحدود</th><th>القيمة الافتراضية</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>string</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>مطلوب</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>speech-02-hd</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>string</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>مطلوب</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>الحد الأدنى للطول: ⁦1⁩</div><div>الحد الأقصى للطول (غير شامل): ⁦10,000⁩</div><div>الوحدة: محارف Unicode</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>string</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>مطلوب</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>النمط: ^[A-Za-z0-9_-]{1,128}$</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span><code>string</code></td><td data-cell-label=\"المتطلب\"><span class=\"card-cell-label\">المتطلب</span>اختياري</td><td data-cell-label=\"القيم والحدود\"><span class=\"card-cell-label\">القيم والحدود</span><div>mp3</div></td><td data-cell-label=\"القيمة الافتراضية\" data-default=\"unspecified\"><span class=\"card-cell-label\">القيمة الافتراضية</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>تركيبات مواد الإدخال</summary><p class=\"note-s\"><b>text_to_speech</b> · مطلوب: input</p></details><details class=\"note-s\" data-method-contract><summary>معلمات الطريقة ودورة حياتها</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>المعلمة</th><th>المواصفات</th></tr></thead><tbody><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>material_types</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>text</td></tr><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>required</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>null</td></tr><tr><th data-cell-label=\"المعلمة\" scope=\"row\"><span class=\"card-cell-label\">المعلمة</span><code>optional_controls</code></th><td data-cell-label=\"المواصفات\"><span class=\"card-cell-label\">المواصفات</span>null</td></tr></tbody></table></div><p>دورة الحياة: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · قيمة task_id الفعلية المُعادة أو سجل مكتبة الوسائط</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">الباقات</h3><h4>تعرفات طرائق Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> توليد الكلام</b><code>POST /v1/audio/speech</code></header><dl><div><dt>الإدخال</dt><dd>⁦‏100.00 US$⁩ <em>لكل 1 مليون حرف</em></dd></div></dl></section><p class=\"note-s\">تحجز Ailoot مبلغًا تقديريًا قبل الطلب. وبعد ظهور النتيجة، تُسوّي الرسوم النهائية بناءً على الاستخدام المقاس. وتستخدم تسوية البث سجل الاستخدام النهائي. <a href=\"/docs/ar/billing/reserve/\">كيفية عمل حجز المبلغ وتسوية الرسوم →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">أمثلة للطلبات</h3><h4>Ailoot · توليد الكلام</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"خيارات الشيفرة\"><button class=\"cg-tab\" id=\"model-code-467-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-467-panel-0\" aria-selected=\"true\" tabindex=\"0\">مثال للكلام</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"نسخ الشيفرة\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-467-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-467-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}&quot;\nexport AILOOT_TEXT_FILE\n: &quot;${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;speech-02-hd&quot;, &quot;input&quot;: &quot;&quot;}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;input&quot;]=text\nimport re\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nif not re.fullmatch(r&quot;[A-Za-z0-9_-]{1,128}&quot;,voice):raise SystemExit(&quot;Set an actual accepted voice ID&quot;)\np[&quot;voice&quot;]=voice\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">استلام النتائج وحفظها</h3><h4>Ailoot · توليد الكلام</h4><p class=\"note-s\">mp3</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>الاحتفاظ بكل النتائج المكتملة</h5><p class=\"note-s\">احتفظ بكل استجابة كاملة وكل ملف وجزء محتوى تم إرجاعه.</p><p class=\"note-s\">احتفظ بالنتيجة الثنائية كاملة وبجميع الترويسات. إذا أُعيدت بيانات JSON أو مخرجات متعددة، فاحتفظ بكل عنصر بيانات واجلب محتوى كل عنوان URL فعلي موقّع لأصل من أصول الوسائط.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>عند الحاجة إلى التحقق من الاستجابة الأصلية</h5><p class=\"note-s\">احتفظ بقيمة operation_id/X-Client-Request-ID الأصلية للمطابقة دون إعادة الإرسال؛ لا يوجد مسار مخصص للاستعلام الدوري عن الصوت.</p></div><details class=\"card-about\" data-output-fields><summary>حقول الاستجابة</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>الحقل</th><th>النوع</th></tr></thead><tbody><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span>bytes</td></tr><tr><th data-cell-label=\"الحقل\" scope=\"row\"><span class=\"card-cell-label\">الحقل</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"النوع\" data-field-type><span class=\"card-cell-label\">النوع</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>الأخطاء والخطوات التالية</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>الاستجابة</th><th>الشرط</th><th>الخطوة التالية</th></tr></thead><tbody><tr><th data-cell-label=\"الاستجابة\" scope=\"row\"><span class=\"card-cell-label\">الاستجابة</span>⁦400⁩ · <code>invalid_request_error</code></th><td data-cell-label=\"الشرط\"><span class=\"card-cell-label\">الشرط</span>حقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة</td><td data-cell-label=\"الخطوة التالية\"><span class=\"card-cell-label\">الخطوة التالية</span>صحّح الحقول المحددة قبل طلب إنشاء جديد.</td></tr><tr><th data-cell-label=\"الاستجابة\" scope=\"row\"><span class=\"card-cell-label\">الاستجابة</span><code>server_error</code></th><td data-cell-label=\"الشرط\"><span class=\"card-cell-label\">الشرط</span>تشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق</td><td data-cell-label=\"الخطوة التالية\"><span class=\"card-cell-label\">الخطوة التالية</span>احتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">الأسماء البديلة</h3><h4>الأسماء البديلة للنموذج</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=speech-02-hd&amp;route=Core&amp;caller=speech-02-hd&amp;fmt=speech\"><code>speech-02-hd</code></a></span></p><h4>الأسماء البديلة لمسارات الطرائق</h4><p class=\"note-s\">استخدم مسارات الطرائق المعروضة أعلاه.</p><h4>معرّفات النماذج ذات الصلة IDs</h4><p class=\"note-s\"><a href=\"#m=speech-02-hd&amp;route=Core&amp;caller=speech-02-hd&amp;fmt=speech\"><code>speech-02-hd</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "speech-02-hd",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "speech-02-hd",
        "route_label": "Core"
      },
      "method_key": "Core|speech|/v1/audio/speech|speech-02-hd",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "حقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة",
                "http_status": 400,
                "recovery": "صحّح الحقول المحددة قبل طلب إنشاء جديد.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "تشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق",
                "http_status": null,
                "recovery": "احتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء.",
                "type": "server_error"
              }
            ],
            "hints": [
              "MiniMax accepts optionalresponse_formatmp3. Actual voice IDs come from the selected model voice profile.",
              "The facade uses bufferedMP3; provider speed/volume/pitch/sample-rate fields are fixed by the adapter, not callercontrols."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "احتفظ بقيمة operation_id/X-Client-Request-ID الأصلية للمطابقة دون إعادة الإرسال؛ لا يوجد مسار مخصص للاستعلام الدوري عن الصوت."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "احتفظ بالنتيجة الثنائية كاملة وبجميع الترويسات. إذا أُعيدت بيانات JSON أو مخرجات متعددة، فاحتفظ بكل عنصر بيانات واجلب محتوى كل عنوان URL فعلي موقّع لأصل من أصول الوسائط.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "speech-02-hd"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length_exclusive": 10000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "محارف Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "voice",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "قيمة task_id الفعلية المُعادة أو سجل مكتبة الوسائط",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "operation_modes": [
            "audio_speech"
          ],
          "output": {
            "family": [
              "speech"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}\"\nexport AILOOT_TEXT_FILE\n: \"${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"speech-02-hd\", \"input\": \"\"}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"input\"]=text\nimport re\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nif not re.fullmatch(r\"[A-Za-z0-9_-]{1,128}\",voice):raise SystemExit(\"Set an actual accepted voice ID\")\np[\"voice\"]=voice\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "Synthesize your actual script",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "توليد الكلام",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 100,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-02-hd",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "tts_million_chars",
        "units": [
          {
            "key": "tts_million_chars",
            "label": "per 1 million characters",
            "side": "in",
            "usd": 100
          }
        ]
      }
    }
  ],
  "model_id": "speech-02-hd",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "bd20f0242c55c676189e6281201bcbf0e0b30ac2236ade5a4d89b64281df3989",
    "input_html_sha256": "0840b77fdc9f2628e1b5c065fc810dc937b428d2e432d9d31297a5cc1385752a",
    "private_audit_sha256": "f7194883ea2c094c10d7063472a11930befeae0cf7ab17dbcd5014b0b4c4c3e4",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ar/speech-02-hd/",
    "description": "Speech-02 HD هو نموذج لتوليد الكلام يركز على جودة الصوت وتشابه الصوت.",
    "locale": "ar",
    "md_url": "https://ailoot.ai/models/ar/speech-02-hd/index.md",
    "title": "speech-02-hd — Ailoot",
    "url": "https://ailoot.ai/models/ar/speech-02-hd/"
  },
  "rawModel": {
    "about": "### صوت للأداء والقراءة الطويلة\n\nينشئ Speech 02 HD كلامًا مع التركيز على الجودة والإيقاع وثبات الصوت. يبرز المصنّع قراءة المواد والكتب الصوتية، حيث يجب أن يحتفظ الصوت بطابعه عبر نص طويل. هذا نموذج توليد: يقبل النص ويحوله إلى صوت كلام.\n\n### الجمع بين النص وجرس الصوت\n\nتستند عائلة Speech 02 إلى بنية Transformer ذاتية الانحدار ومشفّر متحدث قابل للتعلم. دُرّب استخراج جرس الصوت وتوليد الكلام معًا لمواءمة خصائص الصوت بالمحتوى. تشمل قدرات العائلة استخدام أصوات مستنسخة مُعدة والجمع بين اللغة واللكنة وطريقة النطق.\n\n### المشاعر والقراءة متعددة اللغات\n\nقد تُحدد المشاعر من معنى النص أو يدويًا. تتوفر السعادة والحزن والغضب والخوف والاشمئزاز والدهشة والهدوء. يعمل النموذج بالروسية والإنجليزية ولغات أخرى؛ ويصف المصنّع لكنات إنجليزية مختلفة والصينية والكانتونية واليابانية والكورية ولغات أوروبية وغيرها.\n\nيستثني وصف Speech 02 الحالي الفارسية والفلبينية والتاميلية بصورة منفصلة. لا ينبغي نقل القائمة اللغوية العامة للأجيال الأحدث من Speech تلقائيًا إلى هذا الإصدار.\n\n### إعداد الصوت\n\nيتيح التوليد اختيار الصوت وتغيير السرعة **0,5–2** ومستوى الصوت فوق 0 وحتى **10** وطبقة الصوت من **−12 إلى 12**. يمكن لقاموس النطق استبدال الكتابة بالقراءة المطلوبة؛ وتُدعم الرموز الصوتية وطرق النطق اليابانية. يساعد ذلك على التحكم بنطق الأسماء والكلمات الملتبسة.\n\n### التوقفات والصوت النهائي\n\nيتيح المصنّع توقفات بين الأجزاء المنطوقة مدتها **0,01–99,99 ثانية**. تُحدد المدة بدقة منزلتين عشريتين؛ وتوضع العلامات بين الأجزاء المنطوقة ولا تُكرر متتابعةً. يجب أن يحتوي نص الطلب المتزامن الواحد على أقل من **10 000 حرف**. يمكن الحصول على الصوت كاملًا أو تدريجيًا؛ ويُنصح بالإخراج المتدفق للنصوص فوق 3000 حرف.\n\nمن صيغ النموذج MP3 وWAV وFLAC وPCM؛ وتصف إعدادات التوليد العامة أيضًا Opus ونسخ G.711 μ-law. يمكن استخدام صوت أحادي أو ستيريو. تتوفر في هذه البطاقة قراءة النص، وتُطبق إعدادات الصوت الموسعة والتحضير المنفصل للصوت ضمن طريقة الاستدعاء المدعومة عبر Ailoot فقط.\n\nتشمل إعدادات الصوت الإضافية ترددات أخذ العينات **8 و16 و22,05 و24 و32 و44,1 كيلوهرتز**. تتوفر لـMP3 معدلات بت **32 أو64 أو128 أو256 كيلوبت/ثانية**. يمكن أيضًا تغيير طابع الصوت وتطبيق تأثير واحد: صدى واسع أو صدى قاعة أو صوت هاتفي أو آلي. تُدعم تأثيرات تغيير الصوت لـMP3 وWAV وFLAC عند تلقي الصوت كاملًا، ولـMP3 فقط في الإخراج المتدفق. تستخدم صيغ G.711 μ-law تردد 8 كيلوهرتز. تخص هذه الإمكانات إعدادات التوليد من MiniMax.\n\nيتيح المصنّع مزامنة الكلام بالنص: طوابع زمنية للجمل أو الكلمات أو الكلمات في الإخراج التدريجي. تساعد هذه النتيجة على مطابقة النطق بعرض النص. تحتاج الإمكانية الإضافية دعم صيغة الإجابة المعنية.",
    "alias_of": null,
    "aliases": [],
    "author": "MiniMax",
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "speech-02-hd",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "حقول مطلوبة أو تمثيل مادة أو قيمة معلمة غير صحيحة",
                "http_status": 400,
                "recovery": "صحّح الحقول المحددة قبل طلب إنشاء جديد.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "تشير الاستجابة المُعادة إلى أن العملية أو النتيجة تتطلب التحقق",
                "http_status": null,
                "recovery": "احتفظ بمعرّف العملية أو المهمة الأصلي المُعاد، وبترويسات الطلب وبالاستجابة؛ وواصل عمليات القراءة المدعومة لتلك العملية الأصلية. لا تُعِد إرسال طلب الإنشاء.",
                "type": "server_error"
              }
            ],
            "hints": [
              "MiniMax accepts optionalresponse_formatmp3. Actual voice IDs come from the selected model voice profile.",
              "The facade uses bufferedMP3; provider speed/volume/pitch/sample-rate fields are fixed by the adapter, not callercontrols."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "احتفظ بقيمة operation_id/X-Client-Request-ID الأصلية للمطابقة دون إعادة الإرسال؛ لا يوجد مسار مخصص للاستعلام الدوري عن الصوت."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "احتفظ بالنتيجة الثنائية كاملة وبجميع الترويسات. إذا أُعيدت بيانات JSON أو مخرجات متعددة، فاحتفظ بكل عنصر بيانات واجلب محتوى كل عنوان URL فعلي موقّع لأصل من أصول الوسائط.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "speech-02-hd"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length_exclusive": 10000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "محارف Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "voice",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "بُنى الطرق ومعرّفاتها دقيقة؛ قدرة المورد منفصلة عن السماح بالطلب."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "قيمة task_id الفعلية المُعادة أو سجل مكتبة الوسائط",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "operation_modes": [
            "audio_speech"
          ],
          "output": {
            "family": [
              "speech"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}\"\nexport AILOOT_TEXT_FILE\n: \"${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"speech-02-hd\", \"input\": \"\"}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"input\"]=text\nimport re\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nif not re.fullmatch(r\"[A-Za-z0-9_-]{1,128}\",voice):raise SystemExit(\"Set an actual accepted voice ID\")\np[\"voice\"]=voice\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "Synthesize your actual script",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "توليد الكلام",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 100,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-02-hd",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "tts_million_chars",
        "units": [
          {
            "key": "tts_million_chars",
            "label": "per 1 million characters",
            "side": "in",
            "usd": 100
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "speech-02-hd",
        "request_model_id": "speech-02-hd",
        "route_label": "Core"
      }
    ],
    "name": "speech-02-hd",
    "price": {
      "in": 100,
      "in_label": "per 1 million characters",
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Speech-02 HD هو نموذج لتوليد الكلام يركز على جودة الصوت وتشابه الصوت."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Speech-02 HD هو نموذج لتوليد الكلام يركز على جودة الصوت وتشابه الصوت.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b1b527f9768922beb22674692f79c897794bc3062da8e141d77101a34e24f923",
    "renderer_sha256": "081ee0fd5b6b1b60564b02c52d62547e01e922c8c0a16e91a0d055073e76a10e"
  },
  "sourceRevision": "bca65bcad2e678e41a76a122b701c5a47ad6c41590bef7da94ef7527cd502aac"
}
