{
  "aboutHtml": "<h4>Γρήγορη σύνθεση φράσεων καθημερινού λόγου</h4><p>Το Speech 2.8 Turbo συνδυάζει τη γρήγορη παραγωγή ήχου με τη φυσική κίνηση της φωνής. Ο κατασκευαστής το προορίζει για ομαλή, συνομιλιακή απόδοση: σύντομες φράσεις, εκφώνηση κειμένου και φωνητική αλληλεπίδραση. Αυτή η κάρτα δέχεται κείμενο και επιστρέφει ήχο ομιλίας.</p><h4>Γέλιο, αναπνοή και επιφωνήματα</h4><p>Όπως και η έκδοση HD της ίδιας γενιάς, το Turbo υποστηρίζει τους ηχητικούς δείκτες του Speech 2.8. Στο κείμενο μπορούν να ενσωματώνονται δείκτες γέλιου, ελαφρού γέλιου, βήχα, καθαρίσματος λαιμού, εισπνοής, εκπνοής, αναστεναγμού και άλλων σύντομων ήχων. Αυτή η ελεγχόμενη ανομοιομορφία κάνει τη φράση να μοιάζει με συνομιλία: αποκτά αναπνοές και παύσεις που συνδέονται με το περιεχόμενο.</p><p>Ο ηχητικός δείκτης αφορά συγκεκριμένο σημείο του κειμένου. Χρησιμοποιούνται οι ενδείξεις σε παρενθέσεις που προβλέπει το μοντέλο, για παράδειγμα <code>(laughs)</code> ή <code>(breath)</code>. Μια αυθαίρετη περιγραφή ενός εφέ δεν ισοδυναμεί με υποστηριζόμενο δείκτη.</p><h4>Φωνή και γλώσσα</h4><p>Η οικογένεια Speech 2.8 υποστηρίζει <strong>40 γλώσσες</strong>, συμπεριλαμβανομένων των ρωσικών, και εργασία με έτοιμες φωνές. Ο κατασκευαστής επισημαίνει την αναγνωρίσιμη υφή της φωνής, τα χαρακτηριστικά της αναπνοής και τη μείωση ψηφιακών παραμορφώσεων. Η δυνατότητα κλωνοποίησης αφορά χωριστή προετοιμασία της φωνής, η οποία μπορεί κατόπιν να χρησιμοποιηθεί στη σύνθεση.</p><p>Η MiniMax προβλέπει επιλογή φωνής και έλεγχο ταχύτητας, έντασης και τονικού ύψους. Η ταχύτητα ορίζεται στο εύρος <strong>0,5–2</strong>, η ένταση πάνω από 0 και έως <strong>10</strong>, και η μεταβολή του τονικού ύψους από <strong>−12 έως 12</strong>. Το συναίσθημα μπορεί να επιλέγεται από το μοντέλο βάσει του νοήματος του κειμένου ή να ορίζεται χειροκίνητα: χαρά, λύπη, θυμός, φόβος, αποστροφή, έκπληξη ή ηρεμία.</p><p>Η προφορά μπορεί να διευκρινίζεται με λεξικό αντικαταστάσεων και φωνητική γραφή· προβλέπονται το Διεθνές Φωνητικό Αλφάβητο, το κινεζικό πινγίν και ιαπωνικές παραλλαγές ανάγνωσης. Οι παύσεις τοποθετούνται μεταξύ εκφωνούμενων τμημάτων στο εύρος <strong>0,01–99,99 δευτερολέπτων</strong>. Η διάρκειά τους ορίζεται με ακρίβεια δύο δεκαδικών ψηφίων· οι δείκτες τοποθετούνται μεταξύ εκφωνούμενων τμημάτων και όχι διαδοχικά. Αυτές οι ρυθμίσεις βοηθούν να προσαρμόζεται η εκφώνηση ονομάτων, συντομογραφιών και αμφίσημων λέξεων στον σκοπό της αφήγησης.</p><h4>Σταδιακή έξοδος και μορφή ήχου</h4><p>Η σύνθεση δέχεται κείμενο με λιγότερους από <strong>10 000 χαρακτήρες</strong>. Για μεγάλα κείμενα πάνω από 3000 χαρακτήρες, ο κατασκευαστής συνιστά έξοδο σε ροή· προβλέπεται επίσης λήψη του ολοκληρωμένου ήχου ως συνόλου. Οι γενικές ρυθμίσεις σύνθεσης περιλαμβάνουν MP3, PCM, FLAC, WAV, Opus και παραλλαγές G.711 μ-law, μονοφωνικό ή στερεοφωνικό ήχο· οι διαθέσιμες μορφές ενός συγκεκριμένου αιτήματος καθορίζονται από τις δυνατότητες της Ailoot.</p><p>Η ταχύτητα του Turbo είναι χαρακτηριστικό της παραλλαγής του μοντέλου και όχι υπόσχεση σταθερής καθυστέρησης για την ολοκληρωμένη φράση. Δεν ορίζεται εδώ αριθμητική καθυστέρηση για το συγκεκριμένο αίτημα. Οι αναφερόμενες προηγμένες ρυθμίσεις του κατασκευαστή απαιτούν υποστήριξη στον επιλεγμένο τρόπο πρόσβασης μέσω Ailoot.</p><p>Οι πρόσθετες ρυθμίσεις ήχου περιλαμβάνουν συχνότητες δειγματοληψίας <strong>8, 16, 22,05, 24, 32 και 44,1 kHz</strong>. Για MP3 προβλέπεται ρυθμός μετάδοσης <strong>32, 64, 128 ή 256 kbit/s</strong>. Μπορεί επίσης να αλλάζει η χροιά της φωνής και να εφαρμόζεται ένα εφέ: ηχώ μεγάλου χώρου, ηχώ αίθουσας, τηλεφωνικός ήχος ή ρομποτική φωνή. Τα εφέ μεταβολής φωνής υποστηρίζονται για MP3, WAV και FLAC όταν ο ήχος λαμβάνεται ολόκληρος, ενώ σε έξοδο σε ροή μόνο για MP3. Οι μορφές G.711 μ-law χρησιμοποιούν συχνότητα 8 kHz. Αυτές οι δυνατότητες ανήκουν στις ρυθμίσεις σύνθεσης της MiniMax.</p><p>Ο κατασκευαστής προβλέπει συγχρονισμό ομιλίας και κειμένου: χρονικές σημάνσεις ανά πρόταση, ανά λέξη ή ανά λέξη κατά τη σταδιακή έξοδο. Αυτό βοηθά να συνδυάζεται η εκφώνηση με την εμφάνιση του κειμένου. Η πρόσθετη δυνατότητα απαιτεί υποστήριξη της αντίστοιχης μορφής απάντησης.</p>",
  "aboutText": "### Γρήγορη σύνθεση φράσεων καθημερινού λόγου\n\nΤο Speech 2.8 Turbo συνδυάζει τη γρήγορη παραγωγή ήχου με τη φυσική κίνηση της φωνής. Ο κατασκευαστής το προορίζει για ομαλή, συνομιλιακή απόδοση: σύντομες φράσεις, εκφώνηση κειμένου και φωνητική αλληλεπίδραση. Αυτή η κάρτα δέχεται κείμενο και επιστρέφει ήχο ομιλίας.\n\n### Γέλιο, αναπνοή και επιφωνήματα\n\nΌπως και η έκδοση HD της ίδιας γενιάς, το Turbo υποστηρίζει τους ηχητικούς δείκτες του Speech 2.8. Στο κείμενο μπορούν να ενσωματώνονται δείκτες γέλιου, ελαφρού γέλιου, βήχα, καθαρίσματος λαιμού, εισπνοής, εκπνοής, αναστεναγμού και άλλων σύντομων ήχων. Αυτή η ελεγχόμενη ανομοιομορφία κάνει τη φράση να μοιάζει με συνομιλία: αποκτά αναπνοές και παύσεις που συνδέονται με το περιεχόμενο.\n\nΟ ηχητικός δείκτης αφορά συγκεκριμένο σημείο του κειμένου. Χρησιμοποιούνται οι ενδείξεις σε παρενθέσεις που προβλέπει το μοντέλο, για παράδειγμα `(laughs)` ή `(breath)`. Μια αυθαίρετη περιγραφή ενός εφέ δεν ισοδυναμεί με υποστηριζόμενο δείκτη.\n\n### Φωνή και γλώσσα\n\nΗ οικογένεια Speech 2.8 υποστηρίζει **40 γλώσσες**, συμπεριλαμβανομένων των ρωσικών, και εργασία με έτοιμες φωνές. Ο κατασκευαστής επισημαίνει την αναγνωρίσιμη υφή της φωνής, τα χαρακτηριστικά της αναπνοής και τη μείωση ψηφιακών παραμορφώσεων. Η δυνατότητα κλωνοποίησης αφορά χωριστή προετοιμασία της φωνής, η οποία μπορεί κατόπιν να χρησιμοποιηθεί στη σύνθεση.\n\nΗ MiniMax προβλέπει επιλογή φωνής και έλεγχο ταχύτητας, έντασης και τονικού ύψους. Η ταχύτητα ορίζεται στο εύρος **0,5–2**, η ένταση πάνω από 0 και έως **10**, και η μεταβολή του τονικού ύψους από **−12 έως 12**. Το συναίσθημα μπορεί να επιλέγεται από το μοντέλο βάσει του νοήματος του κειμένου ή να ορίζεται χειροκίνητα: χαρά, λύπη, θυμός, φόβος, αποστροφή, έκπληξη ή ηρεμία.\n\nΗ προφορά μπορεί να διευκρινίζεται με λεξικό αντικαταστάσεων και φωνητική γραφή· προβλέπονται το Διεθνές Φωνητικό Αλφάβητο, το κινεζικό πινγίν και ιαπωνικές παραλλαγές ανάγνωσης. Οι παύσεις τοποθετούνται μεταξύ εκφωνούμενων τμημάτων στο εύρος **0,01–99,99 δευτερολέπτων**. Η διάρκειά τους ορίζεται με ακρίβεια δύο δεκαδικών ψηφίων· οι δείκτες τοποθετούνται μεταξύ εκφωνούμενων τμημάτων και όχι διαδοχικά. Αυτές οι ρυθμίσεις βοηθούν να προσαρμόζεται η εκφώνηση ονομάτων, συντομογραφιών και αμφίσημων λέξεων στον σκοπό της αφήγησης.\n\n### Σταδιακή έξοδος και μορφή ήχου\n\nΗ σύνθεση δέχεται κείμενο με λιγότερους από **10 000 χαρακτήρες**. Για μεγάλα κείμενα πάνω από 3000 χαρακτήρες, ο κατασκευαστής συνιστά έξοδο σε ροή· προβλέπεται επίσης λήψη του ολοκληρωμένου ήχου ως συνόλου. Οι γενικές ρυθμίσεις σύνθεσης περιλαμβάνουν MP3, PCM, FLAC, WAV, Opus και παραλλαγές G.711 μ-law, μονοφωνικό ή στερεοφωνικό ήχο· οι διαθέσιμες μορφές ενός συγκεκριμένου αιτήματος καθορίζονται από τις δυνατότητες της Ailoot.\n\nΗ ταχύτητα του Turbo είναι χαρακτηριστικό της παραλλαγής του μοντέλου και όχι υπόσχεση σταθερής καθυστέρησης για την ολοκληρωμένη φράση. Δεν ορίζεται εδώ αριθμητική καθυστέρηση για το συγκεκριμένο αίτημα. Οι αναφερόμενες προηγμένες ρυθμίσεις του κατασκευαστή απαιτούν υποστήριξη στον επιλεγμένο τρόπο πρόσβασης μέσω Ailoot.\n\nΟι πρόσθετες ρυθμίσεις ήχου περιλαμβάνουν συχνότητες δειγματοληψίας **8, 16, 22,05, 24, 32 και 44,1 kHz**. Για MP3 προβλέπεται ρυθμός μετάδοσης **32, 64, 128 ή 256 kbit/s**. Μπορεί επίσης να αλλάζει η χροιά της φωνής και να εφαρμόζεται ένα εφέ: ηχώ μεγάλου χώρου, ηχώ αίθουσας, τηλεφωνικός ήχος ή ρομποτική φωνή. Τα εφέ μεταβολής φωνής υποστηρίζονται για MP3, WAV και FLAC όταν ο ήχος λαμβάνεται ολόκληρος, ενώ σε έξοδο σε ροή μόνο για MP3. Οι μορφές G.711 μ-law χρησιμοποιούν συχνότητα 8 kHz. Αυτές οι δυνατότητες ανήκουν στις ρυθμίσεις σύνθεσης της MiniMax.\n\nΟ κατασκευαστής προβλέπει συγχρονισμό ομιλίας και κειμένου: χρονικές σημάνσεις ανά πρόταση, ανά λέξη ή ανά λέξη κατά τη σταδιακή έξοδο. Αυτό βοηθά να συνδυάζεται η εκφώνηση με την εμφάνιση του κειμένου. Η πρόσθετη δυνατότητα απαιτεί υποστήριξη της αντίστοιχης μορφής απάντησης.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "de5e8bc73f6a6fa55635830ee8aecbe5b1426cf32fd944f26d3b15cc058b7576",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "el",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">MM</span><h2 id=\"sheet-title\">speech-2.8-turbo</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>speech-2.8-turbo</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-2.8-turbo\">Σύνθεση ομιλίας</button></div><div class=\"idline\"><label for=\"card-model-id\">ID μοντέλου</label><select class=\"sel\" id=\"card-model-id\" style=\"min-width:0;max-width:100%\"><option value=\"Core|speech|/v1/audio/speech|speech-2.8-turbo\" selected>speech-2.8-turbo</option><option value=\"Core|speech|/v1/audio/speech|minimax-speech-turbo\">minimax-speech-turbo</option></select></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 2.8 Turbo προσφέρει γρήγορη σύνθεση φυσικής ομιλίας με ηχητικούς δείκτες και έλεγχο της εκφραστικότητας.</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 2.8 Turbo συνδυάζει τη γρήγορη παραγωγή ήχου με τη φυσική κίνηση της φωνής. Ο κατασκευαστής το προορίζει για ομαλή, συνομιλιακή απόδοση: σύντομες φράσεις, εκφώνηση κειμένου και φωνητική αλληλεπίδραση. Αυτή η κάρτα δέχεται κείμενο και επιστρέφει ήχο ομιλίας.</p><h4>Γέλιο, αναπνοή και επιφωνήματα</h4><p>Όπως και η έκδοση HD της ίδιας γενιάς, το Turbo υποστηρίζει τους ηχητικούς δείκτες του Speech 2.8. Στο κείμενο μπορούν να ενσωματώνονται δείκτες γέλιου, ελαφρού γέλιου, βήχα, καθαρίσματος λαιμού, εισπνοής, εκπνοής, αναστεναγμού και άλλων σύντομων ήχων. Αυτή η ελεγχόμενη ανομοιομορφία κάνει τη φράση να μοιάζει με συνομιλία: αποκτά αναπνοές και παύσεις που συνδέονται με το περιεχόμενο.</p><p>Ο ηχητικός δείκτης αφορά συγκεκριμένο σημείο του κειμένου. Χρησιμοποιούνται οι ενδείξεις σε παρενθέσεις που προβλέπει το μοντέλο, για παράδειγμα <code>(laughs)</code> ή <code>(breath)</code>. Μια αυθαίρετη περιγραφή ενός εφέ δεν ισοδυναμεί με υποστηριζόμενο δείκτη.</p><h4>Φωνή και γλώσσα</h4><p>Η οικογένεια Speech 2.8 υποστηρίζει <strong>40 γλώσσες</strong>, συμπεριλαμβανομένων των ρωσικών, και εργασία με έτοιμες φωνές. Ο κατασκευαστής επισημαίνει την αναγνωρίσιμη υφή της φωνής, τα χαρακτηριστικά της αναπνοής και τη μείωση ψηφιακών παραμορφώσεων. Η δυνατότητα κλωνοποίησης αφορά χωριστή προετοιμασία της φωνής, η οποία μπορεί κατόπιν να χρησιμοποιηθεί στη σύνθεση.</p><p>Η MiniMax προβλέπει επιλογή φωνής και έλεγχο ταχύτητας, έντασης και τονικού ύψους. Η ταχύτητα ορίζεται στο εύρος <strong>0,5–2</strong>, η ένταση πάνω από 0 και έως <strong>10</strong>, και η μεταβολή του τονικού ύψους από <strong>−12 έως 12</strong>. Το συναίσθημα μπορεί να επιλέγεται από το μοντέλο βάσει του νοήματος του κειμένου ή να ορίζεται χειροκίνητα: χαρά, λύπη, θυμός, φόβος, αποστροφή, έκπληξη ή ηρεμία.</p><p>Η προφορά μπορεί να διευκρινίζεται με λεξικό αντικαταστάσεων και φωνητική γραφή· προβλέπονται το Διεθνές Φωνητικό Αλφάβητο, το κινεζικό πινγίν και ιαπωνικές παραλλαγές ανάγνωσης. Οι παύσεις τοποθετούνται μεταξύ εκφωνούμενων τμημάτων στο εύρος <strong>0,01–99,99 δευτερολέπτων</strong>. Η διάρκειά τους ορίζεται με ακρίβεια δύο δεκαδικών ψηφίων· οι δείκτες τοποθετούνται μεταξύ εκφωνούμενων τμημάτων και όχι διαδοχικά. Αυτές οι ρυθμίσεις βοηθούν να προσαρμόζεται η εκφώνηση ονομάτων, συντομογραφιών και αμφίσημων λέξεων στον σκοπό της αφήγησης.</p><h4>Σταδιακή έξοδος και μορφή ήχου</h4><p>Η σύνθεση δέχεται κείμενο με λιγότερους από <strong>10 000 χαρακτήρες</strong>. Για μεγάλα κείμενα πάνω από 3000 χαρακτήρες, ο κατασκευαστής συνιστά έξοδο σε ροή· προβλέπεται επίσης λήψη του ολοκληρωμένου ήχου ως συνόλου. Οι γενικές ρυθμίσεις σύνθεσης περιλαμβάνουν MP3, PCM, FLAC, WAV, Opus και παραλλαγές G.711 μ-law, μονοφωνικό ή στερεοφωνικό ήχο· οι διαθέσιμες μορφές ενός συγκεκριμένου αιτήματος καθορίζονται από τις δυνατότητες της Ailoot.</p><p>Η ταχύτητα του Turbo είναι χαρακτηριστικό της παραλλαγής του μοντέλου και όχι υπόσχεση σταθερής καθυστέρησης για την ολοκληρωμένη φράση. Δεν ορίζεται εδώ αριθμητική καθυστέρηση για το συγκεκριμένο αίτημα. Οι αναφερόμενες προηγμένες ρυθμίσεις του κατασκευαστή απαιτούν υποστήριξη στον επιλεγμένο τρόπο πρόσβασης μέσω Ailoot.</p><p>Οι πρόσθετες ρυθμίσεις ήχου περιλαμβάνουν συχνότητες δειγματοληψίας <strong>8, 16, 22,05, 24, 32 και 44,1 kHz</strong>. Για MP3 προβλέπεται ρυθμός μετάδοσης <strong>32, 64, 128 ή 256 kbit/s</strong>. Μπορεί επίσης να αλλάζει η χροιά της φωνής και να εφαρμόζεται ένα εφέ: ηχώ μεγάλου χώρου, ηχώ αίθουσας, τηλεφωνικός ήχος ή ρομποτική φωνή. Τα εφέ μεταβολής φωνής υποστηρίζονται για MP3, WAV και FLAC όταν ο ήχος λαμβάνεται ολόκληρος, ενώ σε έξοδο σε ροή μόνο για MP3. Οι μορφές G.711 μ-law χρησιμοποιούν συχνότητα 8 kHz. Αυτές οι δυνατότητες ανήκουν στις ρυθμίσεις σύνθεσης της 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-2.8-turbo</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\">Οι δομές και τα ID των μεθόδων είναι ακριβή· η δυνατότητα του προμηθευτή είναι ξεχωριστή από την αποδοχή αιτημάτων.</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>60,00 $ <em>ανά 1 εκατομμύριο χαρακτήρες</em></dd></div></dl></section><p class=\"note-s\">Το Ailoot δεσμεύει ένα εκτιμώμενο ποσό πριν από το αίτημα. Μετά το αποτέλεσμα, εκκαθαρίζει την τελική χρέωση βάσει της μετρημένης χρήσης. Η εκκαθάριση ροής χρησιμοποιεί την τελική καταγραφή χρήσης. <a href=\"/docs/el/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-474-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-474-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-474-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-474-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-2.8-turbo&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>Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.</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-2.8-turbo&amp;route=Core&amp;caller=speech-2.8-turbo&amp;fmt=speech\"><code>speech-2.8-turbo</code></a>, <a href=\"#m=speech-2.8-turbo&amp;route=Core&amp;caller=minimax-speech-turbo&amp;fmt=speech\"><code>minimax-speech-turbo</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\">Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.</p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=speech-2.8-turbo&amp;route=Core&amp;caller=speech-2.8-turbo&amp;fmt=speech\"><code>speech-2.8-turbo</code></a>, <a href=\"#m=speech-2.8-turbo&amp;route=Core&amp;caller=minimax-speech-turbo&amp;fmt=speech\"><code>minimax-speech-turbo</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "speech-2.8-turbo",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "speech-2.8-turbo",
        "route_label": "Core"
      },
      "method_key": "Core|speech|/v1/audio/speech|speech-2.8-turbo",
      "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": "Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.",
                "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-2.8-turbo"
                ],
                "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": [
            "Οι δομές και τα ID των μεθόδων είναι ακριβή· η δυνατότητα του προμηθευτή είναι ξεχωριστή από την αποδοχή αιτημάτων."
          ],
          "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-2.8-turbo\", \"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": 60,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-2.8-turbo",
        "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": 60
          }
        ]
      }
    },
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">MM</span><h2 id=\"sheet-title\">speech-2.8-turbo</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>minimax-speech-turbo</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|minimax-speech-turbo\">Σύνθεση ομιλίας</button></div><div class=\"idline\"><label for=\"card-model-id\">ID μοντέλου</label><select class=\"sel\" id=\"card-model-id\" style=\"min-width:0;max-width:100%\"><option value=\"Core|speech|/v1/audio/speech|speech-2.8-turbo\">speech-2.8-turbo</option><option value=\"Core|speech|/v1/audio/speech|minimax-speech-turbo\" selected>minimax-speech-turbo</option></select></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 2.8 Turbo προσφέρει γρήγορη σύνθεση φυσικής ομιλίας με ηχητικούς δείκτες και έλεγχο της εκφραστικότητας.</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 2.8 Turbo συνδυάζει τη γρήγορη παραγωγή ήχου με τη φυσική κίνηση της φωνής. Ο κατασκευαστής το προορίζει για ομαλή, συνομιλιακή απόδοση: σύντομες φράσεις, εκφώνηση κειμένου και φωνητική αλληλεπίδραση. Αυτή η κάρτα δέχεται κείμενο και επιστρέφει ήχο ομιλίας.</p><h4>Γέλιο, αναπνοή και επιφωνήματα</h4><p>Όπως και η έκδοση HD της ίδιας γενιάς, το Turbo υποστηρίζει τους ηχητικούς δείκτες του Speech 2.8. Στο κείμενο μπορούν να ενσωματώνονται δείκτες γέλιου, ελαφρού γέλιου, βήχα, καθαρίσματος λαιμού, εισπνοής, εκπνοής, αναστεναγμού και άλλων σύντομων ήχων. Αυτή η ελεγχόμενη ανομοιομορφία κάνει τη φράση να μοιάζει με συνομιλία: αποκτά αναπνοές και παύσεις που συνδέονται με το περιεχόμενο.</p><p>Ο ηχητικός δείκτης αφορά συγκεκριμένο σημείο του κειμένου. Χρησιμοποιούνται οι ενδείξεις σε παρενθέσεις που προβλέπει το μοντέλο, για παράδειγμα <code>(laughs)</code> ή <code>(breath)</code>. Μια αυθαίρετη περιγραφή ενός εφέ δεν ισοδυναμεί με υποστηριζόμενο δείκτη.</p><h4>Φωνή και γλώσσα</h4><p>Η οικογένεια Speech 2.8 υποστηρίζει <strong>40 γλώσσες</strong>, συμπεριλαμβανομένων των ρωσικών, και εργασία με έτοιμες φωνές. Ο κατασκευαστής επισημαίνει την αναγνωρίσιμη υφή της φωνής, τα χαρακτηριστικά της αναπνοής και τη μείωση ψηφιακών παραμορφώσεων. Η δυνατότητα κλωνοποίησης αφορά χωριστή προετοιμασία της φωνής, η οποία μπορεί κατόπιν να χρησιμοποιηθεί στη σύνθεση.</p><p>Η MiniMax προβλέπει επιλογή φωνής και έλεγχο ταχύτητας, έντασης και τονικού ύψους. Η ταχύτητα ορίζεται στο εύρος <strong>0,5–2</strong>, η ένταση πάνω από 0 και έως <strong>10</strong>, και η μεταβολή του τονικού ύψους από <strong>−12 έως 12</strong>. Το συναίσθημα μπορεί να επιλέγεται από το μοντέλο βάσει του νοήματος του κειμένου ή να ορίζεται χειροκίνητα: χαρά, λύπη, θυμός, φόβος, αποστροφή, έκπληξη ή ηρεμία.</p><p>Η προφορά μπορεί να διευκρινίζεται με λεξικό αντικαταστάσεων και φωνητική γραφή· προβλέπονται το Διεθνές Φωνητικό Αλφάβητο, το κινεζικό πινγίν και ιαπωνικές παραλλαγές ανάγνωσης. Οι παύσεις τοποθετούνται μεταξύ εκφωνούμενων τμημάτων στο εύρος <strong>0,01–99,99 δευτερολέπτων</strong>. Η διάρκειά τους ορίζεται με ακρίβεια δύο δεκαδικών ψηφίων· οι δείκτες τοποθετούνται μεταξύ εκφωνούμενων τμημάτων και όχι διαδοχικά. Αυτές οι ρυθμίσεις βοηθούν να προσαρμόζεται η εκφώνηση ονομάτων, συντομογραφιών και αμφίσημων λέξεων στον σκοπό της αφήγησης.</p><h4>Σταδιακή έξοδος και μορφή ήχου</h4><p>Η σύνθεση δέχεται κείμενο με λιγότερους από <strong>10 000 χαρακτήρες</strong>. Για μεγάλα κείμενα πάνω από 3000 χαρακτήρες, ο κατασκευαστής συνιστά έξοδο σε ροή· προβλέπεται επίσης λήψη του ολοκληρωμένου ήχου ως συνόλου. Οι γενικές ρυθμίσεις σύνθεσης περιλαμβάνουν MP3, PCM, FLAC, WAV, Opus και παραλλαγές G.711 μ-law, μονοφωνικό ή στερεοφωνικό ήχο· οι διαθέσιμες μορφές ενός συγκεκριμένου αιτήματος καθορίζονται από τις δυνατότητες της Ailoot.</p><p>Η ταχύτητα του Turbo είναι χαρακτηριστικό της παραλλαγής του μοντέλου και όχι υπόσχεση σταθερής καθυστέρησης για την ολοκληρωμένη φράση. Δεν ορίζεται εδώ αριθμητική καθυστέρηση για το συγκεκριμένο αίτημα. Οι αναφερόμενες προηγμένες ρυθμίσεις του κατασκευαστή απαιτούν υποστήριξη στον επιλεγμένο τρόπο πρόσβασης μέσω Ailoot.</p><p>Οι πρόσθετες ρυθμίσεις ήχου περιλαμβάνουν συχνότητες δειγματοληψίας <strong>8, 16, 22,05, 24, 32 και 44,1 kHz</strong>. Για MP3 προβλέπεται ρυθμός μετάδοσης <strong>32, 64, 128 ή 256 kbit/s</strong>. Μπορεί επίσης να αλλάζει η χροιά της φωνής και να εφαρμόζεται ένα εφέ: ηχώ μεγάλου χώρου, ηχώ αίθουσας, τηλεφωνικός ήχος ή ρομποτική φωνή. Τα εφέ μεταβολής φωνής υποστηρίζονται για MP3, WAV και FLAC όταν ο ήχος λαμβάνεται ολόκληρος, ενώ σε έξοδο σε ροή μόνο για MP3. Οι μορφές G.711 μ-law χρησιμοποιούν συχνότητα 8 kHz. Αυτές οι δυνατότητες ανήκουν στις ρυθμίσεις σύνθεσης της 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>minimax-speech-turbo</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\">Οι δομές και τα ID των μεθόδων είναι ακριβή· η δυνατότητα του προμηθευτή είναι ξεχωριστή από την αποδοχή αιτημάτων.</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>60,00 $ <em>ανά 1 εκατομμύριο χαρακτήρες</em></dd></div></dl></section><p class=\"note-s\">Το Ailoot δεσμεύει ένα εκτιμώμενο ποσό πριν από το αίτημα. Μετά το αποτέλεσμα, εκκαθαρίζει την τελική χρέωση βάσει της μετρημένης χρήσης. Η εκκαθάριση ροής χρησιμοποιεί την τελική καταγραφή χρήσης. <a href=\"/docs/el/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-475-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-475-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-475-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-475-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;minimax-speech-turbo&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>Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.</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-2.8-turbo&amp;route=Core&amp;caller=speech-2.8-turbo&amp;fmt=speech\"><code>speech-2.8-turbo</code></a>, <a href=\"#m=speech-2.8-turbo&amp;route=Core&amp;caller=minimax-speech-turbo&amp;fmt=speech\"><code>minimax-speech-turbo</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\">Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.</p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=speech-2.8-turbo&amp;route=Core&amp;caller=speech-2.8-turbo&amp;fmt=speech\"><code>speech-2.8-turbo</code></a>, <a href=\"#m=speech-2.8-turbo&amp;route=Core&amp;caller=minimax-speech-turbo&amp;fmt=speech\"><code>minimax-speech-turbo</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "minimax-speech-turbo",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "minimax-speech-turbo",
        "route_label": "Core"
      },
      "method_key": "Core|speech|/v1/audio/speech|minimax-speech-turbo",
      "ordinal": 1,
      "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": "Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.",
                "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": [
                  "minimax-speech-turbo"
                ],
                "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": [
            "Οι δομές και τα ID των μεθόδων είναι ακριβή· η δυνατότητα του προμηθευτή είναι ξεχωριστή από την αποδοχή αιτημάτων."
          ],
          "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\": \"minimax-speech-turbo\", \"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": 60,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "minimax-speech-turbo",
        "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": 60
          }
        ]
      }
    }
  ],
  "model_id": "speech-2.8-turbo",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "fc7e2400327215612fadc0f043328d9f57d44772862c8560e68bf01d5b27332e",
    "input_html_sha256": "f14f7d8d146c0050bf40489c3d57fe49585256382ba937f323b3d29a93fce3bb",
    "private_audit_sha256": "c47a920b85e754cfbbb7db0eb1ef99ad23895acb91b5fc3cfadfdaef7ba2c930",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/speech-2-8-turbo/",
    "description": "Το Speech 2.8 Turbo προσφέρει γρήγορη σύνθεση φυσικής ομιλίας με ηχητικούς δείκτες και έλεγχο της εκφραστικότητας.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/speech-2-8-turbo/index.md",
    "title": "speech-2.8-turbo — Ailoot",
    "url": "https://ailoot.ai/models/el/speech-2-8-turbo/"
  },
  "rawModel": {
    "about": "### Γρήγορη σύνθεση φράσεων καθημερινού λόγου\n\nΤο Speech 2.8 Turbo συνδυάζει τη γρήγορη παραγωγή ήχου με τη φυσική κίνηση της φωνής. Ο κατασκευαστής το προορίζει για ομαλή, συνομιλιακή απόδοση: σύντομες φράσεις, εκφώνηση κειμένου και φωνητική αλληλεπίδραση. Αυτή η κάρτα δέχεται κείμενο και επιστρέφει ήχο ομιλίας.\n\n### Γέλιο, αναπνοή και επιφωνήματα\n\nΌπως και η έκδοση HD της ίδιας γενιάς, το Turbo υποστηρίζει τους ηχητικούς δείκτες του Speech 2.8. Στο κείμενο μπορούν να ενσωματώνονται δείκτες γέλιου, ελαφρού γέλιου, βήχα, καθαρίσματος λαιμού, εισπνοής, εκπνοής, αναστεναγμού και άλλων σύντομων ήχων. Αυτή η ελεγχόμενη ανομοιομορφία κάνει τη φράση να μοιάζει με συνομιλία: αποκτά αναπνοές και παύσεις που συνδέονται με το περιεχόμενο.\n\nΟ ηχητικός δείκτης αφορά συγκεκριμένο σημείο του κειμένου. Χρησιμοποιούνται οι ενδείξεις σε παρενθέσεις που προβλέπει το μοντέλο, για παράδειγμα `(laughs)` ή `(breath)`. Μια αυθαίρετη περιγραφή ενός εφέ δεν ισοδυναμεί με υποστηριζόμενο δείκτη.\n\n### Φωνή και γλώσσα\n\nΗ οικογένεια Speech 2.8 υποστηρίζει **40 γλώσσες**, συμπεριλαμβανομένων των ρωσικών, και εργασία με έτοιμες φωνές. Ο κατασκευαστής επισημαίνει την αναγνωρίσιμη υφή της φωνής, τα χαρακτηριστικά της αναπνοής και τη μείωση ψηφιακών παραμορφώσεων. Η δυνατότητα κλωνοποίησης αφορά χωριστή προετοιμασία της φωνής, η οποία μπορεί κατόπιν να χρησιμοποιηθεί στη σύνθεση.\n\nΗ MiniMax προβλέπει επιλογή φωνής και έλεγχο ταχύτητας, έντασης και τονικού ύψους. Η ταχύτητα ορίζεται στο εύρος **0,5–2**, η ένταση πάνω από 0 και έως **10**, και η μεταβολή του τονικού ύψους από **−12 έως 12**. Το συναίσθημα μπορεί να επιλέγεται από το μοντέλο βάσει του νοήματος του κειμένου ή να ορίζεται χειροκίνητα: χαρά, λύπη, θυμός, φόβος, αποστροφή, έκπληξη ή ηρεμία.\n\nΗ προφορά μπορεί να διευκρινίζεται με λεξικό αντικαταστάσεων και φωνητική γραφή· προβλέπονται το Διεθνές Φωνητικό Αλφάβητο, το κινεζικό πινγίν και ιαπωνικές παραλλαγές ανάγνωσης. Οι παύσεις τοποθετούνται μεταξύ εκφωνούμενων τμημάτων στο εύρος **0,01–99,99 δευτερολέπτων**. Η διάρκειά τους ορίζεται με ακρίβεια δύο δεκαδικών ψηφίων· οι δείκτες τοποθετούνται μεταξύ εκφωνούμενων τμημάτων και όχι διαδοχικά. Αυτές οι ρυθμίσεις βοηθούν να προσαρμόζεται η εκφώνηση ονομάτων, συντομογραφιών και αμφίσημων λέξεων στον σκοπό της αφήγησης.\n\n### Σταδιακή έξοδος και μορφή ήχου\n\nΗ σύνθεση δέχεται κείμενο με λιγότερους από **10 000 χαρακτήρες**. Για μεγάλα κείμενα πάνω από 3000 χαρακτήρες, ο κατασκευαστής συνιστά έξοδο σε ροή· προβλέπεται επίσης λήψη του ολοκληρωμένου ήχου ως συνόλου. Οι γενικές ρυθμίσεις σύνθεσης περιλαμβάνουν MP3, PCM, FLAC, WAV, Opus και παραλλαγές G.711 μ-law, μονοφωνικό ή στερεοφωνικό ήχο· οι διαθέσιμες μορφές ενός συγκεκριμένου αιτήματος καθορίζονται από τις δυνατότητες της Ailoot.\n\nΗ ταχύτητα του Turbo είναι χαρακτηριστικό της παραλλαγής του μοντέλου και όχι υπόσχεση σταθερής καθυστέρησης για την ολοκληρωμένη φράση. Δεν ορίζεται εδώ αριθμητική καθυστέρηση για το συγκεκριμένο αίτημα. Οι αναφερόμενες προηγμένες ρυθμίσεις του κατασκευαστή απαιτούν υποστήριξη στον επιλεγμένο τρόπο πρόσβασης μέσω Ailoot.\n\nΟι πρόσθετες ρυθμίσεις ήχου περιλαμβάνουν συχνότητες δειγματοληψίας **8, 16, 22,05, 24, 32 και 44,1 kHz**. Για MP3 προβλέπεται ρυθμός μετάδοσης **32, 64, 128 ή 256 kbit/s**. Μπορεί επίσης να αλλάζει η χροιά της φωνής και να εφαρμόζεται ένα εφέ: ηχώ μεγάλου χώρου, ηχώ αίθουσας, τηλεφωνικός ήχος ή ρομποτική φωνή. Τα εφέ μεταβολής φωνής υποστηρίζονται για MP3, WAV και FLAC όταν ο ήχος λαμβάνεται ολόκληρος, ενώ σε έξοδο σε ροή μόνο για MP3. Οι μορφές G.711 μ-law χρησιμοποιούν συχνότητα 8 kHz. Αυτές οι δυνατότητες ανήκουν στις ρυθμίσεις σύνθεσης της MiniMax.\n\nΟ κατασκευαστής προβλέπει συγχρονισμό ομιλίας και κειμένου: χρονικές σημάνσεις ανά πρόταση, ανά λέξη ή ανά λέξη κατά τη σταδιακή έξοδο. Αυτό βοηθά να συνδυάζεται η εκφώνηση με την εμφάνιση του κειμένου. Η πρόσθετη δυνατότητα απαιτεί υποστήριξη της αντίστοιχης μορφής απάντησης.",
    "alias_of": null,
    "aliases": [
      "minimax-speech-turbo"
    ],
    "author": "MiniMax",
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "speech-2.8-turbo",
    "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": "Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.",
                "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-2.8-turbo"
                ],
                "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": [
            "Οι δομές και τα ID των μεθόδων είναι ακριβή· η δυνατότητα του προμηθευτή είναι ξεχωριστή από την αποδοχή αιτημάτων."
          ],
          "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-2.8-turbo\", \"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": 60,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-2.8-turbo",
        "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": 60
          }
        ]
      },
      {
        "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": "Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.",
                "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": [
                  "minimax-speech-turbo"
                ],
                "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": [
            "Οι δομές και τα ID των μεθόδων είναι ακριβή· η δυνατότητα του προμηθευτή είναι ξεχωριστή από την αποδοχή αιτημάτων."
          ],
          "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\": \"minimax-speech-turbo\", \"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": 60,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "minimax-speech-turbo",
        "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": 60
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "speech-2.8-turbo",
        "request_model_id": "speech-2.8-turbo",
        "route_label": "Core"
      },
      {
        "canonical_model_id": "speech-2.8-turbo",
        "request_model_id": "minimax-speech-turbo",
        "route_label": "Core"
      }
    ],
    "name": "speech-2.8-turbo",
    "price": {
      "in": 60,
      "in_label": "per 1 million characters",
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Το Speech 2.8 Turbo προσφέρει γρήγορη σύνθεση φυσικής ομιλίας με ηχητικούς δείκτες και έλεγχο της εκφραστικότητας."
  },
  "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
        },
        {
          "contract_json_pointer": "/methods/1/rawMethod/contract",
          "html_json_pointer": "/methods/1/html",
          "method_ordinal": 1
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod",
        "/methods/1/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Το Speech 2.8 Turbo προσφέρει γρήγορη σύνθεση φυσικής ομιλίας με ηχητικούς δείκτες και έλεγχο της εκφραστικότητας.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "38d6c61432c0db7b8c7ae159d0cf547f9b280e553366135398ec3c68b961449b",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "2ae742bf016c3b17affbef0b911a29b92801978ba837a7392d3489a70a16b728"
}
