{
  "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\nSpeech 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": "a814621474d2e8ec3aee9303c26d34ff4f6f1519fe9c2be4df1ac141d450581f",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "he",
  "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 ‏$⁩ <em>לכל 1 מיליון תווים</em></dd></div></dl></section><p class=\"note-s\">לפני הבקשה Ailoot משריינת סכום משוער. לאחר קבלת התוצאה היא מסדירה את החיוב הסופי לפי השימוש המדוד. הסדרת חיוב בהזרמה משתמשת ברשומת השימוש הסופית. <a href=\"/docs/he/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": "f3c31241db34ea397231d671598ed7d25c0ef958a3c95f34421bde570e929ce0",
    "input_html_sha256": "a4294c113a4e4b2cc0eec842acc4084bde1aae390fde8b70364cd7bd1a27c161",
    "private_audit_sha256": "3d38a6b53886daa665582d3b3dbb152ed019a6f9bd873b8f4f22412a7cd82901",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/he/speech-02-hd/",
    "description": "Speech-02 HD הוא מודל לסינתזת דיבור, עם דגש על איכות הצליל ועל דמיון הקול.",
    "locale": "he",
    "md_url": "https://ailoot.ai/models/he/speech-02-hd/index.md",
    "title": "speech-02-hd — Ailoot",
    "url": "https://ailoot.ai/models/he/speech-02-hd/"
  },
  "rawModel": {
    "about": "### קול להקראה ולקריאה ממושכת\n\nSpeech 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": "9aa76d869352da603b0d30ab3a7e46b8debe6d80aebe9daf4b0106570d04dea4",
    "renderer_sha256": "c36bd89b8b0dac234af52bf68530df83530b908ec7a9f2e1de2483fe236ae910"
  },
  "sourceRevision": "831fa982ffebf8321acab0ad7f38fe4ec81e2cb671d2c82a38609e53fbd8ab89"
}
